diff options
author | Emanuele Torre <torreemanuele6@gmail.com> | 2023-07-10 18:45:32 +0200 |
---|---|---|
committer | Nico Williams <nico@cryptonector.com> | 2023-07-10 12:04:54 -0500 |
commit | 6ca7973d4913b0ca7e692ac3ebbcf8e366b41860 (patch) | |
tree | bad82a17cacbdd2f7e0f90ce55d4ef0a082dad64 | |
parent | 841445eea7ce016e2d07cd466836dba631081a23 (diff) |
Allow using { $__loc__ } as shorthand for { __loc__: $__loc__ }
n.b.: { $__loc__: "foo" } is still not allowed.
$__loc__ cannot be overwritten, and it is always an object.
Using { $x: "foo" } where $x is not a string is an error, so there is
not much of a point in supporting that.
-rw-r--r-- | src/parser.c | 1734 | ||||
-rw-r--r-- | src/parser.y | 12 | ||||
-rw-r--r-- | tests/jq.test | 6 |
3 files changed, 891 insertions, 861 deletions
diff --git a/src/parser.c b/src/parser.c index dba7023d..45e03b06 100644 --- a/src/parser.c +++ b/src/parser.c @@ -568,8 +568,13 @@ static block gen_update(block object, block val, int optype) { optype))))); } +static block gen_loc_object(location *loc, struct locfile *locations) { + return gen_const(JV_OBJECT(jv_string("file"), jv_copy(locations->fname), + jv_string("line"), jv_number(locfile_get_line(locations, loc->start) + 1))); +} + -#line 573 "src/parser.c" +#line 578 "src/parser.c" #ifdef short @@ -896,16 +901,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 29 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2034 +#define YYLAST 2039 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 70 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 30 /* YYNRULES -- Number of rules. */ -#define YYNRULES 169 +#define YYNRULES 170 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 317 +#define YYNSTATES 318 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 303 @@ -959,23 +964,24 @@ static const yytype_int8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 307, 307, 310, 315, 318, 333, 336, 341, 344, - 349, 353, 356, 360, 364, 368, 371, 376, 380, 384, - 389, 396, 400, 404, 408, 412, 416, 420, 424, 428, - 432, 436, 440, 444, 448, 452, 456, 460, 466, 472, - 476, 480, 484, 488, 492, 496, 500, 504, 509, 512, - 529, 538, 545, 553, 564, 569, 575, 578, 583, 587, - 594, 594, 598, 598, 605, 608, 611, 617, 620, 623, - 628, 631, 634, 640, 643, 646, 654, 658, 661, 664, - 667, 670, 673, 676, 679, 682, 686, 692, 695, 698, - 701, 704, 707, 710, 713, 716, 719, 722, 725, 728, - 731, 734, 737, 740, 743, 746, 749, 752, 774, 778, - 782, 786, 798, 803, 804, 805, 806, 809, 812, 817, - 822, 825, 830, 833, 838, 842, 845, 850, 853, 858, - 861, 866, 869, 872, 875, 878, 881, 889, 895, 898, - 901, 904, 907, 910, 913, 916, 919, 922, 925, 928, - 931, 934, 937, 940, 943, 946, 951, 954, 955, 956, - 959, 962, 965, 968, 972, 976, 980, 984, 988, 996 + 0, 312, 312, 315, 320, 323, 338, 341, 346, 349, + 354, 358, 361, 365, 369, 373, 376, 381, 385, 389, + 394, 401, 405, 409, 413, 417, 421, 425, 429, 433, + 437, 441, 445, 449, 453, 457, 461, 465, 471, 477, + 481, 485, 489, 493, 497, 501, 505, 509, 514, 517, + 534, 543, 550, 558, 569, 574, 580, 583, 588, 592, + 599, 599, 603, 603, 610, 613, 616, 622, 625, 628, + 633, 636, 639, 645, 648, 651, 659, 663, 666, 669, + 672, 675, 678, 681, 684, 687, 691, 697, 700, 703, + 706, 709, 712, 715, 718, 721, 724, 727, 730, 733, + 736, 739, 742, 745, 748, 751, 754, 757, 779, 783, + 787, 790, 802, 807, 808, 809, 810, 813, 816, 821, + 826, 829, 834, 837, 842, 846, 849, 854, 857, 862, + 865, 870, 873, 876, 879, 882, 885, 893, 899, 902, + 905, 908, 911, 914, 917, 920, 923, 926, 929, 932, + 935, 938, 941, 944, 947, 950, 955, 958, 959, 960, + 963, 966, 969, 972, 976, 980, 984, 988, 992, 996, + 1004 }; #endif @@ -1016,7 +1022,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-161) +#define YYPACT_NINF (-159) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1030,38 +1036,38 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -14, 863, 29, 34, 14, 20, -161, -161, 21, -161, - 78, 863, 448, 448, 863, 103, 39, -161, -161, 863, - 417, 284, 350, 581, 50, 1351, 863, -161, 2, -161, - 7, 7, 863, 34, 665, 863, -161, -161, -22, 1707, - 9, 51, 97, 82, -161, -161, -161, -2, 69, 1181, - -161, 133, 21, 81, 77, -161, 992, -46, 83, 85, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, 863, 86, - 87, 76, 96, 84, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 863, 863, 863, 863, 863, - 863, 863, 863, 863, 863, 863, 863, 863, -161, -161, - 1875, 92, -5, -4, 165, 140, -161, -161, -161, 1875, - 863, -161, -161, 1402, 1875, 10, -161, -161, 74, 863, - 468, -5, -5, 519, 863, 4, -161, -161, -161, -161, - -161, -161, 637, 206, -161, 206, 206, 1215, 206, 206, - -161, 637, 149, 1943, 580, 580, 1909, 779, 1975, 1943, - 1943, 1943, 1943, 1943, 1943, 580, 580, 1875, 1909, 1943, - 580, 580, -2, -2, 98, 98, 98, -161, -161, -5, - 925, 117, 111, 119, 731, 102, 99, 863, 104, 958, - 121, -161, -161, 863, -161, 25, -161, -161, 75, -161, - 1453, -161, 1657, 101, 106, -161, -161, 1875, -161, 863, - -161, -19, -161, 206, 116, 59, 116, 116, 105, 116, - 116, -161, -161, -161, -24, 112, 113, 114, 863, 115, - -25, -161, 118, -5, 863, 120, 1026, -161, -161, 1060, - -161, 797, 123, -161, -161, -161, -161, 74, 124, -161, - 863, 863, -161, -161, 863, 863, 1741, -161, 206, 206, - -5, -161, -5, -5, -5, 1249, -5, 925, -161, -5, - 150, 1875, -161, 131, 135, 139, 1094, -161, -161, 863, - 1791, 1841, 1504, 1555, -161, 116, 116, -161, -161, -161, - -161, 136, -161, -161, -161, -161, -161, -161, 141, 1606, - -161, 863, 863, 863, -5, -161, -161, 1657, 1283, 1128, - -161, -161, -161, 863, -161, 1317, -161 + -13, 868, 7, 41, -44, -30, -159, -159, -2, -159, + 65, 868, 449, 449, 868, 66, 36, -159, -159, 868, + 418, 285, 351, 582, 4, 1356, 868, -159, 10, -159, + -4, -4, 868, 41, 670, 868, -159, -159, -18, 1712, + 47, 51, 54, 32, -159, -159, -159, -6, 46, 1186, + -159, 112, -2, 58, 52, -159, 997, -24, 64, 68, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, 868, + 69, 72, 60, 92, 75, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, + 868, 868, 868, 868, 868, 868, 868, 868, 868, -159, + -159, 1880, 86, -5, 6, 166, 132, -159, -159, -159, + 1880, 868, -159, -159, 1407, 1880, 63, -159, -159, 73, + 868, 469, -5, -5, 520, 868, 11, -159, -159, -159, + -159, -159, -159, 638, 207, -159, 207, 207, 1220, 207, + 207, -159, 638, 146, 1948, 581, 581, 1914, 784, 1980, + 1948, 1948, 1948, 1948, 1948, 1948, 581, 581, 1880, 1914, + 1948, 581, 581, -6, -6, 95, 95, 95, -159, -159, + -5, 930, 114, 110, 118, 736, 101, 96, 868, 102, + 963, 120, -159, -159, 868, -159, 24, -159, -159, 76, + -159, 1458, -159, 1662, 103, 104, -159, -159, 1880, -159, + 868, -159, -47, -159, 207, 115, 17, 115, 115, 105, + 115, 115, -159, -159, -159, -19, 106, 113, 116, 868, + 117, -22, -159, 119, -5, 868, 107, 1031, -159, -159, + 1065, -159, 802, 124, -159, -159, -159, -159, 73, 125, + -159, 868, 868, -159, -159, 868, 868, 1746, -159, 207, + 207, -5, -159, -5, -5, -5, 1254, -5, 930, -159, + -5, 136, 1880, -159, 133, 140, 141, 1099, -159, -159, + 868, 1796, 1846, 1509, 1560, -159, 115, 115, -159, -159, + -159, -159, 138, -159, -159, -159, -159, -159, -159, 143, + 1611, -159, 868, 868, 868, -5, -159, -159, 1662, 1288, + 1133, -159, -159, -159, 868, -159, 1322, -159 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1076,47 +1082,47 @@ static const yytype_uint8 yydefact[] = 0, 0, 18, 0, 76, 75, 64, 32, 0, 0, 85, 0, 0, 84, 0, 106, 0, 0, 166, 165, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 0, 163, - 167, 0, 157, 0, 0, 0, 0, 0, 0, 0, + 148, 149, 150, 151, 152, 153, 154, 155, 167, 0, + 163, 168, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 5, - 10, 81, 0, 0, 0, 0, 53, 52, 3, 2, - 8, 7, 48, 0, 119, 0, 117, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 113, 104, 86, 80, - 114, 105, 0, 0, 116, 0, 0, 0, 0, 0, - 107, 0, 0, 40, 41, 42, 25, 24, 23, 27, - 31, 34, 36, 39, 26, 45, 46, 28, 29, 22, - 43, 44, 30, 33, 35, 37, 38, 77, 124, 0, - 0, 0, 0, 123, 0, 83, 0, 0, 92, 0, - 0, 9, 49, 0, 112, 0, 59, 58, 0, 56, - 0, 16, 0, 0, 0, 19, 17, 20, 65, 0, - 61, 0, 159, 0, 169, 72, 160, 164, 0, 162, - 161, 158, 108, 127, 0, 0, 0, 131, 0, 0, - 0, 129, 0, 0, 0, 94, 0, 79, 115, 0, - 91, 0, 88, 51, 50, 118, 63, 0, 0, 54, - 0, 0, 69, 15, 0, 0, 0, 71, 0, 0, - 0, 125, 0, 0, 0, 0, 0, 0, 126, 0, - 122, 11, 93, 90, 100, 99, 0, 87, 57, 0, - 0, 0, 0, 0, 66, 70, 168, 128, 137, 133, - 132, 0, 135, 130, 134, 89, 97, 96, 98, 0, - 68, 0, 0, 0, 0, 95, 55, 0, 0, 0, - 136, 67, 12, 0, 14, 0, 13 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 5, 10, 81, 0, 0, 0, 0, 53, 52, 3, + 2, 8, 7, 48, 0, 119, 0, 117, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 113, 104, 86, + 80, 114, 105, 0, 0, 116, 0, 0, 0, 0, + 0, 107, 0, 0, 40, 41, 42, 25, 24, 23, + 27, 31, 34, 36, 39, 26, 45, 46, 28, 29, + 22, 43, 44, 30, 33, 35, 37, 38, 77, 124, + 0, 0, 0, 0, 123, 0, 83, 0, 0, 92, + 0, 0, 9, 49, 0, 112, 0, 59, 58, 0, + 56, 0, 16, 0, 0, 0, 19, 17, 20, 65, + 0, 61, 0, 159, 0, 170, 72, 160, 164, 0, + 162, 161, 158, 108, 127, 0, 0, 0, 131, 0, + 0, 0, 129, 0, 0, 0, 94, 0, 79, 115, + 0, 91, 0, 88, 51, 50, 118, 63, 0, 0, + 54, 0, 0, 69, 15, 0, 0, 0, 71, 0, + 0, 0, 125, 0, 0, 0, 0, 0, 0, 126, + 0, 122, 11, 93, 90, 100, 99, 0, 87, 57, + 0, 0, 0, 0, 0, 66, 70, 169, 128, 137, + 133, 132, 0, 135, 130, 134, 89, 97, 96, 98, + 0, 68, 0, 0, 0, 0, 95, 55, 0, 0, + 0, 136, 67, 12, 0, 14, 0, 13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -161, -161, -161, 168, 89, -1, -161, -161, 171, 0, - -161, -44, 5, -161, -161, 90, -103, -137, -7, -161, - 12, -161, -73, -152, -161, -161, -51, -160, -105, -161 + -159, -159, -159, 145, 74, -1, -159, -159, 172, -12, + -159, -43, 5, -159, -159, 78, -104, -138, -7, -159, + 16, -159, -69, -114, -159, -159, -51, -158, -111, -159 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_uint8 yydefgoto[] = { - 0, 2, 3, 32, 118, 110, 33, 34, 115, 26, - 198, 199, 27, 46, 127, 135, 253, 214, 28, 125, - 126, 181, 182, 183, 224, 230, 231, 80, 81, 82 + 0, 2, 3, 32, 119, 111, 33, 34, 116, 26, + 199, 200, 27, 46, 128, 136, 254, 215, 28, 126, + 127, 182, 183, 184, 225, 231, 232, 81, 82, 83 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1124,418 +1130,418 @@ static const yytype_uint8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 25, 178, 1, 142, 52, 40, 41, 111, 216, 217, - 39, 219, 220, 42, 111, 52, 112, 143, 47, 49, - 232, 56, 144, 131, 267, 260, 53, 223, 79, 29, - 142, 119, 120, 123, 124, 116, 116, 212, 18, 128, - 44, 129, 261, 268, 143, 45, 221, 208, 209, 18, - 210, 30, 31, 105, 106, 107, 111, 108, 203, 204, - 179, 184, 180, 37, 111, 132, 113, 114, 208, 209, - 193, 246, 194, 113, 114, 35, 257, 147, 196, 36, - 197, 270, 38, 153, 154, 155, 156, 157, 158, 159, + 25, 179, 143, 1, 52, 40, 41, 29, 217, 218, + 39, 220, 221, 42, 52, 112, 144, 35, 47, 49, + 121, 56, 112, 233, 113, 143, 53, 268, 80, 36, + 261, 120, 213, 124, 125, 117, 117, 44, 18, 144, + 37, 222, 45, 129, 145, 130, 269, 262, 18, 106, + 107, 108, 112, 109, 209, 210, 112, 211, 30, 31, + 180, 132, 181, 204, 205, 133, 224, 209, 210, 38, + 247, 185, 43, 84, 114, 115, 258, 197, 148, 198, + 135, 114, 115, 134, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 232, 287, 43, - 288, 289, 290, 189, 292, 113, 114, 294, 185, 83, - 120, 285, 286, 113, 114, 243, 133, 244, 200, 202, - 134, 136, 206, 207, 138, 247, 215, 248, 215, 215, - 139, 215, 215, 140, 150, 151, 145, 79, 146, 148, - 149, 177, 310, 152, 190, 222, 79, 108, 233, 234, - -121, 237, 254, 240, 258, 238, 186, 255, 259, 4, - 5, 6, 7, 8, 9, 262, 263, 264, 266, 272, - 10, 269, 277, 236, 11, 229, 239, 279, 12, 13, - 295, -120, 124, 14, 296, 15, 16, 17, 297, 304, - 305, 121, 117, 278, 311, 245, 215, 18, 256, 191, - 4, 5, 6, 7, 8, 9, 293, 195, 0, 19, - 0, 0, 0, 0, 0, 0, 20, 265, 187, 21, - 22, 188, 23, 271, 24, 0, 0, 16, 17, 0, - 276, 0, 0, 0, 0, 0, 0, 0, 18, 280, - 281, 215, 215, 282, 283, 0, 0, 0, 0, 0, - 213, 0, 0, 0, 0, 0, 0, 20, 0, 0, - 21, 22, 229, 23, 0, 24, 0, 0, 299, 0, - 0, 0, 0, 0, -73, 50, 0, 0, 51, -73, - 0, 0, 52, 0, -73, -73, -73, -73, -73, 0, - 307, 308, 309, 0, -73, -73, -73, 0, 0, -73, - -73, -73, 315, -73, 0, 0, 0, -73, -73, -73, - -73, -73, -73, -73, -73, 0, 18, 0, 0, -73, - 0, 0, -73, -73, -73, -73, -73, -73, -73, -73, - -73, -73, 0, -73, -73, 0, -73, -73, -73, -73, - -73, 54, -73, 0, 4, 5, 6, 7, 8, 9, - 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, - 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 0, 20, 0, 0, 21, 22, 55, 23, 48, 24, - 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, - 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, - 0, 0, 4, 5, 6, 7, 8, 9, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, - 0, 19, 4, 5, 6, 7, 8, 9, 20, 16, - 17, 21, 22, 10, 23, 0, 24, 11, 0, 0, - 18, 12, 13, 0, 0, 0, 14, 0, 15, 16, - 17, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 18, 0, 21, 22, 0, 23, 0, 24, 0, 0, - 205, 0, 19, 4, 5, 6, 7, 8, 9, 20, - 0, 0, 21, 22, 10, 23, 0, 24, 11, 0, - 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, - 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, - 20, 0, 57, 21, 22, 58, 23, 59, 24, 52, - 0, -157, -157, 0, 0, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 0, 0, 0, 0, 0, 0, -157, - -157, 0, 0, 18, 0, 0, 0, 0, 0, 0, - 0, -157, -157, 103, 104, 105, 106, 107, 211, 108, - 0, 58, 78, 59, 0, 52, 0, 0, 0, -156, - 0, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 4, - 5, 6, 7, 8, 9, 0, 0, 0, 0, 18, - 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, - 0, 0, 0, 14, 0, 15, 16, 17, 78, 0, - 0, 0, 0, 0, 0, -156, 0, 18, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 0, 0, 0, 0, 122, 20, 0, 0, 21, - 22, 0, 23, 0, 24, 4, 5, 6, 7, 8, + 170, 171, 172, 173, 174, 175, 176, 177, 137, 121, + 233, 114, 115, 139, 190, 114, 115, 140, 141, 186, + 271, 286, 287, 194, 244, 195, 245, 146, 151, 201, + 203, 147, 149, 207, 208, 150, 248, 216, 249, 216, + 216, 152, 216, 216, 153, 178, 191, 288, 80, 289, + 290, 291, 223, 293, 109, 234, 295, 80, 235, -121, + 238, 241, 239, 259, 255, 256, 273, 187, 260, 263, + 4, 5, 6, 7, 8, 9, 264, -120, 122, 265, + 267, 10, 270, 278, 237, 11, 230, 240, 280, 12, + 13, 311, 296, 125, 14, 192, 15, 16, 17, 297, + 298, 305, 306, 118, 312, 279, 196, 216, 18, 257, + 246, 4, 5, 6, 7, 8, 9, 294, 0, 0, + 19, 0, 0, 0, 0, 0, 0, 20, 266, 188, + 21, 22, 189, 23, 272, 24, 0, 0, 16, 17, + 0, 277, 0, 0, 0, 0, 0, 0, 0, 18, + 281, 282, 216, 216, 283, 284, 0, 0, 0, 0, + 0, 214, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 21, 22, 230, 23, 0, 24, 0, 0, 300, + 0, 0, 0, 0, 0, -73, 50, 0, 0, 51, + -73, 0, 0, 52, 0, -73, -73, -73, -73, -73, + 0, 308, 309, 310, 0, -73, -73, -73, 0, 0, + -73, -73, -73, 316, -73, 0, 0, 0, -73, -73, + -73, -73, -73, -73, -73, -73, 0, 18, 0, 0, + -73, 0, 0, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, 0, -73, -73, 0, -73, -73, -73, + -73, -73, 54, -73, 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, - 85, 86, 20, 0, 0, 21, 22, 235, 23, 0, - 24, 4, 5, 6, 7, 8, 9, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 11, 0, 96, 97, - 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 21, 22, 275, 23, 0, 24, 4, 5, 6, - 7, 8, 9, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, - 0, 14, 0, 15, 16, 17, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, - 0, 0, 0, 0, 20, 0, 225, 21, 22, 226, - 23, 227, 24, 52, 0, 0, 0, 0, 0, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 84, 85, - 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 228, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 84, 85, 86, 87, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 88, 89, - 0, 241, 0, 0, 242, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 84, 85, 86, 87, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 88, 89, 0, 0, 0, 0, 141, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, - 84, 85, 86, 87, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 0, 108, 88, 89, 0, 0, - 0, 0, 273, 90, 91, 92, 93, 94, 95, 96, - 97, 0, 0, 0, 84, 85, 86, 87, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 0, 108, - 88, 89, 0, 0, 0, 0, 274, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 0, 0, 84, 85, - 86, 87, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 0, 108, 88, 89, 0, 0, 0, 0, - 298, 90, 91, 92, 93, 94, 95, 96, 97, 0, - 0, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 0, 108, 313, 0, - 314, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 84, 85, 86, 87, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 88, 89, 137, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 84, - 85, 86, 87, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 88, 89, 218, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 0, 0, 84, 85, 86, 87, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 88, - 89, 291, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 0, 0, 84, 85, 86, - 87, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 0, 108, 88, 89, 312, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, - 0, 84, 85, 86, 87, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 88, 89, 316, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 109, 84, 85, 86, 87, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 0, 0, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 0, 108, 192, 84, 85, 86, 87, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, - 89, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 95, 96, 97, 0, 0, 0, 0, 0, 0, - 0, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 0, 108, 249, 84, 85, 86, 87, 0, 0, + 0, 0, 20, 0, 0, 21, 22, 55, 23, 48, + 24, 0, 4, 5, 6, 7, 8, 9, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, + 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, + 17, 0, 0, 4, 5, 6, 7, 8, 9, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 202, 0, 19, 4, 5, 6, 7, 8, 9, 20, + 16, 17, 21, 22, 10, 23, 0, 24, 11, 0, + 0, 18, 12, 13, 0, 0, 0, 14, 0, 15, + 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 18, 0, 21, 22, 0, 23, 0, 24, 0, + 0, 206, 0, 19, 4, 5, 6, 7, 8, 9, + 20, 0, 0, 21, 22, 10, 23, 0, 24, 11, + 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, + 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, + 0, 20, 0, 57, 21, 22, 58, 23, 59, 24, + 52, 0, -157, -157, 0, 0, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 0, 0, 0, 0, 0, + -157, -157, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 0, -157, -157, 104, 105, 106, 107, 108, 212, + 109, 0, 58, 79, 59, 0, 52, 0, 0, 0, + -156, 0, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 0, 0, 0, 4, 5, 6, 7, 8, 9, + 18, 0, 0, 0, 0, 10, 0, 0, 0, 11, + 0, 0, 0, 12, 13, 0, 0, 0, 14, 79, + 15, 16, 17, 0, 0, 0, -156, 0, 0, 0, + 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, + 123, 20, 0, 0, 21, 22, 0, 23, 0, 24, + 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, + 13, 0, 0, 0, 14, 0, 15, 16, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 89, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 95, 96, 97, 0, 0, 0, 0, 0, - 0, 0, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 0, 108, 302, 84, 85, 86, 87, 0, + 19, 0, 0, 0, 0, 86, 87, 20, 0, 0, + 21, 22, 236, 23, 0, 24, 4, 5, 6, 7, + 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 97, 98, 12, 13, 0, 0, 0, + 14, 0, 15, 16, 17, 102, 103, 104, 105, 106, + 107, 108, 0, 109, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 21, 22, 276, 23, + 0, 24, 4, 5, 6, 7, 8, 9, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, + 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, + 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 0, 0, 0, 0, 0, 0, 20, + 0, 226, 21, 22, 227, 23, 228, 24, 52, 0, + 0, 0, 0, 0, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 18, 85, 86, 87, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 229, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, + 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 89, 90, 0, 242, 0, 0, 243, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, + 0, 0, 0, 142, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, + 109, 89, 90, 0, 0, 0, 0, 274, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, + 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, + 0, 275, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, + 90, 0, 0, 0, 0, 299, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, + 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 314, 0, 315, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 88, 89, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 0, - 0, 0, 0, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 303, 84, 85, 86, 87, + 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 89, 90, 138, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 89, 90, 219, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, + 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 0, 109, 89, 90, 292, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, + 313, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 0, 109, 89, 90, 317, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 110, 85, 86, 87, + 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 193, 85, 86, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 0, 109, 250, 85, + 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, + 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 0, 109, 303, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 304, 85, 86, 87, 88, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 0, + 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, + 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, + 109, 307, 85, 86, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 251, 252, 0, 0, 253, 89, 90, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 0, 109, 85, 86, 87, 88, 0, 0, 0, 0, + 0, 0, 131, 0, 0, 0, 0, 0, 89, 90, + 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 0, 109, 89, 90, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 0, 285, 0, 0, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 95, 96, 97, 0, 0, 0, - 0, 0, 0, 0, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 0, 108, 306, 84, 85, 86, - 87, 0, 0, 0, 0, 0, 0, 0, 250, 251, - 0, 0, 252, 88, 89, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, - 0, 0, 0, 0, 0, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 84, 85, 86, - 87, 0, 0, 0, 0, 0, 0, 130, 0, 0, - 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 95, 96, 97, 0, 0, - 0, 84, 85, 86, 87, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 0, 108, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 284, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 300, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 84, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 301, 0, 0, 0, 0, 0, 88, 89, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 95, - 96, 97, 0, 0, 0, 84, 85, 86, 87, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 0, - 108, 88, 89, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 95, 96, 97, 0, 0, 0, 84, - 85, 86, 87, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 0, 108, 88, 89, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, - 0, 0, 0, -157, 85, 86, 0, 0, 0, 100, - 101, 102, 103, 104, 105, 106, 107, 0, 108, 88, - 89, 0, 0, 0, 0, 0, -157, -157, -157, -157, - -157, -157, 96, 97, 0, 0, 85, 86, 0, 0, - 0, 0, 0, -157, 101, 102, 103, 104, 105, 106, - 107, 88, 108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 103, 104, - 105, 106, 107, 0, 108 + 0, 301, 89, 90, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, + 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, + 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, + 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 0, 0, -157, 86, + |