From 0981a85961c671c04e797252ad30949a5037b1ce Mon Sep 17 00:00:00 2001 From: Alexandre Petit-Bianco Date: Tue, 28 Mar 2000 08:33:45 +0000 Subject: [PATCH] [multiple changes] 2000-03-28 Alexandre Petit-Bianco * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' to 0 when it reaches -1. 2000-03-27 Alexandre Petit-Bianco * jcf-parse.c (get_constant): Properly cast `num' during the invocation of `add_double call'. * jcf-write.c (push_long_const): Properly cast `lo' before comparing it to short bounds. * parse-scan.y (interface_declaration:): Rule re-arrange so that `interface_body:' is reduced after the current interface is pushed. 2000-02-28 Alexandre Petit-Bianco * parse-scan.y (inner_qualifier, inner_qualifier_length): New static globals. (push_class_context, pop_class_context): New function. (class_body:): Call pop_class_context. (interface_body:): Likewise. (INNER_QUALIFIER): New macro. (report_class_declaration): Changed output format and use INNER_QUALIFIER. Call push_class_context. From-SVN: r32779 --- gcc/java/ChangeLog | 42 +- gcc/java/jcf-parse.c | 2 +- gcc/java/jcf-write.c | 3 +- gcc/java/parse-scan.c | 2128 +++++++++++++++++++++-------------------- gcc/java/parse-scan.y | 55 +- 5 files changed, 1186 insertions(+), 1044 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 86763f31314..c6d72ce7f98 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,18 @@ +2000-03-28 Alexandre Petit-Bianco + + * parse-scan.y (pop_class_context): Reset `inner_qualifier_length' + to 0 when it reaches -1. + +2000-03-27 Alexandre Petit-Bianco + + * jcf-parse.c (get_constant): Properly cast `num' during the + invocation of `add_double call'. + * jcf-write.c (push_long_const): Properly cast `lo' before + comparing it to short bounds. + * parse-scan.y (interface_declaration:): Rule re-arrange so that + `interface_body:' is reduced after the current interface is + pushed. + 2000-03-26 Tom Tromey * jvspec.c (jvgenmain_spec): Add `%{<...}' construct for each @@ -21,15 +36,15 @@ Sat Mar 25 09:12:10 2000 Richard Kenner * parse.y (check_abstract_method_definitions): New local `end_type_reached'. Make sure we also consider `end_type'. - (java_check_abstract_method_definitions): Make sure we also - eventually consider `java.lang.Object'. - (maybe_use_access_method): Don't use access method if not a pure - inner class or if the method's context is right. - (find_applicable_accessible_methods_list): New static + (java_check_abstract_method_definitions): Make sure we eventually + consider `java.lang.Object'. + (maybe_use_access_method): Don't use access method if not in the + context of a pure inner class or if the method's context is right. + (find_applicable_accessible_methods_list): New static flag `object_done'. Don't search abstract classes as interfaces. Fixed - indentation. Fixed the `java.lang.Object' only search. Search class' - interface(s) first, fully search enclosing contexts. - (find_most_specific_methods_list): Pick closest candidates when + indentation. Fixed the `java.lang.Object' only search. Search + class interface(s) first, then fully search enclosing contexts. + (find_most_specific_methods_list): Pick the closest candidate when they're all abstract. Mon Mar 20 08:58:51 2000 Alexandre Petit-Bianco @@ -130,6 +145,17 @@ Tue Mar 14 17:15:41 2000 Alexandre Petit-Bianco * parse.y (register_incomplete_type): Fixed initialization of JDEP_ENCLOSING. +2000-02-28 Alexandre Petit-Bianco + + * parse-scan.y (inner_qualifier, inner_qualifier_length): New + static globals. + (push_class_context, pop_class_context): New function. + (class_body:): Call pop_class_context. + (interface_body:): Likewise. + (INNER_QUALIFIER): New macro. + (report_class_declaration): Changed output format and use + INNER_QUALIFIER. Call push_class_context. + 2000-02-14 Andrew Haley * check-init.c (check_init): Add new cases for unary and binary diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c index 09991eb818e..4c3dff765bc 100644 --- a/gcc/java/jcf-parse.c +++ b/gcc/java/jcf-parse.c @@ -272,7 +272,7 @@ get_constant (jcf, index) HOST_WIDE_INT lo, hi; lshift_double (num, 0, 32, 64, &lo, &hi, 0); num = JPOOL_INT (jcf, index+1); - add_double (lo, hi, num, 0, &lo, &hi); + add_double (lo, hi, (uint32)num, 0, &lo, &hi); value = build_int_2 (lo, hi); TREE_TYPE (value) = long_type_node; force_fit_type (value, 0); diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index f2df8c3e276..61ff0fdbf4d 100644 --- a/gcc/java/jcf-write.c +++ b/gcc/java/jcf-write.c @@ -845,7 +845,8 @@ push_long_const (lo, hi, state) RESERVE(1); OP1(OPCODE_lconst_0 + lo); } - else if ((hi == 0 && lo < 32768) || (hi == -1 && lo >= -32768)) + else if ((hi == 0 && (jword)(lo & 0xFFFFFFFF) < 32768) + || (hi == -1 && (jword)(lo & 0xFFFFFFFF) >= -32768)) { push_int_const (lo, state); RESERVE (1); diff --git a/gcc/java/parse-scan.c b/gcc/java/parse-scan.c index 2416642ae98..4e2f0243aa7 100644 --- a/gcc/java/parse-scan.c +++ b/gcc/java/parse-scan.c @@ -145,6 +145,10 @@ static int absorber; static const char *current_class; static const char *package_name; +/* Keep track of the current inner class qualifier. */ +static char *inner_qualifier; +static int inner_qualifier_length; + /* Keep track of whether things have be listed before. */ static int previous_output; @@ -171,17 +175,19 @@ struct method_declarator { /* Two actions for this grammar */ static void report_class_declaration PARAMS ((const char *)); static void report_main_declaration PARAMS ((struct method_declarator *)); +static void push_class_context PARAMS ((const char *)); +static void pop_class_context PARAMS ((void)); #include "lex.h" #include "parse.h" -#line 100 "./parse-scan.y" +#line 106 "./parse-scan.y" typedef union { char *node; struct method_declarator *declarator; int value; /* For modifiers */ } YYSTYPE; -#line 106 "./parse-scan.y" +#line 112 "./parse-scan.y" #include "lex.c" #ifndef YYDEBUG @@ -198,11 +204,11 @@ typedef union { -#define YYFINAL 601 +#define YYFINAL 605 #define YYFLAG -32768 #define YYNTBASE 110 -#define YYTRANSLATE(x) ((unsigned)(x) <= 363 ? yytranslate[x] : 253) +#define YYTRANSLATE(x) ((unsigned)(x) <= 363 ? yytranslate[x] : 257) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -257,30 +263,30 @@ static const short yyprhs[] = { 0, 210, 214, 218, 223, 228, 232, 237, 241, 243, 247, 250, 254, 255, 258, 260, 264, 266, 269, 271, 274, 278, 280, 284, 289, 294, 300, 304, 309, 312, 316, - 320, 325, 330, 336, 344, 351, 353, 355, 359, 364, - 369, 375, 378, 382, 385, 389, 391, 394, 396, 398, - 400, 402, 404, 407, 410, 414, 418, 423, 425, 429, - 432, 436, 438, 441, 443, 445, 447, 450, 453, 457, - 459, 461, 463, 465, 467, 469, 471, 473, 475, 477, + 320, 325, 330, 336, 344, 351, 353, 355, 356, 361, + 362, 368, 369, 375, 376, 383, 386, 390, 393, 397, + 399, 402, 404, 406, 408, 410, 412, 415, 418, 422, + 426, 431, 433, 437, 440, 444, 446, 449, 451, 453, + 455, 458, 461, 465, 467, 469, 471, 473, 475, 477, 479, 481, 483, 485, 487, 489, 491, 493, 495, 497, - 499, 501, 503, 506, 509, 512, 515, 517, 519, 521, - 523, 525, 527, 529, 535, 543, 551, 557, 560, 564, - 568, 573, 575, 578, 581, 583, 586, 590, 593, 598, - 601, 604, 606, 614, 622, 629, 637, 644, 647, 650, - 651, 653, 655, 656, 658, 660, 664, 667, 671, 674, - 678, 681, 685, 689, 695, 701, 703, 707, 711, 716, - 718, 721, 727, 730, 732, 734, 736, 738, 742, 744, - 746, 748, 750, 754, 758, 762, 766, 772, 777, 784, - 790, 795, 801, 807, 814, 818, 822, 824, 828, 832, - 836, 840, 845, 850, 855, 860, 862, 865, 869, 872, - 876, 880, 884, 888, 893, 899, 906, 912, 919, 924, - 929, 931, 933, 935, 937, 940, 943, 945, 947, 950, - 953, 955, 958, 961, 963, 966, 969, 971, 977, 982, - 987, 993, 995, 999, 1003, 1007, 1009, 1013, 1017, 1019, - 1023, 1027, 1031, 1033, 1037, 1041, 1045, 1049, 1053, 1055, - 1059, 1063, 1065, 1069, 1071, 1075, 1077, 1081, 1083, 1087, - 1089, 1093, 1095, 1101, 1103, 1105, 1109, 1111, 1113, 1115, - 1117, 1119, 1121 + 499, 501, 503, 505, 507, 509, 511, 514, 517, 520, + 523, 525, 527, 529, 531, 533, 535, 537, 543, 551, + 559, 565, 568, 572, 576, 581, 583, 586, 589, 591, + 594, 598, 601, 606, 609, 612, 614, 622, 630, 637, + 645, 652, 655, 658, 659, 661, 663, 664, 666, 668, + 672, 675, 679, 682, 686, 689, 693, 697, 703, 709, + 711, 715, 719, 724, 726, 729, 735, 738, 740, 742, + 744, 746, 750, 752, 754, 756, 758, 762, 766, 770, + 774, 780, 785, 792, 798, 803, 809, 815, 822, 826, + 830, 832, 836, 840, 844, 848, 853, 858, 863, 868, + 870, 873, 877, 880, 884, 888, 892, 896, 901, 907, + 914, 920, 927, 932, 937, 939, 941, 943, 945, 948, + 951, 953, 955, 958, 961, 963, 966, 969, 971, 974, + 977, 979, 985, 990, 995, 1001, 1003, 1007, 1011, 1015, + 1017, 1021, 1025, 1027, 1031, 1035, 1039, 1041, 1045, 1049, + 1053, 1057, 1061, 1063, 1067, 1071, 1073, 1077, 1079, 1083, + 1085, 1089, 1091, 1095, 1097, 1101, 1103, 1109, 1111, 1113, + 1117, 1119, 1121, 1123, 1125, 1127, 1129 }; static const short yyrhs[] = { 123, @@ -300,144 +306,144 @@ static const short yyrhs[] = { 123, 134, 138, 0, 0, 63, 116, 0, 0, 52, 137, 0, 117, 0, 137, 100, 117, 0, 95, 96, 0, 95, 139, 96, 0, 140, 0, 139, 140, 0, 141, - 0, 155, 0, 157, 0, 171, 0, 142, 0, 147, + 0, 155, 0, 157, 0, 175, 0, 142, 0, 147, 0, 132, 0, 162, 0, 112, 143, 99, 0, 131, 112, 143, 99, 0, 144, 0, 143, 100, 144, 0, 145, 0, 145, 92, 146, 0, 122, 0, 145, 97, - 98, 0, 251, 0, 169, 0, 148, 154, 0, 112, + 98, 0, 255, 0, 173, 0, 148, 154, 0, 112, 149, 152, 0, 59, 149, 152, 0, 131, 112, 149, 152, 0, 131, 59, 149, 152, 0, 122, 93, 94, 0, 122, 93, 150, 94, 0, 149, 97, 98, 0, 151, 0, 150, 100, 151, 0, 112, 145, 0, 131, 112, 145, 0, 0, 53, 153, 0, 116, 0, 153, - 100, 116, 0, 171, 0, 171, 99, 0, 99, 0, - 156, 171, 0, 156, 171, 99, 0, 44, 0, 158, + 100, 116, 0, 175, 0, 175, 99, 0, 99, 0, + 156, 175, 0, 156, 175, 99, 0, 44, 0, 158, 152, 159, 0, 131, 158, 152, 159, 0, 158, 152, 159, 99, 0, 131, 158, 152, 159, 99, 0, 120, 93, 94, 0, 120, 93, 150, 94, 0, 95, 96, - 0, 95, 160, 96, 0, 95, 172, 96, 0, 95, - 160, 172, 96, 0, 161, 93, 94, 99, 0, 161, - 93, 220, 94, 99, 0, 119, 101, 65, 93, 220, + 0, 95, 160, 96, 0, 95, 176, 96, 0, 95, + 160, 176, 96, 0, 161, 93, 94, 99, 0, 161, + 93, 224, 94, 99, 0, 119, 101, 65, 93, 224, 94, 99, 0, 119, 101, 65, 93, 94, 99, 0, - 76, 0, 65, 0, 61, 122, 164, 0, 131, 61, - 122, 164, 0, 61, 122, 163, 164, 0, 131, 61, - 122, 163, 164, 0, 63, 117, 0, 163, 100, 117, - 0, 95, 96, 0, 95, 165, 96, 0, 166, 0, - 165, 166, 0, 167, 0, 168, 0, 132, 0, 162, - 0, 142, 0, 148, 99, 0, 95, 96, 0, 95, - 170, 96, 0, 95, 100, 96, 0, 95, 170, 100, - 96, 0, 146, 0, 170, 100, 146, 0, 95, 96, - 0, 95, 172, 96, 0, 173, 0, 172, 173, 0, - 174, 0, 176, 0, 132, 0, 175, 99, 0, 112, - 143, 0, 131, 112, 143, 0, 178, 0, 181, 0, - 185, 0, 186, 0, 195, 0, 199, 0, 178, 0, - 182, 0, 187, 0, 196, 0, 200, 0, 171, 0, - 179, 0, 183, 0, 188, 0, 198, 0, 206, 0, - 207, 0, 208, 0, 210, 0, 209, 0, 212, 0, - 99, 0, 122, 88, 0, 180, 176, 0, 180, 177, - 0, 184, 99, 0, 248, 0, 232, 0, 233, 0, - 229, 0, 230, 0, 226, 0, 218, 0, 48, 93, - 251, 94, 176, 0, 48, 93, 251, 94, 177, 56, - 176, 0, 48, 93, 251, 94, 177, 56, 177, 0, - 68, 93, 251, 94, 189, 0, 95, 96, 0, 95, - 192, 96, 0, 95, 190, 96, 0, 95, 190, 192, - 96, 0, 191, 0, 190, 191, 0, 192, 172, 0, - 193, 0, 192, 193, 0, 62, 252, 88, 0, 47, - 88, 0, 66, 93, 251, 94, 0, 194, 176, 0, - 194, 177, 0, 51, 0, 197, 176, 66, 93, 251, - 94, 99, 0, 202, 99, 251, 99, 204, 94, 176, - 0, 202, 99, 99, 204, 94, 176, 0, 202, 99, - 251, 99, 204, 94, 177, 0, 202, 99, 99, 204, - 94, 177, 0, 71, 93, 0, 201, 203, 0, 0, - 205, 0, 175, 0, 0, 205, 0, 184, 0, 205, - 100, 184, 0, 54, 99, 0, 54, 122, 99, 0, - 73, 99, 0, 73, 122, 99, 0, 58, 99, 0, - 58, 251, 99, 0, 49, 251, 99, 0, 211, 93, - 251, 94, 171, 0, 211, 93, 251, 94, 1, 0, - 44, 0, 70, 171, 213, 0, 70, 171, 215, 0, - 70, 171, 213, 215, 0, 214, 0, 213, 214, 0, - 60, 93, 151, 94, 171, 0, 64, 171, 0, 217, - 0, 221, 0, 111, 0, 76, 0, 93, 251, 94, - 0, 218, 0, 225, 0, 226, 0, 227, 0, 119, - 101, 67, 0, 113, 101, 67, 0, 59, 101, 67, - 0, 119, 101, 76, 0, 72, 116, 93, 220, 94, - 0, 72, 116, 93, 94, 0, 72, 116, 93, 220, - 94, 138, 0, 72, 116, 93, 94, 138, 0, 219, - 122, 93, 94, 0, 219, 122, 93, 94, 138, 0, - 219, 122, 93, 220, 94, 0, 219, 122, 93, 220, - 94, 138, 0, 119, 101, 72, 0, 216, 101, 72, - 0, 251, 0, 220, 100, 251, 0, 220, 100, 1, - 0, 72, 113, 222, 0, 72, 115, 222, 0, 72, - 113, 222, 224, 0, 72, 115, 222, 224, 0, 72, - 115, 224, 169, 0, 72, 113, 224, 169, 0, 223, - 0, 222, 223, 0, 97, 251, 98, 0, 97, 98, - 0, 224, 97, 98, 0, 216, 101, 122, 0, 65, - 101, 122, 0, 119, 93, 94, 0, 119, 93, 220, - 94, 0, 216, 101, 122, 93, 94, 0, 216, 101, - 122, 93, 220, 94, 0, 65, 101, 122, 93, 94, - 0, 65, 101, 122, 93, 220, 94, 0, 119, 97, - 251, 98, 0, 217, 97, 251, 98, 0, 216, 0, - 119, 0, 229, 0, 230, 0, 228, 46, 0, 228, - 45, 0, 232, 0, 233, 0, 3, 231, 0, 4, - 231, 0, 234, 0, 46, 231, 0, 45, 231, 0, - 228, 0, 89, 231, 0, 90, 231, 0, 235, 0, - 93, 113, 224, 94, 231, 0, 93, 113, 94, 231, - 0, 93, 251, 94, 234, 0, 93, 119, 224, 94, - 234, 0, 231, 0, 236, 5, 231, 0, 236, 6, - 231, 0, 236, 7, 231, 0, 236, 0, 237, 3, - 236, 0, 237, 4, 236, 0, 237, 0, 238, 8, - 237, 0, 238, 9, 237, 0, 238, 10, 237, 0, - 238, 0, 239, 20, 238, 0, 239, 18, 238, 0, - 239, 21, 238, 0, 239, 19, 238, 0, 239, 57, - 114, 0, 239, 0, 240, 16, 239, 0, 240, 17, - 239, 0, 240, 0, 241, 11, 240, 0, 241, 0, - 242, 12, 241, 0, 242, 0, 243, 13, 242, 0, - 243, 0, 244, 14, 243, 0, 244, 0, 245, 15, - 244, 0, 245, 0, 245, 87, 251, 88, 246, 0, - 246, 0, 248, 0, 249, 250, 247, 0, 119, 0, - 225, 0, 227, 0, 91, 0, 92, 0, 247, 0, - 251, 0 + 76, 0, 65, 0, 0, 61, 122, 163, 168, 0, + 0, 131, 61, 122, 164, 168, 0, 0, 61, 122, + 167, 165, 168, 0, 0, 131, 61, 122, 167, 166, + 168, 0, 63, 117, 0, 167, 100, 117, 0, 95, + 96, 0, 95, 169, 96, 0, 170, 0, 169, 170, + 0, 171, 0, 172, 0, 132, 0, 162, 0, 142, + 0, 148, 99, 0, 95, 96, 0, 95, 174, 96, + 0, 95, 100, 96, 0, 95, 174, 100, 96, 0, + 146, 0, 174, 100, 146, 0, 95, 96, 0, 95, + 176, 96, 0, 177, 0, 176, 177, 0, 178, 0, + 180, 0, 132, 0, 179, 99, 0, 112, 143, 0, + 131, 112, 143, 0, 182, 0, 185, 0, 189, 0, + 190, 0, 199, 0, 203, 0, 182, 0, 186, 0, + 191, 0, 200, 0, 204, 0, 175, 0, 183, 0, + 187, 0, 192, 0, 202, 0, 210, 0, 211, 0, + 212, 0, 214, 0, 213, 0, 216, 0, 99, 0, + 122, 88, 0, 184, 180, 0, 184, 181, 0, 188, + 99, 0, 252, 0, 236, 0, 237, 0, 233, 0, + 234, 0, 230, 0, 222, 0, 48, 93, 255, 94, + 180, 0, 48, 93, 255, 94, 181, 56, 180, 0, + 48, 93, 255, 94, 181, 56, 181, 0, 68, 93, + 255, 94, 193, 0, 95, 96, 0, 95, 196, 96, + 0, 95, 194, 96, 0, 95, 194, 196, 96, 0, + 195, 0, 194, 195, 0, 196, 176, 0, 197, 0, + 196, 197, 0, 62, 256, 88, 0, 47, 88, 0, + 66, 93, 255, 94, 0, 198, 180, 0, 198, 181, + 0, 51, 0, 201, 180, 66, 93, 255, 94, 99, + 0, 206, 99, 255, 99, 208, 94, 180, 0, 206, + 99, 99, 208, 94, 180, 0, 206, 99, 255, 99, + 208, 94, 181, 0, 206, 99, 99, 208, 94, 181, + 0, 71, 93, 0, 205, 207, 0, 0, 209, 0, + 179, 0, 0, 209, 0, 188, 0, 209, 100, 188, + 0, 54, 99, 0, 54, 122, 99, 0, 73, 99, + 0, 73, 122, 99, 0, 58, 99, 0, 58, 255, + 99, 0, 49, 255, 99, 0, 215, 93, 255, 94, + 175, 0, 215, 93, 255, 94, 1, 0, 44, 0, + 70, 175, 217, 0, 70, 175, 219, 0, 70, 175, + 217, 219, 0, 218, 0, 217, 218, 0, 60, 93, + 151, 94, 175, 0, 64, 175, 0, 221, 0, 225, + 0, 111, 0, 76, 0, 93, 255, 94, 0, 222, + 0, 229, 0, 230, 0, 231, 0, 119, 101, 67, + 0, 113, 101, 67, 0, 59, 101, 67, 0, 119, + 101, 76, 0, 72, 116, 93, 224, 94, 0, 72, + 116, 93, 94, 0, 72, 116, 93, 224, 94, 138, + 0, 72, 116, 93, 94, 138, 0, 223, 122, 93, + 94, 0, 223, 122, 93, 94, 138, 0, 223, 122, + 93, 224, 94, 0, 223, 122, 93, 224, 94, 138, + 0, 119, 101, 72, 0, 220, 101, 72, 0, 255, + 0, 224, 100, 255, 0, 224, 100, 1, 0, 72, + 113, 226, 0, 72, 115, 226, 0, 72, 113, 226, + 228, 0, 72, 115, 226, 228, 0, 72, 115, 228, + 173, 0, 72, 113, 228, 173, 0, 227, 0, 226, + 227, 0, 97, 255, 98, 0, 97, 98, 0, 228, + 97, 98, 0, 220, 101, 122, 0, 65, 101, 122, + 0, 119, 93, 94, 0, 119, 93, 224, 94, 0, + 220, 101, 122, 93, 94, 0, 220, 101, 122, 93, + 224, 94, 0, 65, 101, 122, 93, 94, 0, 65, + 101, 122, 93, 224, 94, 0, 119, 97, 255, 98, + 0, 221, 97, 255, 98, 0, 220, 0, 119, 0, + 233, 0, 234, 0, 232, 46, 0, 232, 45, 0, + 236, 0, 237, 0, 3, 235, 0, 4, 235, 0, + 238, 0, 46, 235, 0, 45, 235, 0, 232, 0, + 89, 235, 0, 90, 235, 0, 239, 0, 93, 113, + 228, 94, 235, 0, 93, 113, 94, 235, 0, 93, + 255, 94, 238, 0, 93, 119, 228, 94, 238, 0, + 235, 0, 240, 5, 235, 0, 240, 6, 235, 0, + 240, 7, 235, 0, 240, 0, 241, 3, 240, 0, + 241, 4, 240, 0, 241, 0, 242, 8, 241, 0, + 242, 9, 241, 0, 242, 10, 241, 0, 242, 0, + 243, 20, 242, 0, 243, 18, 242, 0, 243, 21, + 242, 0, 243, 19, 242, 0, 243, 57, 114, 0, + 243, 0, 244, 16, 243, 0, 244, 17, 243, 0, + 244, 0, 245, 11, 244, 0, 245, 0, 246, 12, + 245, 0, 246, 0, 247, 13, 246, 0, 247, 0, + 248, 14, 247, 0, 248, 0, 249, 15, 248, 0, + 249, 0, 249, 87, 255, 88, 250, 0, 250, 0, + 252, 0, 253, 254, 251, 0, 119, 0, 229, 0, + 231, 0, 91, 0, 92, 0, 251, 0, 255, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 175, 180, 182, 183, 184, 185, 186, 190, 192, 195, - 201, 206, 213, 215, 218, 222, 226, 230, 232, 236, - 243, 245, 248, 252, 259, 264, 265, 266, 267, 268, - 269, 270, 271, 274, 276, 279, 281, 284, 289, 291, - 294, 298, 302, 304, 305, 311, 320, 331, 338, 338, - 341, 343, 344, 347, 348, 351, 354, 358, 360, 363, - 365, 368, 370, 371, 372, 375, 377, 378, 379, 383, - 386, 390, 393, 396, 398, 401, 404, 408, 410, 414, - 418, 421, 422, 424, 431, 438, 444, 447, 449, 455, - 471, 487, 488, 491, 494, 498, 500, 501, 505, 507, - 510, 520, 522, 525, 527, 533, 536, 540, 542, 543, - 544, 548, 550, 553, 555, 559, 561, 566, 569, 571, - 573, 577, 579, 582, 584, 587, 589, 592, 594, 595, - 596, 599, 603, 608, 610, 611, 612, 615, 617, 621, - 623, 626, 628, 631, 633, 634, 637, 641, 644, 648, - 650, 651, 652, 653, 654, 657, 659, 660, 661, 662, - 665, 667, 668, 669, 670, 671, 672, 673, 674, 675, - 676, 679, 683, 688, 692, 698, 702, 704, 705, 706, - 707, 708, 709, 712, 716, 720, 724, 728, 730, 731, - 732, 735, 737, 740, 745, 747, 750, 752, 755, 759, - 763, 767, 771, 775, 777, 780, 782, 785, 789, 792, - 793, 794, 797, 798, 801, 803, 806, 808, 811, 813, - 816, 818, 821, 825, 827, 830, 835, 837, 838, 841, - 843, 846, 850, 855, 857, 860, 862, 863, 864, 865, - 866, 867, 871, 873, 875, 879, 883, 885, 889, 890, - 894, 895, 896, 897, 900, 903, 906, 908, 909, 912, - 914, 915, 916, 919, 920, 923, 925, 928, 932, 934, - 937, 939, 942, 945, 947, 948, 949, 950, 953, 956, - 959, 961, 963, 964, 967, 971, 975, 977, 978, 979, - 980, 983, 987, 991, 993, 994, 995, 998, 1000, 1001, - 1002, 1005, 1007, 1008, 1009, 1012, 1014, 1015, 1018, 1020, - 1021, 1022, 1025, 1027, 1028, 1029, 1030, 1031, 1034, 1036, - 1037, 1040, 1042, 1045, 1047, 1050, 1052, 1055, 1057, 1060, - 1062, 1065, 1067, 1070, 1072, 1075, 1079, 1082, 1083, 1086, - 1088, 1091, 1095 + 181, 186, 188, 189, 190, 191, 192, 196, 198, 201, + 207, 212, 219, 221, 224, 228, 232, 236, 238, 242, + 249, 251, 254, 258, 265, 270, 271, 272, 273, 274, + 275, 276, 277, 280, 282, 285, 287, 290, 295, 297, + 300, 304, 308, 310, 311, 317, 326, 337, 344, 344, + 347, 349, 350, 353, 354, 357, 360, 364, 367, 371, + 373, 376, 378, 379, 380, 383, 385, 386, 387, 391, + 394, 398, 401, 404, 406, 409, 412, 416, 418, 422, + 426, 429, 430, 432, 439, 446, 452, 455, 457, 463, + 479, 495, 496, 499, 502, 506, 508, 509, 513, 515, + 518, 528, 530, 533, 535, 541, 544, 548, 550, 551, + 552, 556, 558, 561, 563, 567, 569, 574, 578, 578, + 581, 581, 584, 584, 587, 589, 591, 594, 597, 601, + 603, 606, 608, 609, 610, 613, 617, 622, 624, 625, + 626, 629, 631, 635, 637, 640, 642, 645, 647, 648, + 651, 655, 658, 662, 664, 665, 666, 667, 668, 671, + 673, 674, 675, 676, 679, 681, 682, 683, 684, 685, + 686, 687, 688, 689, 690, 693, 697, 702, 706, 712, + 716, 718, 719, 720, 721, 722, 723, 726, 730, 734, + 738, 742, 744, 745, 746, 749, 751, 754, 759, 761, + 764, 766, 769, 773, 777, 781, 785, 789, 791, 794, + 796, 799, 803, 806, 807, 808, 811, 812, 815, 817, + 820, 822, 825, 827, 830, 832, 835, 839, 841, 844, + 849, 851, 852, 855, 857, 860, 864, 869, 871, 874, + 876, 877, 878, 879, 880, 881, 885, 887, 889, 893, + 897, 899, 903, 904, 908, 909, 910, 911, 914, 917, + 920, 922, 923, 926, 928, 929, 930, 933, 934, 937, + 939, 942, 946, 948, 951, 953, 956, 959, 961, 962, + 963, 964, 967, 970, 973, 975, 977, 978, 981, 985, + 989, 991, 992, 993, 994, 997, 1001, 1005, 1007, 1008, + 1009, 1012, 1014, 1015, 1016, 1019, 1021, 1022, 1023, 1026, + 1028, 1029, 1032, 1034, 1035, 1036, 1039, 1041, 1042, 1043, + 1044, 1045, 1048, 1050, 1051, 1054, 1056, 1059, 1061, 1064, + 1066, 1069, 1071, 1074, 1076, 1079, 1081, 1084, 1086, 1089, + 1093, 1096, 1097, 1100, 1102, 1105, 1109 }; #endif @@ -471,11 +477,12 @@ static const char * const yytname[] = { "$","error","$undefined.","PLUS_TK", "method_declarator","formal_parameter_list","formal_parameter","throws","class_type_list", "method_body","static_initializer","static","constructor_declaration","constructor_declarator", "constructor_body","explicit_constructor_invocation","this_or_super","interface_declaration", -"extends_interfaces","interface_body","interface_member_declarations","interface_member_declaration", -"constant_declaration","abstract_method_declaration","array_initializer","variable_initializers", -"block","block_statements","block_statement","local_variable_declaration_statement", -"local_variable_declaration","statement","statement_nsi","statement_without_trailing_substatement", -"empty_statement","label_decl","labeled_statement","labeled_statement_nsi","expression_statement", +"@3","@4","@5","@6","extends_interfaces","interface_body","interface_member_declarations", +"interface_member_declaration","constant_declaration","abstract_method_declaration", +"array_initializer","variable_initializers","block","block_statements","block_statement", +"local_variable_declaration_statement","local_variable_declaration","statement", +"statement_nsi","statement_without_trailing_substatement","empty_statement", +"label_decl","labeled_statement","labeled_statement_nsi","expression_statement", "statement_expression","if_then_statement","if_then_else_statement","if_then_else_statement_nsi", "switch_statement","switch_block","switch_block_statement_groups","switch_block_statement_group", "switch_labels","switch_label","while_expression","while_statement","while_statement_nsi", @@ -507,30 +514,30 @@ static const short yyr1[] = { 0, 148, 148, 148, 148, 149, 149, 149, 150, 150, 151, 151, 152, 152, 153, 153, 154, 154, 154, 155, 155, 156, 157, 157, 157, 157, 158, 158, 159, 159, 159, - 159, 160, 160, 160, 160, 161, 161, 162, 162, 162, - 162, 163, 163, 164, 164, 165, 165, 166, 166, 166, - 166, 167, 168, 169, 169, 169, 169, 170, 170, 171, - 171, 172, 172, 173, 173, 173, 174, 175, 175, 176, - 176, 176, 176, 176, 176, 177, 177, 177, 177, 177, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 179, 180, 181, 182, 183, 184, 184, 184, 184, - 184, 184, 184, 185, 186, 187, 188, 189, 189, 189, - 189, 190, 190, 191, 192, 192, 193, 193, 194, 195, - 196, 197, 198, 199, 199, 200, 200, 201, 202, 203, - 203, 203, 204, 204, 205, 205, 206, 206, 207, 207, - 208, 208, 209, 210, 210, 211, 212, 212, 212, 213, - 213, 214, 215, 216, 216, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 218, 218, 218, 218, - 218, 218, 218, 218, 219, 219, 220, 220, 220, 221, - 221, 221, 221, 221, 221, 222, 222, 223, 224, 224, - 225, 225, 226, 226, 226, 226, 226, 226, 227, 227, - 228, 228, 228, 228, 229, 230, 231, 231, 231, 231, - 231, 232, 233, 234, 234, 234, 234, 235, 235, 235, - 235, 236, 236, 236, 236, 237, 237, 237, 238, 238, - 238, 238, 239, 239, 239, 239, 239, 239, 240, 240, - 240, 241, 241, 242, 242, 243, 243, 244, 244, 245, - 245, 246, 246, 247, 247, 248, 249, 249, 249, 250, - 250, 251, 252 + 159, 160, 160, 160, 160, 161, 161, 163, 162, 164, + 162, 165, 162, 166, 162, 167, 167, 168, 168, 169, + 169, 170, 170, 170, 170, 171, 172, 173, 173, 173, + 173, 174, 174, 175, 175, 176, 176, 177, 177, 177, + 178, 179, 179, 180, 180, 180, 180, 180, 180, 181, + 181, 181, 181, 181, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 183, 184, 185, 186, 187, + 188, 188, 188, 188, 188, 188, 188, 189, 190, 191, + 192, 193, 193, 193, 193, 194, 194, 195, 196, 196, + 197, 197, 198, 199, 200, 201, 202, 203, 203, 204, + 204, 205, 206, 207, 207, 207, 208, 208, 209, 209, + 210, 210, 211, 211, 212, 212, 213, 214, 214, 215, + 216, 216, 216, 217, 217, 218, 219, 220, 220, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 222, 222, 222, 222, 222, 222, 222, 222, 223, 223, + 224, 224, 224, 225, 225, 225, 225, 225, 225, 226, + 226, 227, 228, 228, 229, 229, 230, 230, 230, 230, + 230, 230, 231, 231, 232, 232, 232, 232, 233, 234, + 235, 235, 235, 235, 235, 236, 237, 238, 238, 238, + 238, 239, 239, 239, 239, 240, 240, 240, 240, 241, + 241, 241, 242, 242, 242, 242, 243, 243, 243, 243, + 243, 243, 244, 244, 244, 245, 245, 246, 246, 247, + 247, 248, 248, 249, 249, 250, 250, 251, 251, 252, + 253, 253, 253, 254, 254, 255, 256 }; static const short yyr2[] = { 0, @@ -545,834 +552,858 @@ static const short yyr2[] = { 0, 3, 3, 4, 4, 3, 4, 3, 1, 3, 2, 3, 0, 2, 1, 3, 1, 2, 1, 2, 3, 1, 3, 4, 4, 5, 3, 4, 2, 3, 3, - 4, 4, 5, 7, 6, 1, 1, 3, 4, 4, - 5, 2, 3, 2, 3, 1, 2, 1, 1, 1, - 1, 1, 2, 2, 3, 3, 4, 1, 3, 2, - 3, 1, 2, 1, 1, 1, 2, 2, 3, 1, + 4, 4, 5, 7, 6, 1, 1, 0, 4, 0, + 5, 0, 5, 0, 6, 2, 3, 2, 3, 1, + 2, 1, 1, 1, 1, 1, 2, 2, 3, 3, + 4, 1, 3, 2, 3, 1, 2, 1, 1, 1, + 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 5, 7, 7, 5, 2, 3, 3, - 4, 1, 2, 2, 1, 2, 3, 2, 4, 2, - 2, 1, 7, 7, 6, 7, 6, 2, 2, 0, - 1, 1, 0, 1, 1, 3, 2, 3, 2, 3, - 2, 3, 3, 5, 5, 1, 3, 3, 4, 1, - 2, 5, 2, 1, 1, 1, 1, 3, 1, 1, - 1, 1, 3, 3, 3, 3, 5, 4, 6, 5, - 4, 5, 5, 6, 3, 3, 1, 3, 3, 3, - 3, 4, 4, 4, 4, 1, 2, 3, 2, 3, - 3, 3, 3, 4, 5, 6, 5, 6, 4, 4, - 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, - 1, 2, 2, 1, 2, 2, 1, 5, 4, 4, - 5, 1, 3, 3, 3, 1, 3, 3, 1, 3, - 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, - 3, 1, 5, 1, 1, 3, 1, 1, 1, 1, - 1, 1, 1 + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 5, 7, 7, + 5, 2, 3, 3, 4, 1, 2, 2, 1, 2, + 3, 2, 4, 2, 2, 1, 7, 7, 6, 7, + 6, 2, 2, 0, 1, 1, 0, 1, 1, 3, + 2, 3, 2, 3, 2, 3, 3, 5, 5, 1, + 3, 3, 4, 1, 2, 5, 2, 1, 1, 1, + 1, 3, 1, 1, 1, 1, 3, 3, 3, 3, + 5, 4, 6, 5, 4, 5, 5, 6, 3, 3, + 1, 3, 3, 3, 3, 4, 4, 4, 4, 1, + 2, 3, 2, 3, 3, 3, 3, 4, 5, 6, + 5, 6, 4, 4, 1, 1, 1, 1, 2, 2, + 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, + 1, 5, 4, 4, 5, 1, 3, 3, 3, 1, + 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, + 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 5, 1, 1, 3, + 1, 1, 1, 1, 1, 1, 1 }; static const short yydefact[] = { 26, 46, 0, 0, 0, 0, 45, 1, 28, 29, 27, 34, 39, 40, 36, 0, 43, 44, 25, 0, 21, - 22, 23, 0, 52, 0, 32, 35, 37, 30, 31, - 47, 0, 0, 41, 0, 0, 0, 0, 118, 0, - 54, 38, 0, 33, 0, 52, 0, 24, 17, 122, - 15, 12, 0, 10, 11, 124, 0, 8, 9, 13, - 14, 15, 0, 130, 132, 0, 131, 0, 126, 128, - 129, 0, 120, 16, 53, 0, 50, 0, 119, 54, - 42, 0, 92, 76, 0, 72, 74, 92, 0, 0, - 0, 0, 0, 133, 125, 127, 123, 56, 55, 0, - 121, 48, 0, 0, 0, 82, 70, 0, 0, 0, - 81, 18, 20, 19, 92, 0, 92, 0, 0, 51, - 0, 85, 0, 0, 0, 88, 94, 93, 87, 76, - 73, 0, 0, 0, 0, 0, 0, 0, 237, 0, - 0, 0, 0, 6, 5, 2, 3, 4, 7, 236, - 0, 282, 75, 79, 281, 234, 239, 0, 235, 240, - 241, 242, 294, 283, 284, 302, 287, 288, 291, 297, - 306, 309, 313, 319, 322, 324, 326, 328, 330, 332, - 334, 342, 335, 0, 78, 77, 84, 71, 83, 57, - 46, 0, 58, 21, 0, 68, 0, 60, 62, 66, - 67, 0, 63, 0, 64, 92, 69, 65, 49, 90, - 0, 86, 0, 0, 282, 240, 242, 289, 290, 293, - 292, 0, 0, 0, 16, 0, 295, 296, 0, 282, - 0, 134, 0, 138, 0, 0, 0, 0, 0, 0, - 0, 0, 286, 285, 0, 0, 0, 0, 0, 0, + 22, 23, 118, 52, 0, 32, 35, 37, 30, 31, + 47, 0, 0, 41, 0, 0, 0, 122, 0, 54, + 38, 0, 33, 120, 52, 0, 24, 17, 126, 15, + 0, 119, 0, 0, 16, 53, 0, 50, 0, 124, + 54, 42, 12, 0, 10, 11, 128, 0, 8, 9, + 13, 14, 15, 0, 134, 136, 0, 135, 0, 130, + 132, 133, 127, 123, 56, 55, 0, 121, 0, 48, + 0, 92, 76, 0, 72, 74, 92, 0, 0, 0, + 0, 0, 137, 129, 131, 0, 0, 51, 125, 0, + 0, 0, 0, 82, 70, 0, 0, 0, 81, 18, + 20, 19, 92, 0, 92, 57, 46, 0, 58, 21, + 0, 68, 0, 60, 62, 66, 67, 0, 63, 0, + 64, 92, 69, 65, 49, 85, 0, 0, 0, 88, + 94, 93, 87, 76, 73, 0, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 6, 5, 2, + 3, 4, 7, 240, 0, 286, 75, 79, 285, 238, + 243, 0, 239, 244, 245, 246, 298, 287, 288, 306, + 291, 292, 295, 301, 310, 313, 317, 323, 326, 328, + 330, 332, 334, 336, 338, 346, 339, 0, 78, 77, + 84, 71, 83, 46, 0, 0, 206, 0, 0, 0, + 0, 0, 0, 0, 0, 144, 176, 0, 8, 286, + 23, 0, 150, 165, 0, 146, 148, 0, 149, 154, + 166, 0, 155, 167, 0, 156, 157, 168, 0, 158, + 0, 169, 159, 214, 0, 170, 171, 172, 174, 173, + 0, 175, 243, 245, 0, 184, 185, 182, 183, 181, + 0, 92, 59, 61, 98, 80, 96, 99, 0, 90, + 0, 86, 0, 0, 286, 244, 246, 293, 294, 297, + 296, 0, 0, 0, 16, 0, 299, 300, 0, 286, + 0, 138, 0, 142, 0, 0, 0, 0, 0, 0, + 0, 0, 290, 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 340, 341, 0, 46, 0, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, - 140, 172, 0, 8, 282, 23, 0, 146, 161, 0, - 142, 144, 0, 145, 150, 162, 0, 151, 163, 0, - 152, 153, 164, 0, 154, 0, 165, 155, 210, 0, - 166, 167, 168, 170, 169, 0, 171, 239, 241, 0, - 180, 181, 178, 179, 177, 0, 92, 59, 61, 98, - 80, 96, 99, 0, 91, 89, 95, 245, 272, 0, - 260, 266, 0, 261, 0, 0, 0, 0, 0, 0, - 0, 238, 136, 135, 0, 244, 273, 0, 257, 0, - 243, 255, 246, 256, 271, 0, 0, 303, 304, 305, - 307, 308, 310, 311, 312, 315, 317, 314, 316, 0, - 318, 320, 321, 323, 325, 327, 329, 331, 0, 336, - 0, 0, 217, 0, 221, 0, 0, 0, 0, 208, - 219, 0, 0, 148, 0, 173, 0, 141, 143, 147, - 226, 174, 176, 200, 0, 0, 212, 215, 209, 211, - 0, 0, 106, 0, 0, 97, 100, 0, 102, 0, - 269, 0, 267, 262, 0, 265, 263, 264, 248, 0, - 299, 0, 0, 300, 137, 139, 274, 0, 279, 0, - 280, 251, 0, 0, 0, 223, 218, 222, 0, 0, - 0, 0, 227, 230, 228, 220, 238, 149, 0, 0, - 213, 0, 0, 107, 103, 117, 237, 108, 282, 0, - 0, 0, 104, 277, 0, 268, 270, 250, 247, 298, - 301, 259, 258, 275, 0, 252, 253, 333, 0, 199, - 0, 0, 233, 231, 229, 0, 216, 0, 214, 213, - 0, 105, 0, 109, 0, 0, 110, 278, 249, 276, - 254, 0, 184, 0, 150, 0, 157, 158, 0, 159, - 160, 0, 0, 187, 0, 0, 0, 0, 225, 224, - 0, 111, 0, 0, 0, 0, 175, 201, 0, 0, - 0, 188, 0, 192, 0, 195, 0, 0, 205, 0, - 0, 112, 0, 0, 185, 213, 0, 198, 343, 0, - 190, 193, 0, 189, 194, 196, 232, 203, 204, 0, - 0, 113, 0, 0, 213, 197, 191, 115, 0, 0, - 0, 0, 114, 0, 207, 0, 186, 206, 0, 0, - 0 + 0, 0, 0, 0, 0, 344, 345, 0, 0, 0, + 221, 0, 225, 0, 0, 0, 0, 212, 223, 0, + 0, 152, 0, 177, 0, 145, 147, 151, 230, 178, + 180, 204, 0, 0, 216, 219, 213, 215, 0, 0, + 106, 0, 0, 97, 100, 0, 102, 91, 89, 95, + 249, 276, 0, 264, 270, 0, 265, 0, 0, 0, + 0, 0, 0, 0, 242, 140, 139, 0, 248, 277, + 0, 261, 0, 247, 259, 250, 260, 275, 0, 0, + 307, 308, 309, 311, 312, 314, 315, 316, 319, 321, + 318, 320, 0, 322, 324, 325, 327, 329, 331, 333, + 335, 0, 340, 0, 227, 222, 226, 0, 0, 0, + 0, 231, 234, 232, 224, 242, 153, 0, 0, 217, + 0, 0, 107, 103, 117, 241, 108, 286, 0, 0, + 0, 104, 0, 273, 0, 271, 266, 0, 269, 267, + 268, 252, 0, 303, 0, 0, 304, 141, 143, 278, + 0, 283, 0, 284, 255, 0, 0, 0, 203, 0, + 0, 237, 235, 233, 0, 220, 0, 218, 217, 0, + 105, 0, 109, 0, 0, 110, 281, 0, 272, 274, + 254, 251, 302, 305, 263, 262, 279, 0, 256, 257, + 337, 0, 188, 0, 154, 0, 161, 162, 0, 163, + 164, 0, 0, 191, 0, 0, 0, 0, 229, 228, + 0, 111, 0, 0, 282, 253, 280, 258, 0, 0, + 179, 205, 0, 0, 0, 192, 0, 196, 0, 199, + 0, 0, 209, 0, 0, 112, 0, 0, 189, 217, + 0, 202, 347, 0, 194, 197, 0, 193, 198, 200, + 236, 207, 208, 0, 0, 113, 0, 0, 217, 201, + 195, 115, 0, 0, 0, 0, 114, 0, 211, 0, + 190, 210, 0, 0, 0 }; -static const short yydefgoto[] = { 599, - 150, 283, 151, 59, 60, 75, 50, 61, 152, 20, +static const short yydefgoto[] = { 603, + 174, 228, 175, 70, 71, 56, 49, 72, 176, 20, 21, 22, 7, 8, 9, 10, 11, 12, 13, 14, - 287, 288, 121, 100, 41, 77, 99, 120, 197, 198, - 199, 65, 85, 86, 87, 153, 201, 66, 83, 125, - 126, 106, 128, 331, 203, 204, 205, 206, 429, 480, - 481, 17, 38, 39, 68, 69, 70, 71, 154, 235, - 289, 575, 291, 292, 293, 294, 524, 295, 296, 297, - 298, 527, 299, 300, 301, 302, 528, 303, 534, 553, - 554, 555, 556, 304, 305, 530, 306, 307, 308, 531, - 309, 310, 419, 508, 509, 311, 312, 313, 314, 315, - 316, 317, 463, 464, 465, 155, 156, 157, 158, 358, - 159, 341, 342, 343, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 268, - 359, 570 + 232, 233, 110, 87, 40, 58, 86, 108, 133, 134, + 135, 76, 94, 95, 96, 177, 137, 77, 92, 149, + 150, 114, 152, 276, 139, 140, 141, 142, 377, 459, + 460, 17, 37, 59, 54, 89, 38, 52, 79, 80, + 81, 82, 178, 305, 234, 579, 236, 237, 238, 239, + 524, 240, 241, 242, 243, 527, 244, 245, 246, 247, + 528, 248, 534, 557, 558, 559, 560, 249, 250, 530, + 251, 252, 253, 531, 254, 255, 367, 497, 498, 256, + 257, 258, 259, 260, 261, 262, 442, 443, 444, 179, + 180, 181, 182, 401, 183, 384, 385, 386, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 338, 402, 574 }; -static const short yypact[] = { 11, --32768, -52, -52, -52, -52,-32768,-32768, 18, 154, 18, --32768,-32768,-32768,-32768, 185,-32768,-32768,-32768, 187,-32768, --32768,-32768, -24, -5, 332, 154,-32768,-32768, 18, 154, --32768, -52, -52,-32768, 5, -52, 745, 162,-32768, -52, - 76,-32768, -52, 154, -24, -5, 57,-32768,-32768,-32768, - 41,-32768, -52,-32768,-32768,-32768, -52, 71,-32768,-32768, - 170, 113, 518,-32768,-32768, 126,-32768, 758,-32768,-32768, --32768, -52,-32768,-32768,-32768, -52,-32768, 162,-32768, 76, --32768, 249, -15, 249, 321,-32768, 205, -15, 149, 255, - 265, -52, -52,-32768,-32768,-32768,-32768,-32768, 198, 294, --32768,-32768, 58, -52, 298,-32768,-32768, -52, 1568, 309, --32768,-32768,-32768,-32768, -15, 359, -15, -52, 596,-32768, - 294,-32768, -52, 199, -13,-32768,-32768, 310,-32768,-32768, --32768, 2315, 2315, 2315, 2315, 329, 352, 88,-32768, 2315, - 2315, 2315, 1438,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 354, 393,-32768,-32768, 360, 369,-32768, -52,-32768, 347, --32768, 378, 437,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 445, 495, 483, 380, 492, 461, 462, 467, 502, 1, --32768,-32768,-32768, 412,-32768,-32768,-32768,-32768,-32768,-32768, - 423, 2513,-32768, 429, 518,-32768, 683,-32768,-32768,-32768, --32768, 128,-32768, 432,-32768, 471,-32768,-32768,-32768, 435, - -52,-32768, 337, -52, 52,-32768,-32768,-32768,-32768,-32768, --32768, 468, -52, 440, 440, 449,-32768,-32768, 174, 414, - 454,-32768, 460,-32768, 235, 500, 1619, 2315, 261, -21, - 2315, 476,-32768,-32768, 2315, 2315, 2315, 2315, 2315, 2315, - 2315, 2315, 2315, 2315, 2315, 2315, 88, 2315, 2315, 2315, - 2315, 2315, 2315, 2315, 2315,-32768,-32768, 2315, 480, 482, - 2315,-32768, 60, 1684, 490, 491, 432, 494, 89, 2315, --32768,-32768, -52, 137, 559, 488, 496,-32768,-32768, 2579, --32768,-32768, 493,-32768,-32768,-32768, 2975,-32768,-32768, 498, --32768,-32768,-32768, 2975,-32768, 2975,-32768,-32768, 1029, 499, --32768,-32768,-32768,-32768,-32768, 497,-32768, 96, 196, 437, - 485, 505,-32768,-32768,-32768, 323, 471,-32768,-32768,-32768, --32768, 506, 507, 504, 435,-32768,-32768,-32768, 508, 1735, - 440,-32768, 339, 440, 339, 1800, 2315, 509, 180, 1735, - 246, 1364,-32768,-32768, 1503,-32768,-32768, 3,-32768, 512, --32768,-32768,-32768,-32768, 520, 513, 1851,-32768,-32768,-32768, - 445, 445, 495, 495, 495, 483, 483, 483, 483, 71, --32768, 380, 380, 492, 461, 462, 467, 502, 501,-32768, - 2315, 522,-32768, 523,-32768, 526, 2315, 2315, 322,-32768, --32768, 528, 534, 535, 1916,-32768, -52,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 572, 199,-32768,-32768,-32768, 539, - 1967, 2315,-32768, 141, 504,-32768,-32768, 2645, 543, 2032, --32768, 545,-32768, 547, 549,-32768, 547,-32768, 294, 244, --32768, 2315, 1364,-32768,-32768,-32768,-32768, 1323,-32768, 2083, --32768, 294, 251, 2315, 555,-32768,-32768,-32768, 564, 565, - 573, 432, 322,-32768,-32768,-32768,-32768, 535, 576, 1171, - 1171, 566, 582,-32768, 571, 352, 584,-32768, 849, 2711, - 587, 2777,-32768,-32768, 256,-32768,-32768,-32768, 294,-32768, --32768,-32768,-32768,-32768, 260,-32768, 294,-32768, 3041,-32768, - 588, 337,-32768,-32768,-32768, 2315,-32768, 591, 539, 1171, - 6,-32768, 183,-32768, 2843, 2148,-32768,-32768,-32768,-32768, --32768, 593,-32768, 631, 632, 3041,-32768,-32768, 3041,-32768, --32768, 590, -16,-32768, 600, 601, 2975, 602,-32768,-32768, - 604,-32768, 603, 272, 2315, 2975,-32768,-32768, 2199, 611, - 2315,-32768, 45,-32768, 2381,-32768, 432, 609,-32768, 2975, - 2264,-32768, 610, 616,-32768, 1171, 613,-32768,-32768, 615, --32768,-32768, 2447,-32768, 2909,-32768,-32768,-32768,-32768, 619, - 280,-32768, 3041, 621, 1171,-32768,-32768,-32768, 623, 670, - 3041, 636,-32768, 3041,-32768, 3041,-32768,-32768, 725, 735, --32768 +static const short yypact[] = { 206, +-32768, -59, -59, -59, -59,-32768,-32768, 84, -10, 84, +-32768,-32768,-32768,-32768, 149,-32768,-32768,-32768, 113,-32768, +-32768,-32768, -27, 16, 155, -10,-32768,-32768, 84, -10, +-32768, -59, -59,-32768, 6, -59, -23, -13, -59, 44, +-32768, -59, -10, -27, 16, 28,-32768,-32768,-32768, 55, + 751,-32768, -59, -23,-32768,-32768, -59,-32768, -23, -13, + 44,-32768,-32768, -59,-32768,-32768,-32768, -59, 94,-32768, +-32768, 127, 179, 834,-32768,-32768, 66,-32768, 822,-32768, +-32768,-32768,-32768,-32768,-32768, 81, 134,-32768, -23,-32768, + 154, -35, 154, 290,-32768, 27, -35, 166, 177, 187, + -59, -59,-32768,-32768,-32768, -59, 485,-32768,-32768, 134, + 207, -59, 225,-32768,-32768, -59, 1549, 238,-32768,-32768, +-32768,-32768, -35, 353, -35,-32768, 271, 2494,-32768, 293, + 834,-32768, 579,-32768,-32768,-32768,-32768, 213,-32768, 286, +-32768, 374,-32768,-32768,-32768,-32768, -59, 68, 21,-32768, +-32768, 336,-32768,-32768,-32768, 2296, 2296, 2296, 2296, 342, + 363, 294,-32768, 2296, 2296, 2296, 1419,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 366, 338,-32768,-32768, 368, 381, +-32768, -59,-32768, 204,-32768, 419, 474,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 443, 518, 505, 310, 508, 472, + 479, 481, 482, 4,-32768,-32768,-32768, 436,-32768,-32768, +-32768,-32768,-32768, 405, 407, 2296,-32768, 102, 1600, 412, + 414, 286, 440, 121, 2296,-32768,-32768, -59, 224, 354, + 450, 568,-32768,-32768, 2560,-32768,-32768, 456,-32768,-32768, +-32768, 2956,-32768,-32768, 458,-32768,-32768,-32768, 2956,-32768, + 2956,-32768,-32768, 3088, 465,-32768,-32768,-32768,-32768,-32768, + 475,-32768, 215, 284, 474, 496, 517,-32768,-32768,-32768, + 283, 374,-32768,-32768,-32768,-32768, 467, 476, 477, 480, + -59,-32768, 173, -59, 148,-32768,-32768,-32768,-32768,-32768, +-32768, 511, -59, 486, 486, 493,-32768,-32768, 171, 369, + 494,-32768, 483,-32768, 226, 522, 1665, 2296, 9, 100, + 2296, 497,-32768,-32768, 2296, 2296, 2296, 2296, 2296, 2296, + 2296, 2296, 2296, 2296, 2296, 2296, 294, 2296, 2296, 2296, + 2296, 2296, 2296, 2296, 2296,-32768,-32768, 2296, 2296, 492, +-32768, 495,-32768, 500, 2296, 2296, 287,-32768,-32768, 503, + 499, 504, 1716,-32768, -59,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 530, 68,-32768,-32768,-32768, 509, 1781, 2296, +-32768, 200, 477,-32768,-32768, 2626, 506, 480,-32768,-32768, +-32768, 515, 1832, 486,-32768, 362, 486, 362, 1897, 2296, + 512, 52, 1832, 125, 3154,-32768,-32768, 1484,-32768,-32768, + 203,-32768, 513,-32768,-32768,-32768,-32768, 520, 519, 1948, +-32768,-32768,-32768, 443, 443, 518, 518, 518, 505, 505, + 505, 505, 94,-32768, 310, 310, 508, 472, 479, 481, + 482, 527,-32768, 526,-32768,-32768,-32768, 528, 532, 531, + 286, 287,-32768,-32768,-32768,-32768, 504, 534, 3113, 3113, + 535, 536,-32768, 540, 363, 538,-32768, 411, 2692, 548, + 2758,-32768, 2013,-32768, 523,-32768, 546, 547,-32768, 546, +-32768, 134, 245,-32768, 2296, 3154,-32768,-32768,-32768,-32768, + 1368,-32768, 2064,-32768, 134, 260, 2296, 3022,-32768, 552, + 173,-32768,-32768,-32768, 2296,-32768, 554, 509, 3113, 12, +-32768, 352,-32768, 2824, 2129,-32768,-32768, 270,-32768,-32768, +-32768, 134,-32768,-32768,-32768,-32768,-32768, 288,-32768, 134, +-32768, 558,-32768, 596, 600, 3022,-32768,-32768, 3022,-32768, +-32768, 560, 13,-32768, 566, 572, 2956, 573,-32768,-32768, + 569,-32768, 574, 291,-32768,-32768,-32768,-32768, 2296, 2956, +-32768,-32768, 2180, 584, 2296,-32768, 20,-32768, 2362,-32768, + 286, 578,-32768, 2956, 2245,-32768, 582, 589,-32768, 3113, + 585,-32768,-32768, 602,-32768,-32768, 2428,-32768, 2890,-32768, +-32768,-32768,-32768, 593, 326,-32768, 3022, 599, 3113,-32768, +-32768,-32768, 597, 639, 3022, 604,-32768, 3022,-32768, 3022, +-32768,-32768, 701, 702,-32768 }; static const short yypgoto[] = {-32768, --32768, 139, -26, 479, 253, -85, 43,-32768, 59, -72, --32768, -3,-32768, 729, 150,-32768, 20,-32768,-32768, 200, - 15, 586,-32768,-32768, 695, 665,-32768, -113,-32768, 550, --32768, -83, -80, 640, -105, -138,-32768, -71, 93, 426, - -211, -82,-32768,-32768,-32768,-32768,-32768, 554, 328,-32768, --32768, -25, 709, -18,-32768, 688,-32768,-32768, 103,-32768, - -93, -188, -276,-32768, 450, -167, -372, -378,-32768, -151, --32768,-32768,-32768, -306,-32768,-32768,-32768,-32768,-32768,-32768, - 207, 208, -499, -134,-32768,-32768,-32768,-32768,-32768,-32768, --32768, -58,-32768, -453, 458,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 295, 300,-32768,-32768, 138,-32768, -283, --32768, 546, 14, -208, 1037, 191, 1059, 327, 410, 434, - -65, 487, 570, -343,-32768, 305, 308, 159, 306, 510, - 511, 519, 517, 524,-32768, 319, 531, 669,-32768,-32768, - 123,-32768 +-32768, -1, 209, 376, -22, -106, -20,-32768, 78, -79, +-32768, -3,-32768, 694, 30,-32768, 126,-32768,-32768, 329, + 15, 831,-32768,-32768, 660, 645,-32768, -98,-32768, 577, +-32768, -87, -92, 591, -138, -160,-32768, -65, 96, 445, + -278, -54,-32768,-32768,-32768,-32768,-32768, 580, 341,-32768, +-32768, -30,-32768,-32768,-32768,-32768, 673, 79,-32768, 640, +-32768,-32768, 35,-32768, -85, -124, -233,-32768, 469, -55, + -321, -425,-32768, -424,-32768,-32768,-32768, -246,-32768,-32768, +-32768,-32768,-32768,-32768, 164, 168, -436, -418,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, -296,-32768, -496, 478,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 289, 295,-32768, +-32768, 99,-32768, -363,-32768, 431, 29, -100, 973, 183, + 1061, 230, 365, 473, 2, 557, 616, -379,-32768, 212, + 196, 163, 222, 398, 399, 403, 406, 402,-32768, 251, + 408, 663,-32768,-32768, 862,-32768 }; -#define YYLAST 3150 +#define YYLAST 3263 static const short yytable[] = { 23, - 24, 336, 418, 290, 234, 111, 539, 209, 444, 47, - 58, 67, 116, 409, 15, 264, 345, 210, 127, 73, - 349, 351, 15, 15, 15, 208, 79, 27, 45, 46, - 550, 48, 187, 18, 189, 200, 58, 104, 36, 48, - 15, 58, 67, 15, 15, 551, 194, 202, 27, 82, - 364, 63, 226, 84, 1, 576, 538, 40, 15, 101, - 19, 1, 440, 25, 18, 2, 218, 219, 220, 221, - 37, 3, 2, 576, 227, 228, 58, 4, 3, 552, - 212, 105, 63, 453, 4, 5, 213, 265, 82, 84, - 18, 550, 58, 207, 51, 62, 447, 58, 51, 491, - 192, 1, 448, 208, 130, 335, 551, 52, 332, 6, - 333, 224, 584, 200, 97, 229, 6, 124, 98, 130, - 525, 62, 194, 334, 194, 202, 62, 76, 337, 412, - 51, 592, 434, 195, 51, 437, 414, 52, 415, 54, - 571, 43, 55, 18, 237, 18, 485, 525, 238, 88, - 525, 122, 239, 547, 242, 81, 548, 26, 393, 30, - 190, 62, 51, 507, 418, 284, 495, 89, 58, 54, - 58, 207, 55, 18, 18, 57, 51, 62, 44, 368, - 369, 370, 62, 399, 115, 117, 58, 401, 286, -183, - 215, 215, 215, 215, -183, -183, 51, 1, 215, 215, - 230, 93, 404, 418, 525, 409, 57, 130, 28, 91, - 590, 195, 525, 43, 3, 525, 446, 525, 595, 339, - 4, 597, 192, 598, 94, 28, 330, 124, 31, 28, - 380, 185, 544, 89, 474, 48, 365, 236, 409, 482, - 213, 123, 31, 28, 425, 32, 112, 541, 52, 361, - 285, 33, 6, 62, 362, 62, 37, 57, 363, 418, - 58, 72, 211, 284, 231, 185, 90, 347, 18, 394, - 348, 62, 51, 442, 236, 402, 435, 581, 418, 130, - 54, 441, 284, 55, 18, 34, 286, 35, 49, -182, - 535, 515, 74, 286, -182, -182, 109, 118, 409, 58, - 286, 110, 286, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 62, 215, 215, 215, 215, - 215, 215, 215, 416, 49, 488, 468, 361, 49, 318, - 354, 523, 362, 93, 355, 57, 363, 489, 496, 443, - 124, 103, 435, 448, 497, 62, 18, 526, 285, 518, - 448, 123, 113, 520, 433, 448, 74, 433, 412, 448, - 360, 414, 114, 366, 529, 563, 1, 285, 503, 559, - 49, 448, 52, 589, 526, 519, 490, 526, 565, 448, - 1, 461, 319, 521, 62, 462, 52, 389, 119, 58, - 225, 529, 579, 392, 529, 129, 396, 253, 254, 255, - 256, 284, 403, 130, 54, 215, 186, 55, 18, 214, - 215, 376, 377, 378, 379, 523, 423, 540, 54, 107, - 108, 55, 18, 559, 286, 407, 565, 318, 579, 222, - 42, 526, 43, 143, 318, 435, 257, -338, -338, 526, - 532, 318, 526, 318, 526, 436, 318, 438, 529, 245, - 246, 247, 223, 284, 236, 284, 529, 188, 108, 529, - 240, 529, 432, 577, 123, 241, 74, 532, -339, -339, - 532, 260, 360, 261, 62, 58, 286, 185, 286, 262, - 319, 243, 244, -337, -337, 237, 479, 319, 284, 238, - 250, 251, 252, 239, 319, 286, 319, 248, 249, 319, - 215, 215, 266, 267, -337, -337, 237, 258, 259, 48, - 350, 286, 215, 455, 239, 263, 124, -101, 320, 459, - 460, 326, 286, 104, 532, 286, 192, 360, 284, -283, - -283, 110, 532, 286, 338, 532, 340, 532, 285, 31, - 285, 346, 286, 472, 473, 52, 284, 352, 284, -284, - -284, 286, 371, 372, 407, 353, 286, 373, 374, 375, - 62, 31, 33, 382, 383, 318, 356, 52, 367, 286, - 493, 286, -226, 285, 391, 406, 92, 54, 32, 286, - 55, 18, 397, 398, 33, 16, 400, 286, 454, 422, - 286, 410, 286, 16, 16, 16, 413, 421, 428, 54, - 430, 321, 55, 18, 426, 427, 431, 318, 318, 449, - 451, 16, 450, 285, 16, 16, 320, 318, 319, 318, - 456, 457, 64, 320, 458, 322, 466, 467, 536, 16, - 320, 285, 320, 285, 108, 320, 318, 469, 470, 191, - 123, 483, 486, 435, -15, 52, 487, 318, 499, -337, - -337, 237, 318, 64, 53, 405, 3, 500, 501, 239, - 319, 319, 4, 318, 510, 502, 318, 564, 506, 512, - 319, 567, 319, 569, 318, 511, -116, 54, 323, 516, - 55, 18, 533, 318, 537, 545, 546, -156, 549, 319, - 192, 193, 318, 557, 558, 560, 561, 318, 568, 321, - 319, 562, 586, 318, 196, 319, 321, 578, 582, 583, - 318, 585, 318, 321, 591, 321, 319, 588, 321, 319, - 318, 593, 318, 322, 600, 594, 191, 319, 318, 596, - 322, 318, 52, 318, 601, 381, 319, 322, 29, 322, - 80, 53, 322, 3, 102, 319, 329, 131, 327, 4, - 319, 424, 475, 78, 320, 96, 319, 504, 417, 572, - 573, 324, 505, 319, 54, 319, 420, 55, 18, 384, - 344, 385, 498, 319, 0, 319, 323, 192, 328, 387, - 386, 319, 196, 323, 319, 0, 319, 388, 1, 0, - 323, 0, 323, 0, 52, 323, 320, 320, 390, 0, - 0, 1, 0, 53, 0, 3, 320, 52, 320, 0, - 0, 4, 0, 0, 0, 0, 53, 0, 3, 0, - 0, 0, 0, 0, 4, 320, 54, 0, 0, 55, - 18, 0, 0, 0, 0, 0, 320, 321, 0, 54, - 56, 320, 55, 18, 0, 0, 0, 0, 0, 0, - 0, 0, 320, 95, 0, 320, 0, 0, 0, 324, - 325, 322, 0, 320, 0, 0, 324, 0, 0, 0, - 0, 0, 320, 324, 0, 324, 0, 0, 324, 321, - 321, 320, 0, 0, 0, 0, 320, 0, 0, 321, - 0, 321, 320, 0, 0, 0, 0, 0, 0, 320, - 0, 320, 0, 322, 322, 0, 0, 0, 321, 320, - 0, 320, 0, 322, 323, 322, 0, 320, 0, 321, - 320, 0, 320, 0, 321, 0, 0, 0, 0, 0, - 0, 0, 322, 0, -15, 321, 0, 0, 321, -337, - -337, 237, 0, 322, 0, 405, 321, 0, 322, 513, - 0, 0, 0, 0, 0, 321, 323, 323, 325, 322, - 0, 0, 322, 0, 321, 325, 323, 0, 323, 321, - 322, 0, 325, 0, 325, 321, 0, 325, 0, 322, - 0, 0, 321, 0, 321, 323, 0, 0, 322, 0, - 0, 0, 321, 322, 321, 0, 323, 324, 0, 322, - 321, 323, 0, 321, 0, 321, 322, 0, 322, 0, - 0, 0, 323, 0, 0, 323, 322, 0, 322, 0, - 0, 0, 0, 323, 322, 0, 0, 322, 0, 322, - 0, 0, 323, 0, 0, 0, 0, 0, 0, 324, - 324, 323, 0, 0, 0, 0, 323, 0, 0, 324, - 0, 324, 323, 0, 0, 0, 0, 0, 0, 323, - 0, 323, 0, 0, 0, 0, 0, 0, 324, 323, - 0, 323, 1, 134, 135, 0, 0, 323, 52, 324, - 323, 0, 323, 0, 324, 0, 0, 136, 0, 0, - 0, 0, 0, 137, 0, 324, 325, 0, 324, 0, - 138, 0, 0, 0, 139, 0, 324, 0, 0, 0, - 54, 0, 0, 55, 18, 324, 0, 0, 0, 0, - 0, 280, 0, 0, 324, 0, 0, 0, 0, 324, - 144, 145, 146, 147, 0, 324, 148, 149, 325, 325, - 0, 0, 324, 0, 324, 0, 0, 0, 325, 0, - 325, 0, 324, 0, 324, 0, 0, 0, 0, 0, - 324, 0, 0, 324, 0, 324, 0, 325, 216, 216, - 216, 216, 0, 0, 0, 0, 216, 216, 325, 0, - 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, - 217, 217, 217, 217, 325, 0, 0, 325, 217, 217, - 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, - 0, 0, 0, 0, 325, 134, 135, 0, 0, 0, - 52, 0, 0, 325, 0, 0, 0, 0, 325, 136, - 0, 0, 0, 0, 325, 137, 0, 0, 0, 0, - 0, 325, 138, 325, 0, 0, 139, 0, 0, 0, - 0, 325, 54, 325, 0, 55, 18, 0, 0, 325, - 0, 0, 325, 280, 325, 0, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 0, 0, 148, 149, - 0, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 0, 216, 216, 216, 216, 216, 216, - 216, 0, 0, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 0, 217, 217, 217, 217, - 217, 217, 217, 492, 0, 132, 133, 0, 0, 0, + 24, 357, 538, 235, 379, 151, 304, 366, 280, 124, + 46, 145, 539, 48, 15, 477, 55, 112, 334, 136, + 78, 144, 15, 15, 15, 473, 18, 130, 44, 45, + 48, 47, 83, 1, 48, 36, 85, 26, 47, 30, + 15, 138, 119, 15, 15, 136, 486, 144, 78, 68, + 3, 130, 277, 130, 278, 296, 4, 15, 43, 554, + 91, 113, 525, 526, 93, 74, 554, 138, 211, 529, + 213, 51, 102, 588, 555, 404, 143, 68, 39, 19, + 405, 555, 25, 48, 406, 126, 53, 279, 6, 55, + 335, 18, 596, 74, 18, 57, 514, 91, 93, 508, + 525, 526, 143, 525, 526, 68, 128, 529, 556, 147, + 529, 31, 154, 50, 282, 575, 50, 63, 117, 518, + 283, 131, 580, 118, 231, 148, 62, 1, 73, 102, + 50, 68, 84, 27, 50, 352, 347, 88, 2, 295, + 580, 544, 378, 154, 3, 475, 281, 131, 468, 65, + 4, 73, 66, 18, 27, 42, 73, 288, 289, 290, + 291, 525, 526, 97, 103, 297, 298, 109, 529, 525, + 526, 407, 525, 526, 525, 526, 529, 380, 312, 529, + 106, 529, 6, 50, 73, 18, 360, 18, 73, 50, + 98, 532, 31, 362, 388, 363, 123, 125, 392, 394, + 341, 585, 496, 366, 551, 230, 18, 552, 73, 32, + 73, 34, 535, 35, 342, 33, 1, 373, 476, 349, + 350, 468, 63, 99, 154, 73, 263, 357, 107, 532, + 355, 231, 532, 285, 285, 285, 285, 479, 231, 50, + 307, 285, 285, 300, 308, 231, 111, 231, 309, 1, + 1, 461, 366, 41, 65, 42, 63, 66, 18, 69, + 2, 55, 447, 120, 390, 594, 3, 391, 364, 147, + 357, 306, 4, 599, 121, 100, 601, 154, 602, 42, + 5, 147, 69, 467, 122, 148, 470, 69, 65, 382, + 532, 66, 18, 453, -342, -342, 480, 148, 532, 283, + 146, 532, 481, 532, 6, 47, 408, 128, -187, 73, + 264, 275, 230, -187, -187, 69, 411, 412, 413, 69, + 98, 397, 153, 366, 306, 398, 1, 323, 324, 325, + 326, 230, 63, 263, 504, 210, 229, 28, 512, 69, + 263, 69, 366, 63, 481, 357, 440, 263, 73, 263, + 441, 154, 263, 520, 28, 492, 69, 265, 28, 481, + 73, 50, 355, 545, 65, -101, 327, 66, 18, 481, + 294, 28, 231, 511, 299, 65, 371, -186, 66, 18, + 128, 547, -186, -186, 567, 271, 519, 481, 115, 116, + 481, 474, 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 73, 285, 285, 285, 285, 285, + 285, 285, 466, 546, 540, 466, 541, 264, 404, 593, + 469, 548, 471, 405, 264, 481, 112, 406, -341, -341, + 307, 264, 523, 264, 308, 284, 264, 18, 309, -15, + 69, 73, 292, 229, -341, -341, 307, 315, 316, 317, + 353, 212, 116, 458, 309, 231, 167, 231, 468, -341, + -341, 307, 229, 293, 265, 393, 306, 285, 310, 309, + 360, 265, 285, 362, 263, 581, 513, 311, 265, 69, + 265, 563, 330, 265, 231, 419, 420, 421, 422, 147, + 331, 69, 266, 332, 569, 333, -15, -230, 47, 339, + 231, -341, -341, 307, 345, 148, 346, 353, 583, -343, + -343, 502, 320, 321, 322, 416, 417, 418, 313, 314, + 318, 319, 231, 328, 329, 231, 336, 337, 127, 414, + 415, 523, 348, 231, 63, 423, 230, 354, 230, 563, + -287, -287, 569, 64, 583, 3, 231, 263, 263, 425, + 426, 4, 285, 285, 358, 231, 361, 263, 264, 263, + 231, -288, -288, 369, 285, 374, 65, 370, 73, 66, + 18, 376, 69, 231, 375, 231, 118, 381, 396, 128, + 129, 230, 383, 231, 229, 389, 263, 395, 399, 410, + 435, 231, 446, 436, 231, 448, 231, 263, 437, 266, + 267, 445, 263, 116, 462, 265, 266, 463, 449, 464, + 482, 31, 483, 266, 487, 266, 484, 63, 266, 488, + 509, 489, 127, 491, 263, 490, 495, 263, 63, 500, + -116, 264, 264, 499, 33, 263, 230, 64, 501, 3, + 505, 264, 468, 264, 510, 4, 533, 537, 263, 65, + 549, 550, 66, 18, 230, -160, 230, 263, 553, 561, + 65, 565, 263, 66, 18, 562, 564, 229, 263, 229, + 264, 572, 566, 128, 273, 263, 582, 263, 265, 265, + 586, 264, 587, 589, 268, 263, 264, 263, 265, 590, + 265, 592, 595, 263, 598, 597, 263, 600, 263, 69, + 604, 605, 424, 29, 61, 90, 155, 267, 264, 274, + 272, 264, 229, 454, 267, 372, 60, 265, 105, 264, + 576, 267, 365, 267, 577, 387, 267, 427, 265, 428, + 493, 368, 264, 265, 429, 431, 494, 521, 430, 0, + 266, 264, 0, 269, 0, 433, 264, 0, 0, 0, + 0, 0, 264, 0, 0, 265, 0, 0, 265, 264, + 0, 264, 0, 0, 0, 0, 265, 229, 0, 264, + 0, 264, 0, 0, 0, 0, 0, 264, 0, 265, + 264, 0, 264, 0, 0, 229, 0, 229, 265, 0, + 270, 268, 0, 265, 1, 0, 0, 0, 268, 265, + 63, 0, 0, 0, 0, 268, 265, 268, 265, 64, + 268, 3, 0, 266, 266, 0, 265, 4, 265, 0, + 0, 0, 0, 266, 265, 266, 0, 265, 0, 265, + 16, 0, 65, 0, 0, 66, 18, 0, 16, 16, + 16, 0, 0, 0, 0, 0, 67, 0, 267, 0, + 269, 0, 266, 0, 0, 0, 16, 269, 0, 16, + 16, 0, 0, 266, 269, 1, 269, 0, 266, 269, + 0, 63, 0, 16, 0, 0, 0, 31, 0, 0, + 64, 75, 3, 63, 0, 0, 0, 0, 4, 0, + 266, 0, 101, 266, 32, 0, 0, 270, 0, 0, + 33, 266, 0, 65, 270, 0, 66, 18, 0, 75, + 0, 270, 0, 270, 266, 65, 270, 104, 66, 18, + 0, 267, 267, 266, 0, 0, 0, 0, 266, 0, + 0, 267, 268, 267, 266, 0, 0, 132, 0, 0, + 0, 266, 0, 266, 0, 0, 0, 0, 0, 0, + 0, 266, 0, 266, 0, 0, 0, 0, 0, 266, + 267, 0, 266, 132, 266, 0, 0, 0, 0, 0, + 0, 267, 0, 0, 0, 0, 267, 0, 209, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 269, 0, 0, 0, 0, 0, 0, 267, 0, + 0, 267, 0, 0, 0, 268, 268, 0, 0, 267, + 0, 0, 0, 0, 0, 268, 0, 268, 0, 0, + 0, 0, 267, 0, 0, 0, 0, 301, 209, 0, + 0, 267, 0, 0, 0, 0, 267, 0, 270, 0, + 0, 0, 267, 0, 268, 0, 0, 0, 0, 267, + 0, 267, 0, 0, 0, 268, 0, 0, 0, 267, + 268, 267, 0, 0, 269, 269, 0, 267, 0, 0, + 267, 0, 267, 0, 269, 0, 269, 340, 0, 0, + 344, 0, 268, 0, 0, 268, 351, 0, 0, 0, + 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 269, 0, 0, 268, 0, 0, 0, + 0, 270, 270, 0, 269, 268, 0, 0, 0, 269, + 268, 270, 0, 270, 0, 0, 268, 0, 286, 286, + 286, 286, 0, 268, 0, 268, 286, 286, 0, 0, + 0, 269, 0, 268, 269, 268, 0, 0, 0, 0, + 270, 268, 269, 0, 268, 0, 268, 0, 0, 0, + 0, 270, 0, 0, 0, 269, 270, 0, 0, 403, + 0, 0, 409, 0, 269, 0, 0, 0, 0, 269, + 0, 0, 0, 0, 0, 269, 0, 0, 270, 0, + 0, 270, 269, 0, 269, 0, 432, 0, 0, 270, + 434, 0, 269, 0, 269, 0, 438, 439, 0, 0, + 269, 0, 270, 269, 403, 269, 287, 287, 287, 287, + 0, 270, 0, 0, 287, 287, 270, 0, 0, 0, + 451, 452, 270, 0, 0, 0, 0, 0, 0, 270, + 0, 270, 0, 0, 465, 0, 0, 0, 0, 270, + 0, 270, 0, 0, 403, 0, 0, 270, 0, 209, + 270, 0, 270, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 0, + 286, 286, 286, 286, 286, 286, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 134, 135, 0, - 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, - 0, 136, 0, 216, 0, 0, 0, 137, 216, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 139, 0, - 0, 0, 0, 0, 54, 217, 0, 55, 18, 0, - 217, 140, 141, 52, 0, 142, 0, 0, 0, 0, - 0, 0, 136, 0, 144, 145, 146, 147, 137, 0, - 148, 149, 0, 0, 0, 138, 0, 0, 0, 139, - 132, 133, 0, 0, 0, 54, 0, 0, 55, 18, - 0, 0, 140, 141, 0, 0, 142, 0, 0, 0, - 0, 0, 0, 0, 0, 144, 145, 146, 147, 0, - 0, 148, 149, 0, 0, 0, 0, 0, 216, 216, - 0, 0, 134, 135, 0, 0, 0, 52, 0, 0, - 216, 0, 0, 0, 0, 0, 136, 0, 0, 0, - 217, 217, 137, 0, 0, 132, 133, 0, 0, 138, - 0, 0, 217, 139, 0, 0, 0, 0, 0, 54, - 0, 0, 55, 18, 0, 0, 140, 141, 0, 0, - 142, 0, 143, 232, 0, 0, 0, 233, 0, 144, - 145, 146, 147, 0, 0, 148, 149, 134, 135, 0, - 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, - 0, 136, 0, 0, 0, 0, 0, 137, 0, 0, - 132, 133, 0, 0, 138, 0, 0, 0, 139, 0, - 0, 0, 0, 0, 54, 0, 0, 55, 18, 0, - 0, 140, 141, 0, 0, 142, 0, 143, 445, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 0, 0, - 148, 149, 134, 135, 0, 0, 0, 52, 0, 0, - 0, 132, 133, 0, 0, 0, 136, 0, 0, 0, - 0, 0, 137, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 139, 0, 0, 0, 0, 0, 54, - 0, 0, 55, 18, 0, 0, 140, 141, 0, 0, - 142, 0, 143, 134, 135, 0, 0, 0, 52, 144, - 145, 146, 147, 0, 0, 148, 149, 136, 0, 0, - 0, 0, 0, 137, 0, 0, 132, 133, 0, 0, - 138, 0, 0, 0, 139, 0, 0, 0, 0, 0, - 54, 0, 0, 55, 18, 0, 0, 140, 141, 0, - 0, 142, 357, 0, 0, 0, 0, 0, 0, 0, - 144, 145, 146, 147, 0, 0, 148, 149, 134, 135, - 0, 0, 0, 52, 0, 0, 0, 132, 133, 0, - 0, 0, 136, 0, 0, 0, 0, 0, 137, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 139, - 0, 0, 0, 0, 0, 54, 0, 0, 55, 18, - 0, 0, 140, 141, 0, 0, 142, 0, 0, 134, - 135, 0, 395, 0, 52, 144, 145, 146, 147, 0, - 0, 148, 149, 136, 0, 0, 0, 0, 0, 137, - 0, 0, 132, 133, 0, 0, 138, 0, 0, 0, - 139, 0, 0, 0, 0, 0, 54, 0, 0, 55, - 18, 0, 0, 140, 141, 0, 0, 142, 0, 0, - 0, 0, 431, 0, 0, 0, 144, 145, 146, 147, - 0, 0, 148, 149, 134, 135, 0, 0, 0, 52, - 0, 0, 0, 132, 133, 0, 0, 0, 136, 0, - 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, - 0, 138, 0, 0, 0, 139, 0, 0, 0, 0, - 0, 54, 0, 0, 55, 18, 0, 0, 140, 141, - 0, 0, 142, 439, 0, 134, 135, 0, 0, 0, - 52, 144, 145, 146, 147, 0, 0, 148, 149, 136, - 0, 0, 0, 0, 0, 137, 0, 0, 132, 133, - 0, 0, 138, 0, 0, 0, 139, 0, 0, 0, - 0, 0, 54, 0, 0, 55, 18, 0, 0, 140, - 141, 0, 0, 142, 452, 0, 0, 0, 0, 0, - 0, 0, 144, 145, 146, 147, 0, 0, 148, 149, - 134, 135, 0, 0, 0, 52, 0, 0, 0, 132, - 133, 0, 0, 0, 136, 0, 0, 0, 0, 0, - 137, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 139, 0, 0, 0, 0, 0, 54, 0, 0, - 55, 18, 0, 0, 140, 141, 0, 0, 142, 0, - 0, 134, 135, 114, 0, 0, 52, 144, 145, 146, - 147, 0, 0, 148, 149, 136, 0, 0, 0, 0, - 0, 137, 0, 0, 132, 133, 0, 0, 138, 0, - 0, 0, 139, 0, 0, 0, 0, 0, 54, 0, - 0, 55, 18, 0, 0, 140, 141, 0, 0, 142, - 0, 0, 0, 0, 0, 471, 0, 0, 144, 145, - 146, 147, 0, 0, 148, 149, 134, 135, 0, 0, - 0, 52, 0, 0, 0, 132, 133, 0, 0, 0, - 136, 0, 0, 0, 0, 0, 137, 0, 0, 0, - 0, 0, 0, 138, 0, 0, 0, 139, 0, 0, - 0, 0, 0, 54, 0, 0, 55, 18, 0, 0, - 140, 141, 0, 0, 142, 484, 0, 134, 135, 0, - 0, 0, 52, 144, 145, 146, 147, 0, 0, 148, - 149, 136, 0, 0, 0, 0, 0, 137, 0, 0, - 132, 133, 0, 0, 138, 0, 0, 0, 139, 0, - 0, 0, 0, 0, 54, 0, 0, 55, 18, 0, - 0, 140, 141, 0, 0, 142, 494, 0, 0, 0, - 0, 0, 0, 0, 144, 145, 146, 147, 0, 0, - 148, 149, 134, 135, 0, 0, 0, 52, 0, 0, - 0, 132, 133, 0, 0, 0, 136, 0, 0, 0, - 0, 0, 137, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 139, 0, 0, 0, 0, 0, 54, - 0, 0, 55, 18, 0, 0, 140, 141, 0, 0, - 142, 543, 0, 134, 135, 0, 0, 0, 52, 144, - 145, 146, 147, 0, 0, 148, 149, 136, 0, 0, - 0, 0, 0, 137, 0, 0, 132, 133, 0, 0, - 138, 0, 0, 0, 139, 0, 0, 0, 0, 0, - 54, 0, 0, 55, 18, 0, 0, 140, 141, 0, - 0, 142, 0, 0, 0, 0, 0, 566, 0, 0, - 144, 145, 146, 147, 0, 0, 148, 149, 134, 135, - 0, 0, 0, 52, 0, 0, 0, 132, 133, 0, - 0, 0, 136, 0, 0, 0, 0, 0, 137, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 139, - 0, 0, 0, 0, 0, 54, 0, 0, 55, 18, - 0, 0, 140, 141, 0, 0, 142, 580, 0, 134, - 135, 0, 0, 0, 52, 144, 145, 146, 147, 0, - 0, 148, 149, 136, 0, 0, 0, 0, 0, 137, - 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, - 139, 0, 0, 0, 0, 0, 54, 0, 0, 55, - 18, 0, 0, 140, 141, 0, 0, 142, 0, 0, - 0, 0, 0, 0, 0, 0, 144, 145, 146, 147, - 0, 0, 148, 149, 269, 134, 135, 550, 270, 271, - 52, 272, 0, 0, 273, 0, 0, 0, 274, 136, - 0, 0, 551, 0, 0, 137, 275, 4, 276, 0, - 277, 278, 138, 279, 0, 0, 139, 0, 0, 0, - 0, 0, 54, 0, 0, 55, 18, 0, 0, 0, - 0, 0, 0, 280, 0, 192, 574, 0, 0, 282, - 0, 0, 144, 145, 146, 147, 0, 0, 148, 149, - 269, 134, 135, 550, 270, 271, 52, 272, 0, 0, - 273, 0, 0, 0, 274, 136, 0, 0, 551, 0, - 0, 137, 275, 4, 276, 0, 277, 278, 138, 279, - 0, 0, 139, 0, 0, 0, 0, 0, 54, 0, - 0, 55, 18, 0, 0, 0, 0, 0, 0, 280, - 0, 192, 587, 0, 0, 282, 0, 0, 144, 145, - 146, 147, 0, 0, 148, 149, 269, 134, 135, 0, - 270, 271, 52, 272, 0, 0, 273, 0, 0, 0, - 274, 136, 0, 0, 0, 0, 0, 137, 275, 4, - 276, 0, 277, 278, 138, 279, 0, 0, 139, 0, - 0, 0, 0, 0, 54, 0, 0, 55, 18, 0, - 0, 0, 0, 0, 0, 280, 0, 192, 281, 0, - 0, 282, 0, 0, 144, 145, 146, 147, 0, 0, - 148, 149, 269, 134, 135, 0, 270, 271, 52, 272, - 0, 0, 273, 0, 0, 0, 274, 136, 0, 0, - 0, 0, 0, 137, 275, 4, 276, 0, 277, 278, - 138, 279, 0, 0, 139, 0, 0, 0, 0, 0, - 54, 0, 0, 55, 18, 0, 0, 0, 0, 0, - 0, 280, 0, 192, 408, 0, 0, 282, 0, 0, - 144, 145, 146, 147, 0, 0, 148, 149, 269, 134, - 135, 0, 270, 271, 52, 272, 0, 0, 273, 0, - 0, 0, 274, 136, 0, 0, 0, 0, 0, 476, - 275, 4, 276, 0, 277, 278, 138, 279, 0, 0, - 477, 0, 0, 0, 0, 0, 54, 0, 0, 55, - 18, 0, 0, 0, 0, 0, 0, 280, 0, 192, - 478, 0, 0, 282, 0, 0, 144, 145, 146, 147, - 0, 0, 148, 149, 269, 134, 135, 0, 270, 271, - 52, 272, 0, 0, 273, 0, 0, 0, 274, 136, - 0, 0, 0, 0, 0, 137, 275, 4, 276, 0, - 277, 278, 138, 279, 0, 0, 139, 0, 0, 0, - 0, 0, 54, 0, 0, 55, 18, 0, 0, 0, - 0, 0, 0, 280, 0, 192, 514, 0, 0, 282, - 0, 0, 144, 145, 146, 147, 0, 0, 148, 149, - 269, 134, 135, 0, 270, 271, 52, 272, 0, 0, - 273, 0, 0, 0, 274, 136, 0, 0, 0, 0, - 0, 137, 275, 4, 276, 0, 277, 278, 138, 279, - 0, 0, 139, 0, 0, 0, 0, 0, 54, 0, - 0, 55, 18, 0, 0, 0, 0, 0, 0, 280, - 0, 192, 517, 0, 0, 282, 0, 0, 144, 145, - 146, 147, 0, 0, 148, 149, 269, 134, 135, 0, - 270, 271, 52, 272, 0, 0, 273, 0, 0, 0, - 274, 136, 0, 0, 0, 0, 0, 137, 275, 4, - 276, 0, 277, 278, 138, 279, 0, 0, 139, 0, - 0, 0, 0, 0, 54, 0, 0, 55, 18, 0, - 0, 0, 0, 0, 0, 280, 0, 192, 542, 0, - 0, 282, 0, 0, 144, 145, 146, 147, 0, 0, - 148, 149, 269, 134, 135, 0, 270, 271, 52, 272, - 0, 0, 273, 0, 0, 0, 274, 136, 0, 0, - 0, 0, 0, 137, 275, 4, 276, 0, 277, 278, - 138, 279, 0, 0, 139, 0, 0, 0, 0, 0, - 54, 0, 0, 55, 18, 0, 0, 0, 0, 0, - 0, 280, 0, 192, 0, 0, 0, 282, 0, 0, - 144, 145, 146, 147, 0, 0, 148, 149, 411, 134, - 135, 0, 270, 271, 52, 272, 0, 0, 273, 0, - 0, 0, 274, 136, 0, 0, 0, 0, 0, 137, - 275, 0, 276, 0, 277, 278, 138, 279, 0, 0, - 139, 0, 0, 0, 0, 0, 54, 0, 0, 55, - 18, 0, 0, 0, 0, 0, 0, 280, 0, 192, - 0, 0, 0, 282, 0, 0, 144, 145, 146, 147, - 0, 0, 148, 149, 411, 134, 135, 0, 522, 271, - 52, 272, 0, 0, 273, 0, 0, 0, 274, 136, - 0, 0, 0, 0, 0, 137, 275, 0, 276, 0, - 277, 278, 138, 279, 0, 0, 139, 0, 0, 0, - 0, 0, 54, 0, 0, 55, 18, 0, 0, 0, - 0, 0, 0, 280, 0, 192, 0, 0, 0, 282, - 0, 0, 144, 145, 146, 147, 0, 0, 148, 149 + 0, 0, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 536, 0, 0, 0, + 0, 0, 286, 0, 0, 0, 0, 286, 515, 0, + 156, 157, 0, 0, 0, 287, 287, 287, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 0, 287, 287, + 287, 287, 287, 287, 287, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 568, 0, 158, 159, 571, 0, 573, 63, 0, 0, + 0, 156, 157, 0, 0, 0, 160, 0, 0, 0, + 0, 0, 161, 0, 0, 0, 0, 0, 0, 162, + 0, 0, 0, 163, 0, 0, 0, 286, 286, 65, + 287, 0, 66, 18, 0, 287, 164, 165, 0, 286, + 166, 0, 0, 158, 159, 0, 0, 0, 63, 168, + 169, 170, 171, 0, 0, 172, 173, 160, 0, 0, + 0, 0, 0, 161, 0, 0, 156, 157, 0, 0, + 162, 0, 0, 0, 163, 0, 0, 0, 0, 0, + 65, 0, 0, 66, 18, 0, 0, 164, 165, 0, + 0, 166, 0, 167, 302, 0, 0, 0, 303, 0, + 168, 169, 170, 171, 0, 0, 172, 173, 158, 159, + 0, 0, 0, 63, 0, 287, 287, 0, 0, 0, + 0, 0, 160, 0, 0, 0, 0, 287, 161, 0, + 0, 156, 157, 0, 0, 162, 0, 0, 0, 163, + 0, 0, 0, 0, 0, 65, 0, 0, 66, 18, + 0, 0, 164, 165, 0, 0, 166, 0, 167, 478, + 0, 0, 0, 0, 0, 168, 169, 170, 171, 0, + 0, 172, 173, 158, 159, 0, 0, 0, 63, 0, + 0, 0, 156, 157, 0, 0, 0, 160, 0, 0, + 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, + 162, 0, 0, 0, 163, 0, 0, 0, 0, 0, + 65, 0, 0, 66, 18, 0, 0, 164, 165, 0, + 0, 166, 0, 167, 158, 159, 0, 0, 0, 63, + 168, 169, 170, 171, 0, 0, 172, 173, 160, 0, + 0, 0, 0, 0, 161, 0, 0, 156, 157, 0, + 0, 162, 0, 0, 0, 163, 0, 0, 0, 0, + 0, 65, 0, 0, 66, 18, 0, 0, 164, 165, + 0, 0, 166, 0, 0, 0, 0, 0, 343, 0, + 0, 168, 169, 170, 171, 0, 0, 172, 173, 158, + 159, 0, 0, 0, 63, 0, 0, 0, 156, 157, + 0, 0, 0, 160, 0, 0, 0, 0, 0, 161, + 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, + 163, 0, 0, 0, 0, 0, 65, 0, 0, 66, + 18, 0, 0, 164, 165, 0, 0, 166, 400, 0, + 158, 159, 0, 0, 0, 63, 168, 169, 170, 171, + 0, 0, 172, 173, 160, 0, 0, 0, 0, 0, + 161, 0, 0, 156, 157, 0, 0, 162, 0, 0, + 0, 163, 0, 0, 0, 0, 0, 65, 0, 0, + 66, 18, 0, 0, 164, 165, 0, 0, 166, 0, + 0, 0, 0, 122, 0, 0, 0, 168, 169, 170, + 171, 0, 0, 172, 173, 158, 159, 0, 0, 0, + 63, 0, 0, 0, 156, 157, 0, 0, 0, 160, + 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, + 0, 0, 162, 0, 0, 0, 163, 0, 0, 0, + 0, 0, 65, 0, 0, 66, 18, 0, 0, 164, + 165, 0, 0, 166, 0, 0, 158, 159, 0, 450, + 0, 63, 168, 169, 170, 171, 0, 0, 172, 173, + 160, 0, 0, 0, 0, 0, 161, 0, 0, 156, + 157, 0, 0, 162, 0, 0, 0, 163, 0, 0, + 0, 0, 0, 65, 0, 0, 66, 18, 0, 0, + 164, 165, 0, 0, 166, 0, 0, 0, 0, 464, + 0, 0, 0, 168, 169, 170, 171, 0, 0, 172, + 173, 158, 159, 0, 0, 0, 63, 0, 0, 0, + 156, 157, 0, 0, 0, 160, 0, 0, 0, 0, + 0, 161, 0, 0, 0, 0, 0, 0, 162, 0, + 0, 0, 163, 0, 0, 0, 0, 0, 65, 0, + 0, 66, 18, 0, 0, 164, 165, 0, 0, 166, + 472, 0, 158, 159, 0, 0, 0, 63, 168, 169, + 170, 171, 0, 0, 172, 173, 160, 0, 0, 0, + 0, 0, 161, 0, 0, 156, 157, 0, 0, 162, + 0, 0, 0, 163, 0, 0, 0, 0, 0, 65, + 0, 0, 66, 18, 0, 0, 164, 165, 0, 0, + 166, 485, 0, 0, 0, 0, 0, 0, 0, 168, + 169, 170, 171, 0, 0, 172, 173, 158, 159, 0, + 0, 0, 63, 0, 0, 0, 156, 157, 0, 0, + 0, 160, 0, 0, 0, 0, 0, 161, 0, 0, + 0, 0, 0, 0, 162, 0, 0, 0, 163, 0, + 0, 0, 0, 0, 65, 0, 0, 66, 18, 0, + 0, 164, 165, 0, 0, 166, 507, 0, 158, 159, + 0, 0, 0, 63, 168, 169, 170, 171, 0, 0, + 172, 173, 160, 0, 0, 0, 0, 0, 161, 0, + 0, 156, 157, 0, 0, 162, 0, 0, 0, 163, + 0, 0, 0, 0, 0, 65, 0, 0, 66, 18, + 0, 0, 164, 165, 0, 0, 166, 517, 0, 0, + 0, 0, 0, 0, 0, 168, 169, 170, 171, 0, + 0, 172, 173, 158, 159, 0, 0, 0, 63, 0, + 0, 0, 156, 157, 0, 0, 0, 160, 0, 0, + 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, + 162, 0, 0, 0, 163, 0, 0, 0, 0, 0, + 65, 0, 0, 66, 18, 0, 0, 164, 165, 0, + 0, 166, 543, 0, 158, 159, 0, 0, 0, 63, + 168, 169, 170, 171, 0, 0, 172, 173, 160, 0, + 0, 0, 0, 0, 161, 0, 0, 156, 157, 0, + 0, 162, 0, 0, 0, 163, 0, 0, 0, 0, + 0, 65, 0, 0, 66, 18, 0, 0, 164, 165, + 0, 0, 166, 0, 0, 0, 0, 0, 570, 0, + 0, 168, 169, 170, 171, 0, 0, 172, 173, 158, + 159, 0, 0, 0, 63, 0, 0, 0, 156, 157, + 0, 0, 0, 160, 0, 0, 0, 0, 0, 161, + 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, + 163, 0, 0, 0, 0, 0, 65, 0, 0, 66, + 18, 0, 0, 164, 165, 0, 0, 166, 584, 0, + 158, 159, 0, 0, 0, 63, 168, 169, 170, 171, + 0, 0, 172, 173, 160, 0, 0, 0, 0, 0, + 161, 0, 0, 0, 0, 0, 0, 162, 0, 0, + 0, 163, 0, 0, 0, 0, 0, 65, 0, 0, + 66, 18, 0, 0, 164, 165, 0, 0, 166, 0, + 0, 0, 0, 0, 0, 0, 0, 168, 169, 170, + 171, 0, 0, 172, 173, 214, 158, 159, 554, 215, + 216, 63, 217, 0, 0, 218, 0, 0, 0, 219, + 160, 0, 0, 555, 0, 0, 161, 220, 4, 221, + 0, 222, 223, 162, 224, 0, 0, 163, 0, 0, + 0, 0, 0, 65, 0, 0, 66, 18, 0, 0, + 0, 0, 0, 0, 225, 0, 128, 578, 0, 0, + 227, 0, 0, 168, 169, 170, 171, 0, 0, 172, + 173, 214, 158, 159, 554, 215, 216, 63, 217, 0, + 0, 218, 0, 0, 0, 219, 160, 0, 0, 555, + 0, 0, 161, 220, 4, 221, 0, 222, 223, 162, + 224, 0, 0, 163, 0, 0, 0, 0, 0, 65, + 0, 0, 66, 18, 0, 0, 0, 0, 0, 0, + 225, 0, 128, 591, 0, 0, 227, 0, 0, 168, + 169, 170, 171, 0, 0, 172, 173, 214, 158, 159, + 0, 215, 216, 63, 217, 0, 0, 218, 0, 0, + 0, 219, 160, 0, 0, 0, 0, 0, 161, 220, + 4, 221, 0, 222, 223, 162, 224, 0, 0, 163, + 0, 0, 0, 0, 0, 65, 0, 0, 66, 18, + 0, 0, 0, 0, 0, 0, 225, 0, 128, 226, + 0, 0, 227, 0, 0, 168, 169, 170, 171, 0, + 0, 172, 173, 214, 158, 159, 0, 215, 216, 63, + 217, 0, 0, 218, 0, 0, 0, 219, 160, 0, + 0, 0, 0, 0, 161, 220, 4, 221, 0, 222, + 223, 162, 224, 0, 0, 163, 0, 0, 0, 0, + 0, 65, 0, 0, 66, 18, 0, 0, 0, 0, + 0, 0, 225, 0, 128, 356, 0, 0, 227, 0, + 0, 168, 169, 170, 171, 0, 0, 172, 173, 214, + 158, 159, 0, 215, 216, 63, 217, 0, 0, 218, + 0, 0, 0, 219, 160, 0, 0, 0, 0, 0, + 455, 220, 4, 221, 0, 222, 223, 162, 224, 0, + 0, 456, 0, 0, 0, 0, 0, 65, 0, 0, + 66, 18, 0, 0, 0, 0, 0, 0, 225, 0, + 128, 457, 0, 0, 227, 0, 0, 168, 169, 170, + 171, 0, 0, 172, 173, 214, 158, 159, 0, 215, + 216, 63, 217, 0, 0, 218, 0, 0, 0, 219, + 160, 0, 0, 0, 0, 0, 161, 220, 4, 221, + 0, 222, 223, 162, 224, 0, 0, 163, 0, 0, + 0, 0, 0, 65, 0, 0, 66, 18, 0, 0, + 0, 0, 0, 0, 225, 0, 128, 503, 0, 0, + 227, 0, 0, 168, 169, 170, 171, 0, 0, 172, + 173, 214, 158, 159, 0, 215, 216, 63, 217, 0, + 0, 218, 0, 0, 0, 219, 160, 0, 0, 0, + 0, 0, 161, 220, 4, 221, 0, 222, 223, 162, + 224, 0, 0, 163, 0, 0, 0, 0, 0, 65, + 0, 0, 66, 18, 0, 0, 0, 0, 0, 0, + 225, 0, 128, 506, 0, 0, 227, 0, 0, 168, + 169, 170, 171, 0, 0, 172, 173, 214, 158, 159, + 0, 215, 216, 63, 217, 0, 0, 218, 0, 0, + 0, 219, 160, 0, 0, 0, 0, 0, 161, 220, + 4, 221, 0, 222, 223, 162, 224, 0, 0, 163, + 0, 0, 0, 0, 0, 65, 0, 0, 66, 18, + 0, 0, 0, 0, 0, 0, 225, 0, 128, 542, + 0, 0, 227, 0, 0, 168, 169, 170, 171, 0, + 0, 172, 173, 214, 158, 159, 0, 215, 216, 63, + 217, 0, 0, 218, 0, 0, 0, 219, 160, 0, + 0, 0, 0, 0, 161, 220, 4, 221, 0, 222, + 223, 162, 224, 0, 0, 163, 0, 0, 0, 0, + 0, 65, 0, 0, 66, 18, 0, 0, 0, 0, + 0, 0, 225, 0, 128, 0, 0, 0, 227, 0, + 0, 168, 169, 170, 171, 0, 0, 172, 173, 359, + 158, 159, 0, 215, 216, 63, 217, 0, 0, 218, + 0, 0, 0, 219, 160, 0, 0, 0, 0, 0, + 161, 220, 0, 221, 0, 222, 223, 162, 224, 0, + 0, 163, 0, 0, 0, 0, 0, 65, 0, 0, + 66, 18, 0, 0, 0, 0, 0, 0, 225, 0, + 128, 0, 0, 0, 227, 0, 0, 168, 169, 170, + 171, 0, 0, 172, 173, 359, 158, 159, 0, 522, + 216, 63, 217, 0, 0, 218, 0, 0, 0, 219, + 160, 0, 0, 0, 0, 0, 161, 220, 0, 221, + 0, 222, 223, 162, 224, 0, 0, 163, 0, 0, + 0, 0, 0, 65, 0, 0, 66, 18, 0, 0, + 0, 0, 0, 0, 225, 0, 128, 0, 0, 0, + 227, 0, 0, 168, 169, 170, 171, 0, 0, 172, + 173, 1, 158, 159, 0, 0, 0, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, + 0, 0, 161, 0, 0, 0, 0, 158, 159, 162, + 0, 0, 63, 163, 0, 0, 0, 0, 0, 65, + 0, 160, 66, 18, 0, 0, 0, 161, 0, 0, + 225, 0, 0, 0, 162, 0, 0, 0, 163, 168, + 169, 170, 171, 0, 65, 172, 173, 66, 18, 0, + 0, 0, 0, 63, 0, 225, 0, 0, 0, 0, + 0, 0, 160, 0, 168, 169, 170, 171, 161, 0, + 172, 173, 0, 0, 0, 162, 0, 0, 0, 163, + 0, 0, 0, 0, 0, 65, 0, 0, 66, 18, + 0, 0, 164, 165, 0, 0, 166, 0, 0, 0, + 0, 0, 0, 0, 0, 168, 169, 170, 171, 0, + 0, 172, 173 }; static const short yycheck[] = { 3, - 4, 213, 309, 192, 143, 88, 1, 121, 352, 5, - 37, 37, 93, 290, 0, 15, 225, 123, 104, 38, - 229, 230, 8, 9, 10, 119, 45, 8, 32, 33, - 47, 35, 115, 86, 117, 119, 63, 53, 63, 43, - 26, 68, 68, 29, 30, 62, 119, 119, 29, 53, - 72, 37, 138, 57, 44, 555, 510, 63, 44, 78, - 2, 44, 346, 5, 86, 55, 132, 133, 134, 135, - 95, 61, 55, 573, 140, 141, 103, 67, 61, 96, - 94, 97, 68, 367, 67, 75, 100, 87, 92, 93, - 86, 47, 119, 119, 36, 37, 94, 124, 40, 443, - 95, 44, 100, 197, 108, 211, 62, 50, 202, 99, - 204, 138, 566, 197, 72, 142, 99, 103, 76, 123, - 499, 63, 195, 206, 197, 197, 68, 52, 214, 297, - 72, 585, 341, 119, 76, 344, 304, 50, 306, 82, - 96, 101, 85, 86, 93, 86, 430, 526, 97, 57, - 529, 94, 101, 526, 158, 99, 529, 8, 99, 10, - 118, 103, 104, 470, 471, 192, 450, 97, 195, 82, - 197, 197, 85, 86, 86, 37, 118, 119, 29, 245, - 246, 247, 124, 277, 92, 93, 213, 99, 192, 94, - 132, 133, 134, 135, 99, 100, 138, 44, 140, 141, - 142, 63, 283, 510, 583, 482, 68, 211, 9, 97, - 583, 197, 591, 101, 61, 594, 355, 596, 591, 223, - 67, 594, 95, 596, 99, 26, 99, 213, 44, 30, - 257, 109, 516, 97, 94, 239, 240, 101, 515, 428, - 100, 103, 44, 44, 327, 61, 98, 65, 50, 67, - 192, 67, 99, 195, 72, 197, 95, 119, 76, 566, - 287, 100, 124, 290, 142, 143, 97, 94, 86, 273, - 97, 213, 214, 94, 101, 279, 97, 561, 585, 283, - 82, 347, 309, 85, 86, 99, 290, 101, 36, 94, - 502, 480, 40, 297, 99, 100, 92, 100, 575, 326, - 304, 97, 306, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 309, 72, 439, 407, 67, 76, 192, - 96, 499, 72, 195, 100, 197, 76, 94, 452, 94, - 326, 93, 97, 100, 94, 287, 86, 499, 290, 94, - 100, 213, 98, 94, 341, 100, 104, 344, 526, 100, - 238, 529, 98, 241, 499, 94, 44, 309, 462, 537, - 118, 100, 50, 94, 526, 489, 442, 529, 546, 100, - 44, 60, 192, 497, 326, 64, 50, 265, 95, 416, - 138, 526, 560, 271, 529, 98, 274, 18, 19, 20, - 21, 428, 280, 407, 82, 347, 98, 85, 86, 100, - 352, 253, 254, 255, 256, 583, 94, 511, 82, 99, - 100, 85, 86, 591, 428, 287, 594, 290, 596, 101, - 99, 583, 101, 95, 297, 97, 57, 91, 92, 591, - 499, 304, 594, 306, 596, 343, 309, 345, 583, 5, - 6, 7, 101, 480, 101, 482, 591, 99, 100, 594, - 101, 596, 340, 557, 326, 97, 214, 526, 91, 92, - 529, 11, 350, 12, 416, 502, 480, 355, 482, 13, - 290, 45, 46, 91, 92, 93, 428, 297, 515, 97, - 8, 9, 10, 101, 304, 499, 306, 3, 4, 309, - 442, 443, 91, 92, 91, 92, 93, 16, 17, 513, - 97, 515, 454, 391, 101, 14, 502, 95, 192, 397, - 398, 93, 526, 53, 583, 529, 95, 405, 555, 45, - 46, 97, 591, 537, 67, 594, 97, 596, 480, 44, - 482, 93, 546, 421, 422, 50, 573, 94, 575, 45, - 46, 555, 248, 249, 416, 96, 560, 250, 251, 252, - 502, 44, 67, 258, 259, 428, 67, 50, 93, 573, - 448, 575, 93, 515, 93, 88, 59, 82, 61, 583, - 85, 86, 93, 93, 67, 0, 93, 591, 88, 93, - 594, 99, 596, 8, 9, 10, 99, 99, 95, 82, - 93, 192, 85, 86, 99, 99, 98, 470, 471, 98, - 98, 26, 93, 555, 29, 30, 290, 480, 428, 482, - 99, 99, 37, 297, 99, 192, 99, 94, 506, 44, - 304, 573, 306, 575, 100, 309, 499, 66, 100, 44, - 502, 99, 98, 97, 86, 50, 98, 510, 94, 91, - 92, 93, 515, 68, 59, 97, 61, 94, 94, 101, - 470, 471, 67, 526, 99, 93, 529, 545, 93, 99, - 480, 549, 482, 551, 537, 94, 93, 82, 192, 93, - 85, 86, 95, 546, 94, 93, 56, 56, 99, 499, - 95, 96, 555, 94, 94, 94, 93, 560, 88, 290, - 510, 99, 88, 566, 119, 515, 297, 99, 99, 94, - 573, 99, 575, 304, 94, 306, 526, 99, 309, 529, - 583, 99, 585, 290, 0, 56, 44, 537, 591, 94, - 297, 594, 50, 596, 0, 257, 546, 304, 10, 306, - 46, 59, 309, 61, 80, 555, 197, 108, 195, 67, - 560, 326, 425, 45, 428, 68, 566, 463, 309, 553, - 553, 192, 463, 573, 82, 575, 309, 85, 86, 260, - 225, 261, 454, 583, -1, 585, 290, 95, 96, 263, - 262, 591, 197, 297, 594, -1, 596, 264, 44, -1, - 304, -1, 306, -1, 50, 309, 470, 471, 268, -1, - -1, 44, -1, 59, -1, 61, 480, 50, 482, -1, - -1, 67, -1, -1, -1, -1, 59, -1, 61, -1, - -1, -1, -1, -1, 67, 499, 82, -1, -1, 85, - 86, -1, -1, -1, -1, -1, 510, 428, -1, 82, - 96, 515, 85, 86, -1, -1, -1, -1, -1, -1, - -1, -1, 526, 96, -1, 529, -1, -1, -1, 290, - 192, 428, -1, 537, -1, -1, 297, -1, -1, -1, - -1, -1, 546, 304, -1, 306, -1, -1, 309, 470, - 471, 555, -1, -1, -1, -1, 560, -1, -1, 480, - -1, 482, 566, -1, -1, -1, -1, -1, -1, 573, - -1, 575, -1, 470, 471, -1, -1, -1, 499, 583, - -1, 585, -1, 480, 428, 482, -1, 591, -1, 510, - 594, -1, 596, -1, 515, -1, -1, -1, -1, -1, - -1, -1, 499, -1, 86, 526, -1, -1, 529, 91, - 92, 93, -1, 510, -1, 97, 537, -1, 515, 101, - -1, -1, -1, -1, -1, 546, 470, 471, 290, 526, - -1, -1, 529, -1, 555, 297, 480, -1, 482, 560, - 537, -1, 304, -1, 306, 566, -1, 309, -1, 546, - -1, -1, 573, -1, 575, 499, -1, -1, 555, -1, - -1, -1, 583, 560, 585, -1, 510, 428, -1, 566, - 591, 515, -1, 594, -1, 596, 573, -1, 575, -1, - -1, -1, 526, -1, -1, 529, 583, -1, 585, -1, - -1, -1, -1, 537, 591, -1, -1, 594, -1, 596, - -1, -1, 546, -1, -1, -1, -1, -1, -1, 470, - 471, 555, -1, -1, -1, -1, 560, -1, -1, 480, - -1, 482, 566, -1, -1, -1, -1, -1, -1, 573, - -1, 575, -1, -1, -1, -1, -1, -1, 499, 583, - -1, 585, 44, 45, 46, -1, -1, 591, 50, 510, - 594, -1, 596, -1, 515, -1, -1, 59, -1, -1, - -1, -1, -1, 65, -1, 526, 428, -1, 529, -1, - 72, -1, -1, -1, 76, -1, 537, -1, -1, -1, - 82, -1, -1, 85, 86, 546, -1, -1, -1, -1, - -1, 93, -1, -1, 555, -1, -1, -1, -1, 560, - 102, 103, 104, 105, -1, 566, 108, 109, 470, 471, - -1, -1, 573, -1, 575, -1, -1, -1, 480, -1, - 482, -1, 583, -1, 585, -1, -1, -1, -1, -1, - 591, -1, -1, 594, -1, 596, -1, 499, 132, 133, - 134, 135, -1, -1, -1, -1, 140, 141, 510, -1, - -1, -1, -1, 515, -1, -1, -1, -1, -1, -1, - 132, 133, 134, 135, 526, -1, -1, 529, 140, 141, - -1, -1, -1, -1, -1, 537, -1, -1, -1, -1, - -1, -1, -1, -1, 546, 45, 46, -1, -1, -1, - 50, -1, -1, 555, -1, -1, -1, -1, 560, 59, - -1, -1, -1, -1, 566, 65, -1, -1, -1, -1, - -1, 573, 72, 575, -1, -1, 76, -1, -1, -1, - -1, 583, 82, 585, -1, 85, 86, -1, -1, 591, - -1, -1, 594, 93, 596, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, -1, -1, 108, 109, - -1, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, -1, 258, 259, 260, 261, 262, 263, - 264, -1, -1, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, -1, 258, 259, 260, 261, - 262, 263, 264, 1, -1, 3, 4, -1, -1, -1, + 4, 235, 499, 128, 283, 112, 167, 254, 147, 102, + 5, 110, 1, 36, 0, 395, 39, 53, 15, 107, + 51, 107, 8, 9, 10, 389, 86, 107, 32, 33, + 53, 35, 53, 44, 57, 63, 57, 8, 42, 10, + 26, 107, 97, 29, 30, 133, 410, 133, 79, 51, + 61, 131, 138, 133, 140, 162, 67, 43, 29, 47, + 64, 97, 488, 488, 68, 51, 47, 133, 123, 488, + 125, 95, 74, 570, 62, 67, 107, 79, 63, 2, + 72, 62, 5, 106, 76, 106, 100, 142, 99, 112, + 87, 86, 589, 79, 86, 52, 476, 101, 102, 463, + 526, 526, 133, 529, 529, 107, 95, 526, 96, 111, + 529, 44, 116, 36, 94, 96, 39, 50, 92, 483, + 100, 107, 559, 97, 128, 111, 99, 44, 51, 131, + 53, 133, 54, 8, 57, 228, 222, 59, 55, 162, + 577, 505, 281, 147, 61, 94, 148, 133, 97, 82, + 67, 74, 85, 86, 29, 101, 79, 156, 157, 158, + 159, 587, 587, 68, 99, 164, 165, 89, 587, 595, + 595, 72, 598, 598, 600, 600, 595, 284, 182, 598, + 100, 600, 99, 106, 107, 86, 242, 86, 111, 112, + 97, 488, 44, 249, 295, 251, 101, 102, 299, 300, + 99, 565, 449, 450, 526, 128, 86, 529, 131, 61, + 133, 99, 491, 101, 218, 67, 44, 272, 94, 99, + 224, 97, 50, 97, 228, 148, 128, 461, 95, 526, + 232, 235, 529, 156, 157, 158, 159, 398, 242, 162, + 93, 164, 165, 166, 97, 249, 93, 251, 101, 44, + 44, 376, 499, 99, 82, 101, 50, 85, 86, 51, + 55, 284, 355, 98, 94, 587, 61, 97, 254, 271, + 504, 101, 67, 595, 98, 97, 598, 281, 600, 101, + 75, 283, 74, 384, 98, 271, 387, 79, 82, 293, + 587, 85, 86, 94, 91, 92, 94, 283, 595, 100, + 94, 598, 100, 600, 99, 309, 310, 95, 94, 232, + 128, 99, 235, 99, 100, 107, 315, 316, 317, 111, + 97, 96, 98, 570, 101, 100, 44, 18, 19, 20, + 21, 254, 50, 235, 459, 98, 128, 9, 94, 131, + 242, 133, 589, 50, 100, 579, 60, 249, 271, 251, + 64, 355, 254, 94, 26, 441, 148, 128, 30, 100, + 283, 284, 364, 94, 82, 95, 57, 85, 86, 100, + 162, 43, 376, 472, 166, 82, 94, 94, 85, 86, + 95, 94, 99, 100, 94, 93, 485, 100, 99, 100, + 100, 390, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 384, 512, 500, 387, 65, 235, 67, 94, + 386, 520, 388, 72, 242, 100, 53, 76, 91, 92, + 93, 249, 488, 251, 97, 100, 254, 86, 101, 86, + 232, 364, 101, 235, 91, 92, 93, 5, 6, 7, + 97, 99, 100, 376, 101, 459, 95, 461, 97, 91, + 92, 93, 254, 101, 235, 97, 101, 390, 101, 101, + 526, 242, 395, 529, 376, 561, 475, 97, 249, 271, + 251, 537, 11, 254, 488, 323, 324, 325, 326, 491, + 12, 283, 128, 13, 550, 14, 86, 93, 502, 93, + 504, 91, 92, 93, 93, 491, 93, 97, 564, 91, + 92, 101, 8, 9, 10, 320, 321, 322, 45, 46, + 3, 4, 526, 16, 17, 529, 91, 92, 44, 318, + 319, 587, 93, 537, 50, 327, 459, 88, 461, 595, + 45, 46, 598, 59, 600, 61, 550, 449, 450, 328, + 329, 67, 475, 476, 99, 559, 99, 459, 376, 461, + 564, 45, 46, 99, 487, 99, 82, 93, 491, 85, + 86, 95, 364, 577, 99, 579, 97, 67, 96, 95, + 96, 504, 97, 587, 376, 93, 488, 94, 67, 93, + 99, 595, 94, 99, 598, 66, 600, 499, 99, 235, + 128, 99, 504, 100, 99, 376, 242, 93, 100, 98, + 98, 44, 93, 249, 88, 251, 98, 50, 254, 94, + 98, 94, 44, 93, 526, 94, 93, 529, 50, 94, + 93, 449, 450, 99, 67, 537, 559, 59, 99, 61, + 93, 459, 97, 461, 98, 67, 95, 94, 550, 82, + 93, 56, 85, 86, 577, 56, 579, 559, 99, 94, + 82, 93, 564, 85, 86, 94, 94, 459, 570, 461, + 488, 88, 99, 95, 96, 577, 99, 579, 449, 450, + 99, 499, 94, 99, 128, 587, 504, 589, 459, 88, + 461, 99, 94, 595, 56, 99, 598, 94, 600, 491, + 0, 0, 327, 10, 45, 61, 116, 235, 526, 133, + 131, 529, 504, 373, 242, 271, 44, 488, 79, 537, + 557, 249, 254, 251, 557, 295, 254, 330, 499, 331, + 442, 254, 550, 504, 332, 334, 442, 487, 333, -1, + 376, 559, -1, 128, -1, 338, 564, -1, -1, -1, + -1, -1, 570, -1, -1, 526, -1, -1, 529, 577, + -1, 579, -1, -1, -1, -1, 537, 559, -1, 587, + -1, 589, -1, -1, -1, -1, -1, 595, -1, 550, + 598, -1, 600, -1, -1, 577, -1, 579, 559, -1, + 128, 235, -1, 564, 44, -1, -1, -1, 242, 570, + 50, -1, -1, -1, -1, 249, 577, 251, 579, 59, + 254, 61, -1, 449, 450, -1, 587, 67, 589, -1, + -1, -1, -1, 459, 595, 461, -1, 598, -1, 600, + 0, -1, 82, -1, -1, 85, 86, -1, 8, 9, + 10, -1, -1, -1, -1, -1, 96, -1, 376, -1, + 235, -1, 488, -1, -1, -1, 26, 242, -1, 29, + 30, -1, -1, 499, 249, 44, 251, -1, 504, 254, + -1, 50, -1, 43, -1, -1, -1, 44, -1, -1, + 59, 51, 61, 50, -1, -1, -1, -1, 67, -1, + 526, -1, 59, 529, 61, -1, -1, 235, -1, -1, + 67, 537, -1, 82, 242, -1, 85, 86, -1, 79, + -1, 249, -1, 251, 550, 82, 254, 96, 85, 86, + -1, 449, 450, 559, -1, -1, -1, -1, 564, -1, + -1, 459, 376, 461, 570, -1, -1, 107, -1, -1, + -1, 577, -1, 579, -1, -1, -1, -1, -1, -1, + -1, 587, -1, 589, -1, -1, -1, -1, -1, 595, + 488, -1, 598, 133, 600, -1, -1, -1, -1, -1, + -1, 499, -1, -1, -1, -1, 504, -1, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 376, -1, -1, -1, -1, -1, -1, 526, -1, + -1, 529, -1, -1, -1, 449, 450, -1, -1, 537, + -1, -1, -1, -1, -1, 459, -1, 461, -1, -1, + -1, -1, 550, -1, -1, -1, -1, 166, 167, -1, + -1, 559, -1, -1, -1, -1, 564, -1, 376, -1, + -1, -1, 570, -1, 488, -1, -1, -1, -1, 577, + -1, 579, -1, -1, -1, 499, -1, -1, -1, 587, + 504, 589, -1, -1, 449, 450, -1, 595, -1, -1, + 598, -1, 600, -1, 459, -1, 461, 216, -1, -1, + 219, -1, 526, -1, -1, 529, 225, -1, -1, -1, + -1, -1, -1, 537, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 488, -1, -1, 550, -1, -1, -1, + -1, 449, 450, -1, 499, 559, -1, -1, -1, 504, + 564, 459, -1, 461, -1, -1, 570, -1, 156, 157, + 158, 159, -1, 577, -1, 579, 164, 165, -1, -1, + -1, 526, -1, 587, 529, 589, -1, -1, -1, -1, + 488, 595, 537, -1, 598, -1, 600, -1, -1, -1, + -1, 499, -1, -1, -1, 550, 504, -1, -1, 308, + -1, -1, 311, -1, 559, -1, -1, -1, -1, 564, + -1, -1, -1, -1, -1, 570, -1, -1, 526, -1, + -1, 529, 577, -1, 579, -1, 335, -1, -1, 537, + 339, -1, 587, -1, 589, -1, 345, 346, -1, -1, + 595, -1, 550, 598, 353, 600, 156, 157, 158, 159, + -1, 559, -1, -1, 164, 165, 564, -1, -1, -1, + 369, 370, 570, -1, -1, -1, -1, -1, -1, 577, + -1, 579, -1, -1, 383, -1, -1, -1, -1, 587, + -1, 589, -1, -1, 393, -1, -1, 595, -1, 398, + 598, -1, 600, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + 328, 329, 330, 331, 332, 333, 334, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45, 46, -1, - -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, - -1, 59, -1, 347, -1, -1, -1, 65, 352, -1, - -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, - -1, -1, -1, -1, 82, 347, -1, 85, 86, -1, - 352, 89, 90, 50, -1, 93, -1, -1, -1, -1, - -1, -1, 59, -1, 102, 103, 104, 105, 65, -1, - 108, 109, -1, -1, -1, 72, -1, -1, -1, 76, - 3, 4, -1, -1, -1, 82, -1, -1, 85, 86, - -1, -1, 89, 90, -1, -1, 93, -1, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, -1, - -1, 108, 109, -1, -1, -1, -1, -1, 442, 443, - -1, -1, 45, 46, -1, -1, -1, 50, -1, -1, - 454, -1, -1, -1, -1, -1, 59, -1, -1, -1, - 442, 443, 65, -1, -1, 3, 4, -1, -1, 72, - -1, -1, 454, 76, -1, -1, -1, -1, -1, 82, - -1, -1, 85, 86, -1, -1, 89, 90, -1, -1, - 93, -1, 95, 96, -1, -1, -1, 100, -1, 102, - 103, 104, 105, -1, -1, 108, 109, 45, 46, -1, - -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, - -1, 59, -1, -1, -1, -1, -1, 65, -1, -1, - 3, 4, -1, -1, 72, -1, -1, -1, 76, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, - -1, 89, 90, -1, -1, 93, -1, 95, 96, -1, - -1, -1, -1, -1, 102, 103, 104, 105, -1, -1, - 108, 109, 45, 46, -1, -1, -1, 50, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 481, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 495, -1, -1, -1, + -1, -1, 390, -1, -1, -1, -1, 395, 1, -1, + 3, 4, -1, -1, -1, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, 328, 329, + 330, 331, 332, 333, 334, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 549, -1, 45, 46, 553, -1, 555, 50, -1, -1, -1, 3, 4, -1, -1, -1, 59, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, - -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, - -1, -1, 85, 86, -1, -1, 89, 90, -1, -1, - 93, -1, 95, 45, 46, -1, -1, -1, 50, 102, + -1, -1, -1, 76, -1, -1, -1, 475, 476, 82, + 390, -1, 85, 86, -1, 395, 89, 90, -1, 487, + 93, -1, -1, 45, 46, -1, -1, -1, 50, 102, 103, 104, 105, -1, -1, 108, 109, 59, -1, -1, -1, -1, -1, 65, -1, -1, 3, 4, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, 90, -1, - -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, + -1, 93, -1, 95, 96, -1, -1, -1, 100, -1, 102, 103, 104, 105, -1, -1, 108, 109, 45, 46, - -1, -1, -1, 50, -1, -1, -1, 3, 4, -1, - -1, -1, 59, -1, -1, -1, -1, -1, 65, -1, - -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, + -1, -1, -1, 50, -1, 475, 476, -1, -1, -1, + -1, -1, 59, -1, -1, -1, -1, 487, 65, -1, + -1, 3, 4, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, - -1, -1, 89, 90, -1, -1, 93, -1, -1, 45, - 46, -1, 99, -1, 50, 102, 103, 104, 105, -1, - -1, 108, 109, 59, -1, -1, -1, -1, -1, 65, - -1, -1, 3, 4, -1, -1, 72, -1, -1, -1, - 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, - 86, -1, -1, 89, 90, -1, -1, 93, -1, -1, - -1, -1, 98, -1, -1, -1, 102, 103, 104, 105, - -1, -1, 108, 109, 45, 46, -1, -1, -1, 50, - -1, -1, -1, 3, 4, -1, -1, -1, 59, -1, - -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, + -1, -1, 89, 90, -1, -1, 93, -1, 95, 96, + -1, -1, -1, -1, -1, 102, 103, 104, 105, -1, + -1, 108, 109, 45, 46, -1, -1, -1, 50, -1, + -1, -1, 3, 4, -1, -1, -1, 59, -1, -1, + -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, + 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, + 82, -1, -1, 85, 86, -1, -1, 89, 90, -1, + -1, 93, -1, 95, 45, 46, -1, -1, -1, 50, + 102, 103, 104, 105, -1, -1, 108, 109, 59, -1, + -1, -1, -1, -1, 65, -1, -1, 3, 4, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, 90, - -1, -1, 93, 94, -1, 45, 46, -1, -1, -1, - 50, 102, 103, 104, 105, -1, -1, 108, 109, 59, - -1, -1, -1, -1, -1, 65, -1, -1, 3, 4, - -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, - -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, - 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, - -1, -1, 102, 103, 104, 105, -1, -1, 108, 109, - 45, 46, -1, -1, -1, 50, -1, -1, -1, 3, - 4, -1, -1, -1, 59, -1, -1, -1, -1, -1, - 65, -1, -1, -1, -1, -1, -1, 72, -1, -1, + -1, -1, 93, -1, -1, -1, -1, -1, 99, -1, + -1, 102, 103, 104, 105, -1, -1, 108, 109, 45, + 46, -1, -1, -1, 50, -1, -1, -1, 3, 4, + -1, -1, -1, 59, -1, -1, -1, -1, -1, 65, + -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, + 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, + 86, -1, -1, 89, 90, -1, -1, 93, 94, -1, + 45, 46, -1, -1, -1, 50, 102, 103, 104, 105, + -1, -1, 108, 109, 59, -1, -1, -1, -1, -1, + 65, -1, -1, 3, 4, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, 90, -1, -1, 93, -1, - -1, 45, 46, 98, -1, -1, 50, 102, 103, 104, - 105, -1, -1, 108, 109, 59, -1, -1, -1, -1, - -1, 65, -1, -1, 3, 4, -1, -1, 72, -1, + -1, -1, -1, 98, -1, -1, -1, 102, 103, 104, + 105, -1, -1, 108, 109, 45, 46, -1, -1, -1, + 50, -1, -1, -1, 3, 4, -1, -1, -1, 59, + -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, + -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, + -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, + 90, -1, -1, 93, -1, -1, 45, 46, -1, 99, + -1, 50, 102, 103, 104, 105, -1, -1, 108, 109, + 59, -1, -1, -1, -1, -1, 65, -1, -1, 3, + 4, -1, -1, 72, -1, -1, -1, 76, -1, -1, + -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, + 89, 90, -1, -1, 93, -1, -1, -1, -1, 98, + -1, -1, -1, 102, 103, 104, 105, -1, -1, 108, + 109, 45, 46, -1, -1, -1, 50, -1, -1, -1, + 3, 4, -1, -1, -1, 59, -1, -1, -1, -1, + -1, 65, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, 90, -1, -1, 93, - -1, -1, -1, -1, -1, 99, -1, -1, 102, 103, - 104, 105, -1, -1, 108, 109, 45, 46, -1, -1, - -1, 50, -1, -1, -1, 3, 4, -1, -1, -1, - 59, -1, -1, -1, -1, -1, 65, -1, -1, -1, - -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, - -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, - 89, 90, -1, -1, 93, 94, -1, 45, 46, -1, - -1, -1, 50, 102, 103, 104, 105, -1, -1, 108, - 109, 59, -1, -1, -1, -1, -1, 65, -1, -1, - 3, 4, -1, -1, 72, -1, -1, -1, 76, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, - -1, 89, 90, -1, -1, 93, 94, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, -1, -1, - 108, 109, 45, 46, -1, -1, -1, 50, -1, -1, - -1, 3, 4, -1, -1, -1, 59, -1, -1, -1, - -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, + 94, -1, 45, 46, -1, -1, -1, 50, 102, 103, + 104, 105, -1, -1, 108, 109, 59, -1, -1, -1, + -1, -1, 65, -1, -1, 3, 4, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, 90, -1, -1, - 93, 94, -1, 45, 46, -1, -1, -1, 50, 102, - 103, 104, 105, -1, -1, 108, 109, 59, -1, -1, - -1, -1, -1, 65, -1, -1, 3, 4, -1, -1, + 93, 94, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, -1, -1, 108, 109, 45, 46, -1, + -1, -1, 50, -1, -1, -1, 3, 4, -1, -1, + -1, 59, -1, -1, -1, -1, -1, 65, -1, -1, + -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, + -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, + -1, 89, 90, -1, -1, 93, 94, -1, 45, 46, + -1, -1, -1, 50, 102, 103, 104, 105, -1, -1, + 108, 109, 59, -1, -1, -1, -1, -1, 65, -1, + -1, 3, 4, -1, -1, 72, -1, -1, -1, 76, + -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, + -1, -1, 89, 90, -1, -1, 93, 94, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, -1, + -1, 108, 109, 45, 46, -1, -1, -1, 50, -1, + -1, -1, 3, 4, -1, -1, -1, 59, -1, -1, + -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, 89, 90, -1, - -1, 93, -1, -1, -1, -1, -1, 99, -1, -1, - 102, 103, 104, 105, -1, -1, 108, 109, 45, 46, - -1, -1, -1, 50, -1, -1, -1, 3, 4, -1, - -1, -1, 59, -1, -1, -1, -1, -1, 65, -1, - -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, - -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, - -1, -1, 89, 90, -1, -1, 93, 94, -1, 45, - 46, -1, -1, -1, 50, 102, 103, 104, 105, -1, - -1, 108, 109, 59, -1, -1, -1, -1, -1, 65, + -1, 93, 94, -1, 45, 46, -1, -1, -1, 50, + 102, 103, 104, 105, -1, -1, 108, 109, 59, -1, + -1, -1, -1, -1, 65, -1, -1, 3, 4, -1, + -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, -1, -1, 89, 90, + -1, -1, 93, -1, -1, -1, -1, -1, 99, -1, + -1, 102, 103, 104, 105, -1, -1, 108, 109, 45, + 46, -1, -1, -1, 50, -1, -1, -1, 3, 4, + -1, -1, -1, 59, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, - 86, -1, -1, 89, 90, -1, -1, 93, -1, -1, - -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, - -1, -1, 108, 109, 44, 45, 46, 47, 48, 49, - 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, - -1, -1, 62, -1, -1, 65, 66, 67, 68, -1, - 70, 71, 72, 73, -1, -1, 76, -1, -1, -1, - -1, -1, 82, -1, -1, 85, 86, -1, -1, -1, - -1, -1, -1, 93, -1, 95, 96, -1, -1, 99, - -1, -1, 102, 103, 104, 105, -1, -1, 108, 109, - 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, - 54, -1, -1, -1, 58, 59, -1, -1, 62, -1, - -1, 65, 66, 67, 68, -1, 70, 71, 72, 73, - -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, - -1, 85, 86, -1, -1, -1, -1, -1, -1, 93, - -1, 95, 96, -1, -1, 99, -1, -1, 102, 103, - 104, 105, -1, -1, 108, 109, 44, 45, 46, -1, - 48, 49, 50, 51, -1, -1, 54, -1, -1, -1, - 58, 59, -1, -1, -1, -1, -1, 65, 66, 67, - 68, -1, 70, 71, 72, 73, -1, -1, 76, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, - -1, -1, -1, -1, -1, 93, -1, 95, 96, -1, - -1, 99, -1, -1, 102, 103, 104, 105, -1, -1, - 108, 109, 44, 45, 46, -1, 48, 49, 50, 51, - -1, -1, 54, -1, -1, -1, 58, 59, -1, -1, - -1, -1, -1, 65, 66, 67, 68, -1, 70, 71, - 72, 73, -1, -1, 76, -1, -1, -1, -1, -1, - 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, - -1, 93, -1, 95, 96, -1, -1, 99, -1, -1, - 102, 103, 104, 105, -1, -1, 108, 109, 44, 45, - 46, -1, 48, 49, 50, 51, -1, -1, 54, -1, - -1, -1, 58, 59, -1, -1, -1, -1, -1, 65, - 66, 67, 68, -1, 70, 71, 72, 73, -1, -1, - 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, - 86, -1, -1, -1, -1, -1, -1, 93, -1, 95, - 96, -1, -1, 99, -1, -1, 102, 103, 104, 105, - -1, -1, 108, 109, 44, 45, 46, -1, 48, 49, - 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, - -1, -1, -1, -1, -1, 65, 66, 67, 68, -1, - 70, 71, 72, 73, -1, -1, 76, -1, -1, -1, - -1, -1, 82, -1, -1, 85, 86, -1, -1, -1, - -1, -1, -1, 93, -1, 95, 96, -1, -1, 99, - -1, -1, 102, 103, 104, 105, -1, -1, 108, 109, - 44, 45, 46, -1, 48, 49, 50, 51, -1, -1, - 54, -1, -1, -1, 58, 59, -1, -1, -1, -1, - -1, 65, 66, 67, 68, -1, 70, 71, 72, 73, - -1, -1, 76, -1, -1, -1, -1, -1, 82, -1, - -1, 85, 86, -1, -1, -1, -1, -1, -1, 93, - -1, 95, 96, -1, -1, 99, -1, -1, 102, 103, - 104, 105, -1, -1, 108, 109, 44, 45, 46, -1, - 48, 49, 50, 51, -1, -1, 54, -1, -1, -1, - 58, 59, -1, -1, -1, -1, -1, 65, 66, 67, - 68, -1, 70, 71, 72, 73, -1, -1, 76, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, -1, - -1, -1, -1, -1, -1, 93, -1, 95, 96, -1, - -1, 99, -1, -1, 102, 103, 104, 105, -1, -1, - 108, 109, 44, 45, 46, -1, 48, 49, 50, 51, - -1, -1, 54, -1, -1, -1, 58, 59, -1, -1, - -1, -1, -1, 65, 66, 67, 68, -1, 70, 71, - 72, 73, -1, -1, 76, -1, -1, -1, -1, -1, - 82, -1, -1, 85, 86, -1, -1, -1, -1, -1, - -1, 93, -1, 95, -1, -1, -1, 99, -1, -1, - 102, 103, 104, 105, -1, -1, 108, 109, 44, 45, - 46, -1, 48, 49, 50, 51, -1, -1, 54, -1, - -1, -1, 58, 59, -1, -1, -1, -1, -1, 65, - 66, -1, 68, -1, 70, 71, 72, 73, -1, -1, - 76, -1, -1, -1, -1, -1, 82, -1, -1, 85, - 86, -1, -1, -1, -1, -1, -1, 93, -1, 95, - -1, -1, -1, 99, -1, -1, 102, 103, 104, 105, - -1, -1, 108, 109, 44, 45, 46, -1, 48, 49, - 50, 51, -1, -1, 54, -1, -1, -1, 58, 59, - -1, -1, -1, -1, -1, 65, 66, -1, 68, -1, - 70, 71, 72, 73, -1, -1, 76, -1, -1, -1, - -1, -1, 82, -1, -1, 85, 86, -1, -1, -1, - -1, -1, -1, 93, -1, 95, -1, -1, -1, 99, - -1, -1, 102, 103, 104, 105, -1, -1, 108, 109 + 86, -1, -1, 89, 90, -1, -1, 93, 94, -1, + 45, 46, -1, -1, -1, 50, 102, 103, 104, 105, + -1, -1, 108, 109, 59, -1, -1, -1, -1, -1, + 65, -1, -1, -1, -1, -1, -1, 72, -1, -1, + -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, + 85, 86, -1, -1, 89, 90, -1, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 105, -1, -1, 108, 109, 44, 45, 46, 47, 48, + 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, + 59, -1, -1, 62, -1, -1, 65, 66, 67, 68, + -1, 70, 71, 72, 73, -1, -1, 76, -1, -1, + -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, + -1, -1, -1, -1, 93, -1, 95, 96, -1, -1, + 99, -1, -1, 102, 103, 104, 105, -1, -1, 108, + 109, 44, 45, 46, 47, 48, 49, 50, 51, -1, + -1, 54, -1, -1, -1, 58, 59, -1, -1, 62, + -1, -1, 65, 66, 67, 68, -1, 70, 71, 72, + 73, -1, -1, 76, -1, -1, -1, -1, -1, 82, + -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, + 93, -1, 95, 96, -1, -1, 99, -1, -1, 102, + 103, 104, 105, -1, -1, 108, 109, 44, 45, 46, + -1, 48, 49, 50, 51, -1, -1, 54, -1, -1, + -1, 58, 59, -1, -1, -1, -1, -1, 65, 66, + 67, 68, -1, 70, 71, 72, 73, -1, -1, 76, + -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, + -1, -1, -1, -1, -1, -1, 93, -1, 95, 96, + -1, -1, 99, -1, -1, 102, 103, 104, 105, -1, + -1, 108, 109, 44, 45, 46, -1, 48, 49, 50, + 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, + -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, + 71, 72, 73, -1, -1, 76, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, -1, -1, -1, -1, + -1, -1, 93, -1, 95, 96, -1, -1, 99, -1, + -1, 102, 103, 104, 105, -1, -1, 108, 109, 44, + 45, 46, -1, 48, 49, 50, 51, -1, -1, 54, + -1, -1, -1, 58, 59, -1, -1, -1, -1, -1, + 65, 66, 67, 68, -1, 70, 71, 72, 73, -1, + -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, + 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, + 95, 96, -1, -1, 99, -1, -1, 102, 103, 104, + 105, -1, -1, 108, 109, 44, 45, 46, -1, 48, + 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, + 59, -1, -1, -1, -1, -1, 65, 66, 67, 68, + -1, 70, 71, 72, 73, -1, -1, 76, -1, -1, + -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, + -1, -1, -1, -1, 93, -1, 95, 96, -1, -1, + 99, -1, -1, 102, 103, 104, 105, -1, -1, 108, + 109, 44, 45, 46, -1, 48, 49, 50, 51, -1, + -1, 54, -1, -1, -1, 58, 59, -1, -1, -1, + -1, -1, 65, 66, 67, 68, -1, 70, 71, 72, + 73, -1, -1, 76, -1, -1, -1, -1, -1, 82, + -1, -1, 85, 86, -1, -1, -1, -1, -1, -1, + 93, -1, 95, 96, -1, -1, 99, -1, -1, 102, + 103, 104, 105, -1, -1, 108, 109, 44, 45, 46, + -1, 48, 49, 50, 51, -1, -1, 54, -1, -1, + -1, 58, 59, -1, -1, -1, -1, -1, 65, 66, + 67, 68, -1, 70, 71, 72, 73, -1, -1, 76, + -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, + -1, -1, -1, -1, -1, -1, 93, -1, 95, 96, + -1, -1, 99, -1, -1, 102, 103, 104, 105, -1, + -1, 108, 109, 44, 45, 46, -1, 48, 49, 50, + 51, -1, -1, 54, -1, -1, -1, 58, 59, -1, + -1, -1, -1, -1, 65, 66, 67, 68, -1, 70, + 71, 72, 73, -1, -1, 76, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, -1, -1, -1, -1, + -1, -1, 93, -1, 95, -1, -1, -1, 99, -1, + -1, 102, 103, 104, 105, -1, -1, 108, 109, 44, + 45, 46, -1, 48, 49, 50, 51, -1, -1, 54, + -1, -1, -1, 58, 59, -1, -1, -1, -1, -1, + 65, 66, -1, 68, -1, 70, 71, 72, 73, -1, + -1, 76, -1, -1, -1, -1, -1, 82, -1, -1, + 85, 86, -1, -1, -1, -1, -1, -1, 93, -1, + 95, -1, -1, -1, 99, -1, -1, 102, 103, 104, + 105, -1, -1, 108, 109, 44, 45, 46, -1, 48, + 49, 50, 51, -1, -1, 54, -1, -1, -1, 58, + 59, -1, -1, -1, -1, -1, 65, 66, -1, 68, + -1, 70, 71, 72, 73, -1, -1, 76, -1, -1, + -1, -1, -1, 82, -1, -1, 85, 86, -1, -1, + -1, -1, -1, -1, 93, -1, 95, -1, -1, -1, + 99, -1, -1, 102, 103, 104, 105, -1, -1, 108, + 109, 44, 45, 46, -1, -1, -1, 50, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, + -1, -1, 65, -1, -1, -1, -1, 45, 46, 72, + -1, -1, 50, 76, -1, -1, -1, -1, -1, 82, + -1, 59, 85, 86, -1, -1, -1, 65, -1, -1, + 93, -1, -1, -1, 72, -1, -1, -1, 76, 102, + 103, 104, 105, -1, 82, 108, 109, 85, 86, -1, + -1, -1, -1, 50, -1, 93, -1, -1, -1, -1, + -1, -1, 59, -1, 102, 103, 104, 105, 65, -1, + 108, 109, -1, -1, -1, 72, -1, -1, -1, 76, + -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, + -1, -1, 89, 90, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, 102, 103, 104, 105, -1, + -1, 108, 109 }; #define YYPURE 1 @@ -1920,50 +1951,50 @@ yyreduce: switch (yyn) { case 10: -#line 197 "./parse-scan.y" +#line 203 "./parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("int"); ; break;} case 11: -#line 202 "./parse-scan.y" +#line 208 "./parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("double"); ; break;} case 12: -#line 207 "./parse-scan.y" +#line 213 "./parse-scan.y" { /* use preset global here. FIXME */ yyval.node = xstrdup ("boolean"); ; break;} case 19: -#line 233 "./parse-scan.y" +#line 239 "./parse-scan.y" { yyval.node = concat ("[", yyvsp[-2].node, NULL); ; break;} case 20: -#line 237 "./parse-scan.y" +#line 243 "./parse-scan.y" { yyval.node = concat ("[", yyvsp[-2].node, NULL); ; break;} case 24: -#line 254 "./parse-scan.y" +#line 260 "./parse-scan.y" { yyval.node = concat (yyvsp[-2].node, ".", yyvsp[0].node, NULL); ; break;} case 38: -#line 286 "./parse-scan.y" +#line 292 "./parse-scan.y" { package_name = yyvsp[-1].node; ; break;} case 46: -#line 313 "./parse-scan.y" +#line 319 "./parse-scan.y" { if (yyvsp[0].value == PUBLIC_TK) modifier_value++; @@ -1973,7 +2004,7 @@ case 46: ; break;} case 47: -#line 321 "./parse-scan.y" +#line 327 "./parse-scan.y" { if (yyvsp[0].value == PUBLIC_TK) modifier_value++; @@ -1983,57 +2014,65 @@ case 47: ; break;} case 48: -#line 333 "./parse-scan.y" +#line 339 "./parse-scan.y" { report_class_declaration(yyvsp[-2].node); modifier_value = 0; ; break;} case 50: -#line 339 "./parse-scan.y" +#line 345 "./parse-scan.y" { report_class_declaration(yyvsp[-2].node); ; break;} case 56: -#line 353 "./parse-scan.y" +#line 359 "./parse-scan.y" { USE_ABSORBER; ; break;} case 57: -#line 355 "./parse-scan.y" +#line 361 "./parse-scan.y" { USE_ABSORBER; ; break;} +case 58: +#line 366 "./parse-scan.y" +{ pop_class_context (); ; + break;} +case 59: +#line 368 "./parse-scan.y" +{ pop_class_context (); ; + break;} case 70: -#line 385 "./parse-scan.y" +#line 393 "./parse-scan.y" { USE_ABSORBER; ; break;} case 71: -#line 387 "./parse-scan.y" +#line 395 "./parse-scan.y" { modifier_value = 0; ; break;} case 76: -#line 403 "./parse-scan.y" +#line 411 "./parse-scan.y" { bracket_count = 0; USE_ABSORBER; ; break;} case 77: -#line 405 "./parse-scan.y" +#line 413 "./parse-scan.y" { ++bracket_count; ; break;} case 81: -#line 420 "./parse-scan.y" +#line 428 "./parse-scan.y" { USE_ABSORBER; ; break;} case 83: -#line 423 "./parse-scan.y" +#line 431 "./parse-scan.y" { modifier_value = 0; ; break;} case 84: -#line 425 "./parse-scan.y" +#line 433 "./parse-scan.y" { report_main_declaration (yyvsp[-1].declarator); modifier_value = 0; ; break;} case 85: -#line 433 "./parse-scan.y" +#line 441 "./parse-scan.y" { struct method_declarator *d; NEW_METHOD_DECLARATOR (d, yyvsp[-2].node, NULL); @@ -2041,7 +2080,7 @@ case 85: ; break;} case 86: -#line 439 "./parse-scan.y" +#line 447 "./parse-scan.y" { struct method_declarator *d; NEW_METHOD_DECLARATOR (d, yyvsp[-3].node, yyvsp[-1].node); @@ -2049,13 +2088,13 @@ case 86: ; break;} case 89: -#line 450 "./parse-scan.y" +#line 458 "./parse-scan.y" { yyval.node = concat (yyvsp[-2].node, ",", yyvsp[0].node, NULL); ; break;} case 90: -#line 457 "./parse-scan.y" +#line 465 "./parse-scan.y" { USE_ABSORBER; if (bracket_count) @@ -2072,7 +2111,7 @@ case 90: ; break;} case 91: -#line 472 "./parse-scan.y" +#line 480 "./parse-scan.y" { if (bracket_count) { @@ -2088,107 +2127,115 @@ case 91: ; break;} case 94: -#line 493 "./parse-scan.y" +#line 501 "./parse-scan.y" { USE_ABSORBER; ; break;} case 95: -#line 495 "./parse-scan.y" +#line 503 "./parse-scan.y" { USE_ABSORBER; ; break;} case 101: -#line 512 "./parse-scan.y" +#line 520 "./parse-scan.y" { USE_ABSORBER; ; break;} case 103: -#line 523 "./parse-scan.y" +#line 531 "./parse-scan.y" { modifier_value = 0; ; break;} case 105: -#line 528 "./parse-scan.y" +#line 536 "./parse-scan.y" { modifier_value = 0; ; break;} case 106: -#line 535 "./parse-scan.y" +#line 543 "./parse-scan.y" { USE_ABSORBER; ; break;} case 107: -#line 537 "./parse-scan.y" +#line 545 "./parse-scan.y" { USE_ABSORBER; ; break;} case 114: -#line 554 "./parse-scan.y" +#line 562 "./parse-scan.y" { USE_ABSORBER; ; break;} case 115: -#line 556 "./parse-scan.y" +#line 564 "./parse-scan.y" { USE_ABSORBER; ; break;} case 118: -#line 568 "./parse-scan.y" +#line 576 "./parse-scan.y" +{ report_class_declaration (yyvsp[0].node); modifier_value = 0; ; + break;} +case 120: +#line 579 "./parse-scan.y" +{ report_class_declaration (yyvsp[0].node); modifier_value = 0; ; + break;} +case 122: +#line 582 "./parse-scan.y" { report_class_declaration (yyvsp[-1].node); modifier_value = 0; ; break;} -case 119: -#line 570 "./parse-scan.y" +case 124: +#line 585 "./parse-scan.y" { report_class_declaration (yyvsp[-1].node); modifier_value = 0; ; break;} -case 120: -#line 572 "./parse-scan.y" -{ report_class_declaration (yyvsp[-2].node); modifier_value = 0; ; +case 128: +#line 596 "./parse-scan.y" +{ pop_class_context (); ; break;} -case 121: -#line 574 "./parse-scan.y" -{ report_class_declaration (yyvsp[-2].node); modifier_value = 0; ; +case 129: +#line 598 "./parse-scan.y" +{ pop_class_context (); ; break;} -case 148: -#line 643 "./parse-scan.y" +case 152: +#line 657 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 149: -#line 645 "./parse-scan.y" +case 153: +#line 659 "./parse-scan.y" { modifier_value = 0; ; break;} -case 173: -#line 685 "./parse-scan.y" +case 177: +#line 699 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 226: -#line 832 "./parse-scan.y" +case 230: +#line 846 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 243: -#line 872 "./parse-scan.y" +case 247: +#line 886 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 244: -#line 874 "./parse-scan.y" +case 248: +#line 888 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 246: -#line 880 "./parse-scan.y" +case 250: +#line 894 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 255: -#line 902 "./parse-scan.y" +case 259: +#line 916 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 273: -#line 944 "./parse-scan.y" +case 277: +#line 958 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 274: -#line 946 "./parse-scan.y" +case 278: +#line 960 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 279: -#line 955 "./parse-scan.y" +case 283: +#line 969 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 282: -#line 962 "./parse-scan.y" +case 286: +#line 976 "./parse-scan.y" { USE_ABSORBER; ; break;} -case 337: -#line 1081 "./parse-scan.y" +case 341: +#line 1095 "./parse-scan.y" { USE_ABSORBER; ; break;} } @@ -2413,7 +2460,7 @@ yyerrhandle: } return 1; } -#line 1099 "./parse-scan.y" +#line 1113 "./parse-scan.y" /* Create a new parser context */ @@ -2428,7 +2475,33 @@ java_push_parser_context () ctxp = new; } +static void +push_class_context (name) + const char *name; +{ + size_t name_length = strlen (name); + inner_qualifier = xrealloc (inner_qualifier, + inner_qualifier_length + name_length+2); + memcpy (inner_qualifier+inner_qualifier_length, name, name_length); + inner_qualifier_length += name_length; + inner_qualifier [inner_qualifier_length] = '$'; + inner_qualifier [++inner_qualifier_length] = '\0'; +} + +static void +pop_class_context () +{ + while (--inner_qualifier_length > 0 + && inner_qualifier [inner_qualifier_length-1] != '$') + ; + inner_qualifier = xrealloc (inner_qualifier, inner_qualifier_length+1); + inner_qualifier [inner_qualifier_length] = '\0'; + if (inner_qualifier_length == -1) + inner_qualifier_length = 0; +} + /* Actions defined here */ +#define INNER_QUALIFIER (inner_qualifier ? inner_qualifier : "") static void report_class_declaration (name) @@ -2446,11 +2519,12 @@ report_class_declaration (name) } if (package_name) - fprintf (out, "%s.%s ", package_name, name); + fprintf (out, "%s.%s%s ", package_name, INNER_QUALIFIER, name); else - fprintf (out, "%s ", name); + fprintf (out, "%s%s ", INNER_QUALIFIER, name); } - + + push_class_context (name); current_class = name; } diff --git a/gcc/java/parse-scan.y b/gcc/java/parse-scan.y index 8d8577baf98..73a46ab2d54 100644 --- a/gcc/java/parse-scan.y +++ b/gcc/java/parse-scan.y @@ -66,6 +66,10 @@ static int absorber; static const char *current_class; static const char *package_name; +/* Keep track of the current inner class qualifier. */ +static char *inner_qualifier; +static int inner_qualifier_length; + /* Keep track of whether things have be listed before. */ static int previous_output; @@ -92,6 +96,8 @@ struct method_declarator { /* Two actions for this grammar */ static void report_class_declaration PARAMS ((const char *)); static void report_main_declaration PARAMS ((struct method_declarator *)); +static void push_class_context PARAMS ((const char *)); +static void pop_class_context PARAMS ((void)); #include "lex.h" #include "parse.h" @@ -357,7 +363,9 @@ interface_type_list: class_body: OCB_TK CCB_TK + { pop_class_context (); } | OCB_TK class_body_declarations CCB_TK + { pop_class_context (); } ; class_body_declarations: @@ -564,14 +572,18 @@ this_or_super: /* Added, simplifies error diagnostics */ /* 19.9 Productions from 9: Interfaces */ /* 19.9.1 Productions from 9.1: Interfaces Declarations */ interface_declaration: - INTERFACE_TK identifier interface_body + INTERFACE_TK identifier { report_class_declaration ($2); modifier_value = 0; } -| modifiers INTERFACE_TK identifier interface_body + interface_body +| modifiers INTERFACE_TK identifier { report_class_declaration ($3); modifier_value = 0; } -| INTERFACE_TK identifier extends_interfaces interface_body + interface_body +| INTERFACE_TK identifier extends_interfaces { report_class_declaration ($2); modifier_value = 0; } -| modifiers INTERFACE_TK identifier extends_interfaces interface_body + interface_body +| modifiers INTERFACE_TK identifier extends_interfaces { report_class_declaration ($3); modifier_value = 0; } + interface_body ; extends_interfaces: @@ -581,7 +593,9 @@ extends_interfaces: interface_body: OCB_TK CCB_TK + { pop_class_context (); } | OCB_TK interface_member_declarations CCB_TK + { pop_class_context (); } ; interface_member_declarations: @@ -1110,7 +1124,33 @@ java_push_parser_context () ctxp = new; } +static void +push_class_context (name) + const char *name; +{ + size_t name_length = strlen (name); + inner_qualifier = xrealloc (inner_qualifier, + inner_qualifier_length + name_length+2); + memcpy (inner_qualifier+inner_qualifier_length, name, name_length); + inner_qualifier_length += name_length; + inner_qualifier [inner_qualifier_length] = '$'; + inner_qualifier [++inner_qualifier_length] = '\0'; +} + +static void +pop_class_context () +{ + while (--inner_qualifier_length > 0 + && inner_qualifier [inner_qualifier_length-1] != '$') + ; + inner_qualifier = xrealloc (inner_qualifier, inner_qualifier_length+1); + inner_qualifier [inner_qualifier_length] = '\0'; + if (inner_qualifier_length == -1) + inner_qualifier_length = 0; +} + /* Actions defined here */ +#define INNER_QUALIFIER (inner_qualifier ? inner_qualifier : "") static void report_class_declaration (name) @@ -1128,11 +1168,12 @@ report_class_declaration (name) } if (package_name) - fprintf (out, "%s.%s ", package_name, name); + fprintf (out, "%s.%s%s ", package_name, INNER_QUALIFIER, name); else - fprintf (out, "%s ", name); + fprintf (out, "%s%s ", INNER_QUALIFIER, name); } - + + push_class_context (name); current_class = name; } -- 2.30.2