summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--compile.c19
-rw-r--r--compile.h3
-rw-r--r--parser.c1934
-rw-r--r--parser.y73
-rw-r--r--tests/jq.test8
5 files changed, 991 insertions, 1046 deletions
diff --git a/compile.c b/compile.c
index 6988d27c..05f070cd 100644
--- a/compile.c
+++ b/compile.c
@@ -495,23 +495,26 @@ jv block_module_meta(block b) {
return jv_null();
}
-block gen_import(const char* name, block metadata, const char* as, int is_data) {
- assert(metadata.first == NULL || block_is_const(metadata));
+block gen_import(const char* name, const char* as, int is_data) {
inst* i = inst_new(DEPS);
- jv meta;
- if (block_is_const(metadata))
- meta = block_const(metadata);
- else
- meta = jv_object();
+ jv meta = jv_object();
if (as != NULL)
meta = jv_object_set(meta, jv_string("as"), jv_string(as));
meta = jv_object_set(meta, jv_string("is_data"), is_data ? jv_true() : jv_false());
meta = jv_object_set(meta, jv_string("relpath"), jv_string(name));
i->imm.constant = meta;
- block_free(metadata);
return inst_block(i);
}
+block gen_import_meta(block import, block metadata) {
+ assert(block_is_single(import) && import.first->op == DEPS);
+ assert(block_is_const(metadata) && block_const_kind(metadata) == JV_KIND_OBJECT);
+ inst *i = import.first;
+ i->imm.constant = jv_object_merge(block_const(metadata), i->imm.constant);
+ block_free(metadata);
+ return import;
+}
+
block gen_function(const char* name, block formals, block body) {
inst* i = inst_new(CLOSURE_CREATE);
for (inst* i = formals.last; i; i = i->prev) {
diff --git a/compile.h b/compile.h
index baec373e..4572c9cc 100644
--- a/compile.h
+++ b/compile.h
@@ -32,7 +32,8 @@ block gen_op_var_fresh(opcode op, const char* name);
block gen_module(block metadata);
jv block_module_meta(block b);
-block gen_import(const char* name, block metadata, const char *as, int is_data);
+block gen_import(const char* name, const char *as, int is_data);
+block gen_import_meta(block import, block metadata);
block gen_function(const char* name, block formals, block body);
block gen_param_regular(const char* name);
block gen_param(const char* name);
diff --git a/parser.c b/parser.c
index e5cbf95d..9500dc6a 100644
--- a/parser.c
+++ b/parser.c
@@ -656,16 +656,16 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 27
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2110
+#define YYLAST 1937
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 68
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 26
+#define YYNNTS 27
/* YYNRULES -- Number of rules. */
-#define YYNRULES 156
+#define YYNRULES 155
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 310
+#define YYNSTATES 305
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
@@ -720,18 +720,18 @@ static const yytype_uint16 yyrline[] =
313, 317, 321, 325, 329, 333, 336, 341, 345, 349,
354, 361, 365, 369, 373, 377, 381, 385, 389, 393,
397, 401, 405, 409, 413, 417, 421, 425, 431, 437,
- 441, 445, 449, 453, 457, 461, 465, 469, 474, 483,
- 490, 496, 508, 519, 533, 538, 544, 547, 552, 557,
- 564, 564, 568, 568, 575, 578, 581, 587, 590, 595,
- 598, 601, 607, 610, 613, 621, 625, 628, 631, 634,
- 637, 640, 643, 646, 649, 653, 659, 662, 665, 668,
- 671, 674, 677, 680, 683, 686, 689, 692, 695, 698,
- 701, 704, 707, 714, 718, 722, 734, 739, 740, 741,
- 742, 745, 748, 753, 758, 762, 765, 770, 773, 778,
- 781, 786, 789, 792, 795, 798, 803, 806, 809, 812,
- 815, 818, 821, 824, 827, 830, 833, 836, 839, 842,
- 845, 848, 851, 854, 857, 862, 865, 866, 867, 870,
- 873, 876, 879, 883, 887, 891, 894
+ 441, 445, 449, 453, 457, 461, 465, 469, 474, 477,
+ 494, 503, 510, 518, 523, 529, 532, 537, 542, 549,
+ 549, 553, 553, 560, 563, 566, 572, 575, 580, 583,
+ 586, 592, 595, 598, 606, 610, 613, 616, 619, 622,
+ 625, 628, 631, 634, 638, 644, 647, 650, 653, 656,
+ 659, 662, 665, 668, 671, 674, 677, 680, 683, 686,
+ 689, 692, 699, 703, 707, 719, 724, 725, 726, 727,
+ 730, 733, 738, 743, 747, 750, 755, 758, 763, 766,
+ 771, 774, 777, 780, 783, 788, 791, 794, 797, 800,
+ 803, 806, 809, 812, 815, 818, 821, 824, 827, 830,
+ 833, 836, 839, 842, 847, 850, 851, 852, 855, 858,
+ 861, 864, 868, 872, 876, 879
};
#endif
@@ -751,10 +751,10 @@ static const char *const yytname[] =
"QQSTRING_END", "FUNCDEF", "'|'", "','", "'='", "'<'", "'>'", "'+'",
"'-'", "'*'", "'/'", "'%'", "NONOPT", "'?'", "';'", "'('", "')'", "'$'",
"':'", "'.'", "'['", "']'", "'{'", "'}'", "$accept", "TopLevel",
- "Module", "Imports", "FuncDefs", "Exp", "Import", "FuncDef", "Params",
- "Param", "String", "@1", "@2", "QQString", "ElseBody", "ExpD", "Term",
- "Args", "Arg", "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword",
- "MkDict", "MkDictPair", YY_NULLPTR
+ "Module", "Imports", "FuncDefs", "Exp", "Import", "ImportWhat",
+ "FuncDef", "Params", "Param", "String", "@1", "@2", "QQString",
+ "ElseBody", "ExpD", "Term", "Args", "Arg", "Pattern", "ArrayPats",
+ "ObjPats", "ObjPat", "Keyword", "MkDict", "MkDictPair", YY_NULLPTR
};
#endif
@@ -773,51 +773,51 @@ static const yytype_uint16 yytoknum[] =
};
# endif
-#define YYPACT_NINF -152
+#define YYPACT_NINF -145
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-152)))
+ (!!((Yystate) == (-145)))
-#define YYTABLE_NINF -146
+#define YYTABLE_NINF -145
#define yytable_value_is_error(Yytable_value) \
- (!!((Yytable_value) == (-146)))
+ (!!((Yytable_value) == (-145)))
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 22, 828, 42, 46, 9, -2, -152, 27, -152, 55,
- 828, 871, 871, 828, 20, 0, -152, 828, 466, 23,
- 276, 439, 341, 1374, 828, -152, 1, -152, 3, 3,
- 828, 46, 828, -152, -152, -18, 1823, 6, 8, 50,
- 107, -152, 109, -152, -8, 57, 1209, -152, -152, -152,
- 114, 27, 65, 61, -152, 1010, -19, 68, -152, -152,
- -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
- -152, -152, -152, -152, -152, -152, -152, 530, 127, 72,
- 74, 71, 92, 828, 828, 828, 828, 828, 828, 828,
- 828, 828, 828, 828, 828, 828, 828, 828, 828, 828,
- 828, 828, 828, 828, 828, 828, 828, -152, -152, 1987,
- 83, -26, 3, 190, 131, 648, -152, 1987, 828, -152,
- 1987, -7, -152, -152, 18, 828, 557, -26, -26, 621,
- 99, -152, 16, -152, -152, -152, -152, -152, -152, 397,
- -152, 865, 88, 1242, -152, 865, 865, -152, 397, 2053,
- 336, 336, 2020, 928, 108, 2053, 2053, 2053, 2053, 2053,
- 2053, 336, 336, 1987, 2020, 2053, 336, 336, -8, -8,
- 93, 93, 93, -152, 145, -26, 929, 105, 96, 89,
- 828, 98, 961, 19, -152, 1424, -152, 828, -152, 79,
- -152, 152, 17, -152, 1474, -152, 1774, 110, 111, -152,
- -152, 828, -152, 828, -152, 117, -152, 865, 120, 10,
- 106, 112, 120, 120, -152, -152, -152, -13, 113, 828,
- 163, 115, -11, -152, 116, 828, -152, -152, 1059, -152,
- 711, 119, 738, 168, -152, -152, -152, -152, 18, 121,
- -152, 828, 828, -152, 828, 828, 1987, 1856, -152, 865,
- 865, 865, -26, -152, -26, 1275, -152, -26, 929, -152,
- -26, 1987, 124, 125, 1108, -152, -152, 1524, 801, -152,
- 828, 1905, 1954, 1574, 1624, -152, 120, 120, 120, -152,
- -152, 122, -152, -152, -152, -152, -152, 128, -152, -152,
- 1674, 1724, -152, 828, 828, 828, -26, -152, -152, -152,
- 1774, 1308, 1157, -152, -152, -152, 828, -152, 1341, -152
+ -2, 735, 26, 43, -20, -17, -145, 3, -145, 44,
+ 735, 778, 778, 735, -10, 2, -145, 735, 463, 11,
+ 273, 436, 338, 1281, 735, -145, 6, -145, -3, -3,
+ 735, 43, 645, 735, -145, -145, -21, 1630, 9, 48,
+ 34, 64, -145, 67, -145, 1, 19, 1116, -145, -145,
+ -145, 119, 3, 65, 56, -145, 917, -37, 61, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
+ -145, -145, -145, -145, -145, -145, -145, -145, 527, 121,
+ 68, 71, 69, 87, 735, 735, 735, 735, 735, 735,
+ 735, 735, 735, 735, 735, 735, 735, 735, 735, 735,
+ 735, 735, 735, 735, 735, 735, 735, 735, -145, -145,
+ 1794, 78, -14, -3, 147, 124, -145, -145, 1794, 735,
+ -145, -145, 1331, 1794, 16, -145, -145, 14, 735, 554,
+ -14, -14, 618, 92, -145, 23, -145, -145, -145, -145,
+ -145, -145, 394, -145, 772, 79, 1149, -145, 772, 772,
+ -145, 394, 1860, 183, 183, 1827, 333, 1880, 1860, 1860,
+ 1860, 1860, 1860, 1860, 183, 183, 1794, 1827, 1860, 183,
+ 183, 1, 1, 84, 84, 84, -145, 138, -14, 836,
+ 97, 89, 85, 735, 100, 868, 53, -145, -145, 735,
+ -145, 75, -145, 145, 20, -145, 1381, -145, 1581, 99,
+ 101, -145, -145, 735, -145, 735, -145, 112, -145, 772,
+ 116, 18, 102, 104, 116, 116, -145, -145, -145, -19,
+ 105, 735, 164, 109, -23, -145, 110, 735, -145, -145,
+ 966, -145, 708, 118, -145, 169, -145, -145, -145, 14,
+ 117, -145, 735, 735, -145, 735, 735, 1794, 1663, -145,
+ 772, 772, 772, -14, -145, -14, 1182, -145, -14, 836,
+ -145, -14, 1794, 123, 126, 1015, -145, -145, -145, 735,
+ 1712, 1761, 1431, 1481, -145, 116, 116, 116, -145, -145,
+ 127, -145, -145, -145, -145, -145, 128, 1531, -145, 735,
+ 735, 735, -14, -145, -145, 1581, 1215, 1064, -145, -145,
+ -145, 735, -145, 1248, -145
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -825,53 +825,53 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 4, 0, 0, 6, 105, 81, 96, 98, 73, 0,
- 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
- 0, 0, 0, 0, 0, 97, 47, 1, 0, 0,
- 8, 6, 0, 77, 62, 0, 0, 0, 0, 18,
- 0, 75, 0, 64, 32, 0, 0, 104, 103, 84,
- 0, 0, 83, 0, 101, 0, 0, 154, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 0, 0, 152,
- 0, 0, 146, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 6, 104, 80, 95, 97, 72, 0,
+ 0, 0, 0, 0, 0, 0, 59, 0, 0, 0,
+ 0, 0, 0, 0, 0, 96, 47, 1, 0, 0,
+ 8, 6, 0, 0, 76, 61, 0, 0, 0, 0,
+ 18, 0, 74, 0, 63, 32, 0, 0, 103, 102,
+ 83, 0, 0, 82, 0, 100, 0, 0, 153, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 0, 0,
+ 151, 0, 0, 145, 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,
- 80, 0, 0, 0, 0, 0, 3, 2, 8, 7,
- 113, 0, 111, 64, 0, 0, 0, 0, 0, 0,
- 0, 74, 0, 107, 99, 85, 79, 108, 100, 0,
- 110, 0, 0, 0, 153, 0, 0, 102, 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, 76, 0, 0, 0, 0, 82, 0,
- 0, 89, 0, 0, 50, 0, 9, 0, 106, 0,
- 59, 0, 0, 56, 0, 16, 0, 0, 0, 19,
- 17, 0, 65, 0, 61, 0, 148, 0, 149, 71,
- 0, 0, 151, 150, 147, 114, 117, 0, 0, 0,
- 0, 0, 0, 119, 0, 0, 78, 109, 0, 88,
- 0, 87, 0, 0, 52, 112, 63, 58, 0, 0,
- 54, 0, 0, 15, 0, 0, 20, 0, 70, 0,
- 0, 0, 0, 115, 0, 0, 121, 0, 0, 116,
- 0, 11, 95, 94, 0, 86, 49, 0, 0, 57,
- 0, 0, 0, 0, 0, 66, 69, 156, 155, 118,
- 122, 0, 124, 120, 123, 92, 91, 93, 51, 48,
- 0, 0, 68, 0, 0, 0, 0, 90, 53, 55,
- 0, 0, 0, 125, 67, 12, 0, 14, 0, 13
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 5,
+ 10, 79, 0, 0, 0, 0, 52, 3, 2, 8,
+ 7, 48, 0, 112, 0, 110, 63, 0, 0, 0,
+ 0, 0, 0, 0, 73, 0, 106, 98, 84, 78,
+ 107, 99, 0, 109, 0, 0, 0, 152, 0, 0,
+ 101, 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, 75, 0, 0, 0,
+ 0, 81, 0, 0, 88, 0, 0, 9, 49, 0,
+ 105, 0, 58, 0, 0, 55, 0, 16, 0, 0,
+ 0, 19, 17, 0, 64, 0, 60, 0, 147, 0,
+ 148, 70, 0, 0, 150, 149, 146, 113, 116, 0,
+ 0, 0, 0, 0, 0, 118, 0, 0, 77, 108,
+ 0, 87, 0, 86, 51, 0, 111, 62, 57, 0,
+ 0, 53, 0, 0, 15, 0, 0, 20, 0, 69,
+ 0, 0, 0, 0, 114, 0, 0, 120, 0, 0,
+ 115, 0, 11, 94, 93, 0, 85, 50, 56, 0,
+ 0, 0, 0, 0, 65, 68, 155, 154, 117, 121,
+ 0, 123, 119, 122, 91, 90, 92, 0, 67, 0,
+ 0, 0, 0, 89, 54, 0, 0, 0, 124, 66,
+ 12, 0, 14, 0, 13
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -152, -152, -152, 142, 69, -1, -152, -12, -152, -50,
- 4, -152, -152, 66, -110, -141, -4, -152, 5, -125,
- -152, -152, -65, -151, -109, -152
+ -145, -145, -145, 150, 59, -1, -145, -145, -9, -145,
+ -53, 5, -145, -145, 66, -105, -143, -4, -145, 7,
+ -129, -145, -145, -68, -144, -106, -145
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 2, 3, 30, 116, 109, 31, 24, 192, 193,
- 25, 43, 123, 132, 243, 208, 26, 121, 122, 177,
- 217, 222, 223, 80, 81, 82
+ -1, 2, 3, 30, 117, 110, 31, 32, 24, 194,
+ 195, 25, 44, 126, 135, 244, 210, 26, 124, 125,
+ 180, 219, 224, 225, 81, 82, 83
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -879,346 +879,322 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 23, 41, 197, 198, 212, 213, 110, 37, 38, 36,
- 51, 110, 39, 110, 111, 110, 44, 46, 118, 127,
- 55, 128, 190, 232, 52, 224, 79, 47, 139, 117,
- 206, 120, 114, 115, 252, 174, 258, 1, 175, 214,
- 176, 124, 27, 16, 125, 104, 105, 106, 140, 107,
- 216, 187, 253, 188, 48, 33, 259, 202, 203, 35,
- 204, 42, 28, 29, 112, 113, 248, 34, 32, 112,
- 113, 112, 113, 112, 113, 238, 143, 239, 129, 191,
- 233, 40, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 118, 224, 276, 277,
- 278, 130, 182, 131, 185, 135, 178, 133, 84, 85,
- 202, 203, 136, 236, 194, 196, 137, 279, 200, 280,
- 141, 144, 282, 87, 145, 284, 146, 209, 147, 148,
- 173, 209, 209, 79, 183, 201, 95, 96, 210, 215,
- 107, 225, 79, 226, 227, 229, 237, 100, 101, 102,
- 103, 104, 105, 106, 139, 107, 249, 256, 250, 244,
- 245, 303, 268, 119, 251, 254, 265, 257, 260, 228,
- 221, 285, 286, 270, 296, 297, 120, 186, 269, 189,
- 304, 179, 235, 283, 4, 5, 6, 7, 8, 0,
- 246, 0, 247, 209, 9, 0, 0, 0, 10, 0,
- 0, 0, 11, 12, 0, 0, 0, 13, 255, 14,
- 15, 0, 0, 0, 261, 0, 0, 0, 0, 264,
- 16, 267, 0, 0, 0, 0, 0, 0, 0, 0,
- 271, 272, 17, 273, 274, 209, 209, 209, 0, 18,
- 0, 19, 180, 20, 21, 181, 22, 0, 0, 0,
- 0, 0, 221, 0, 0, 0, 0, 290, 0, 291,
- 0, 0, 0, 0, 0, 0, -72, 49, 0, 0,
- 50, -72, 0, 51, 0, -72, -72, -72, -72, -72,
- 0, 0, 300, 301, 302, -72, -72, -72, 0, 0,
- -72, -72, -72, 0, -72, 308, 0, 0, -72, -72,
- -72, -72, -72, -72, -72, -72, 16, 0, 0, -72,
- 0, 0, -72, -72, -72, -72, -72, -72, -72, -72,
- -72, -72, 0, -72, -72, 0, -72, 0, -72, -72,
- -72, -72, 56, -72, 0, 57, -146, -146, 51, 0,
- 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 0, -146, -146, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, -146, -146, 102, 103, 104,
- 105, 106, 0, 107, 0, 0, 0, 0, 205, 0,
- 77, 57, 78, 0, 51, 0, 0, 0, -145, 0,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 0,
- 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
- 53, 0, 0, 4, 5, 6, 7, 8, 0, 0,
- 0, 0, 0, 9, 0, 0, 77, 10, 78, 0,
- 0, 11, 12, 0, -145, 0, 13, 45, 14, 15,
- 4, 5, 6, 7, 8, 0, 0, 0, 0, 16,
- 9, 0, 0, 0, 10, 0, 0, 0, 11, 12,
- 0, 17, 0, 13, 0, 14, 15, 0, 18, 0,
- 19, 0, 20, 21, 54, 22, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
- 0, 0, 0, 0, 0, 18, 0, 19, 0, 20,
- 21, 142, 22, 0, 4, 5, 6, 7, 8, 0,
- 0, 0, 0, 0, 9, 0, 0, 0, 10, 0,
- 0, 0, 11, 12, 0, 0, 0, 13, 195, 14,
- 15, 4, 5, 6, 7, 8, 0, 0, 0, 0,
- 16, 9, 0, 0, 0, 10, 0, 0, 0, 11,
- 12, 0, 17, 0, 13, 0, 14, 15, 0, 18,
- 0, 19, 0, 20, 21, 0, 22, 16, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
- 0, 0, 0, 0, 0, 0, 18, 0, 19, 0,
- 20, 21, 199, 22, 0, 4, 5, 6, 7, 8,
- 0, 0, 0, 0, 0, 9, 0, 0, 0, 10,
- 0, 0, 0, 11, 12, 0, 0, 0, 13, 0,
- 14, 15, 4, 5, 6, 7, 8, 0, 0, 0,
- 0, 16, 9, 0, 0, 0, 10, 0, 0, 0,
- 11, 12, 0, 17, 0, 13, 0, 14, 15, 0,
- 18, 0, 19, 0, 20, 21, 0, 22, 16, 0,
+ 23, 199, 200, 42, 52, 214, 215, 38, 39, 37,
+ 142, 111, 40, 1, 111, 48, 45, 47, 192, 112,
+ 56, 119, 130, 111, 259, 53, 27, 80, 253, 118,
+ 143, 122, 123, 115, 116, 226, 208, 16, 127, 33,
+ 34, 128, 49, 35, 260, 216, 254, 177, 36, 218,
+ 178, 41, 179, 111, 105, 106, 107, 234, 108, 28,
+ 29, 131, 132, 43, 204, 205, 249, 206, 133, 113,
+ 114, 134, 113, 114, 189, 193, 190, 146, 239, 136,
+ 240, 113, 114, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 275, 276, 277,
+ 119, 113, 114, 185, 235, 226, 204, 205, 181, 237,
+ 138, 140, 139, 144, 278, 147, 279, 196, 198, 281,
+ 148, 202, 283, 149, 151, 176, 150, 186, 203, 212,
+ 211, 108, 217, 227, 211, 211, 228, 80, 182, 238,
+ 229, 4, 5, 6, 7, 8, 80, 231, 245, 142,
+ 246, 9, 250, 298, 251, 10, 252, 255, 257, 11,
+ 12, 258, 261, 267, 13, 266, 14, 15, 187, 269,
+ 284, 120, 230, 285, 223, 293, 268, 16, 123, 292,
+ 299, 282, 191, -145, -145, 0, 236, 0, 0, 17,
+ 0, 0, 247, 0, 248, 211, 18, 0, 19, 183,
+ 20, 21, 184, 22, 0, 0, 0, 0, 0, 0,
+ 256, -145, -145, 0, 0, 0, 262, 0, 0, 0,
+ 0, 265, -145, -145, 103, 104, 105, 106, 107, 0,
+ 108, 270, 271, 0, 272, 273, 211, 211, 211, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 184, 18, 0, 19,
- 0, 20, 21, 0, 22, 4, 5, 6, 7, 8,
- 0, 0, 0, 0, 0, 9, 0, 0, 0, 10,
- 0, 0, 0, 11, 12, 0, 0, 0, 13, 0,
- 14, 15, 4, 5, 6, 7, 8, 0, 0, 0,
- 0, 16, 9, 0, 0, 0, 10, 0, 0, 0,
- 11, 12, 0, 17, 0, 13, 0, 14, 15, 0,
- 18, 0, 19, 0, 20, 21, 263, 22, 16, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 17, 0, 0, 0, 0, 0, 266, 18, 0, 19,
- 0, 20, 21, 0, 22, 4, 5, 6, 7, 8,
- 0, 0, 0, 0, 0, 9, 0, 0, 0, 10,
- 0, 0, 0, 11, 12, 0, 0, 0, 13, 0,
- 14, 15, 4, 5, 6, 7, 8, 0, 0, 0,
- 0, 16, 9, 0, 0, 0, 10, 0, 0, 0,
- 11, 12, 0, 17, 0, 13, 0, 14, 15, 289,
- 18, 0, 19, 0, 20, 21, 0, 22, 16, 4,
- 5, 6, 7, 8, 0, 4, 5, 6, 7, 8,
- 17, 0, 0, 0, 0, 0, 0, 18, 0, 19,
- 0, 20, 21, 0, 22, 15, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 16, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 0, 0, 207, 0, 0,
+ 0, 0, 0, 0, 223, 0, 0, 0, 287, 0,
+ 0, 0, 0, -71, 50, 0, 0, 51, -71, 0,
+ 52, 0, -71, -71, -71, -71, -71, 0, 295, 296,
+ 297, 0, -71, -71, -71, 0, 0, -71, -71, -71,
+ 303, -71, 0, 0, 0, -71, -71, -71, -71, -71,
+ -71, -71, -71, 16, 0, 0, -71, 0, 0, -71,
+ -71, -71, -71, -71, -71, -71, -71, -71, -71, 0,
+ -71, -71, 0, -71, 0, -71, -71, -71, -71, 57,
+ -71, 0, 58, 85, 86, 52, 0, 0, 0, 0,
+ 0, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 0, 96, 97, 0, 0, 0, 0, 0, 16, 0,
+ 0, 0, 101, 102, 103, 104, 105, 106, 107, 0,
+ 108, 0, 0, 0, 0, 207, 0, 78, 58, 79,
+ 0, 52, 0, 0, 0, -144, 0, 59, 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, 16, 0, 0, 54, 0, 0,
+ 4, 5, 6, 7, 8, 0, 0, 0, 0, 0,
+ 9, 0, 0, 78, 10, 79, 0, 0, 11, 12,
+ 0, -144, 0, 13, 46, 14, 15, 4, 5, 6,
+ 7, 8, 0, 0, 0, 0, 16, 9, 0, 0,
+ 0, 10, 0, 0, 0, 11, 12, 0, 17, 0,
+ 13, 0, 14, 15, 0, 18, 0, 19, 0, 20,
+ 21, 55, 22, 16, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 17, 0, 0, 0, 0,
+ 0, 0, 18, 0, 19, 0, 20, 21, 145, 22,
+ 0, 4, 5, 6, 7, 8, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 10, 0, 0, 0, 11,
+ 12, 0, 0, 0, 13, 197, 14, 15, 4, 5,
+ 6, 7, 8, 0, 0, 0, 0, 16, 9, 0,
+ 0, 0, 10, 0, 0, 0, 11, 12, 0, 17,
+ 0, 13, 0, 14, 15, 0, 18, 0, 19, 0,
+ 20, 21, 0, 22, 16, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
+ 0, 0, 0, 18, 0, 19, 0, 20, 21, 201,
+ 22, 0, 4, 5, 6, 7, 8, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 10, 0, 0, 0,
+ 11, 12, 0, 0, 0, 13, 0, 14, 15, 4,
+ 5, 6, 7, 8, 0, 0, 0, 0, 16, 9,
+ 0, 0, 0, 10, 0, 0, 0, 11, 12, 0,
+ 17, 0, 13, 0, 14, 15, 0, 18, 0, 19,
+ 0, 20, 21, 0, 22, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 17, 0, 0,
+ 0, 0, 0, 121, 18, 0, 19, 0, 20, 21,
+ 0, 22, 4, 5, 6, 7, 8, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 10, 0, 0, 0,
+ 11, 12, 0, 0, 0, 13, 0, 14, 15, 4,
+ 5, 6, 7, 8, 0, 0, 0, 0, 16, 9,
+ 0, 0, 0, 10, 0, 0, 0, 11, 12, 0,
+ 17, 0, 13, 0, 14, 15, 0, 18, 0, 19,
+ 0, 20, 21, 264, 22, 16, 4, 5, 6, 7,
+ 8, 0, 4, 5, 6, 7, 8, 17, 0, 0,
0, 0, 0, 0, 18, 0, 19, 0, 20, 21,
- 18, 22, 19, 218, 20, 21, 51, 22, 84, 85,
- 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 0, 0, 0, 0, 0, 95, 96, 0, 16,
- 83, 84, 85, 86, 0, 0, 0, 100, 101, 102,
- 103, 104, 105, 106, 0, 107, 87, 88, 219, 0,
- 220, 0, 0, 89, 90, 91, 92, 93, 94, 95,
- 96, 0, 0, 0, 0, 0, 0, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 0, 107, 83,
- 84, 85, 86, 230, 0, 0, 231, 0, 0, 0,
- 0, 0, 0, 0, 0, 87, 88, 0, 0, 0,
- 0, 0, 89, 90, 91, 92, 93, 94, 95, 96,
- 0, 0, 0, 0, 0, 0, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 0, 107, 83, 84,
- 85, 86, 0, 0, 0, 138, 0, 0, 0, 0,
- 0, 0, 0, 0, 87, 88, 0, 0, 0, 0,
- 0, 89, 90, 91, 92, 93, 94, 95, 96, 0,
- 0, 0, 0, 0, 0, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 0, 107, 83, 84, 85,
- 86, 0, 0, 0, 262, 0, 0, 0, 0, 0,
- 0, 0, 0, 87, 88, 0, 0, 0, 0, 0,
- 89, 90, 91, 92, 93, 94, 95, 96, 0, 0,
- 0, 0, 0, 0, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 0, 107, 83, 84, 85, 86,
- 0, 0, 0, 287, 0, 0, 0, 0, 0, 0,
- 0, 0, 87, 88, 0, 0, 0, 0, 0, 89,
- 90, 91, 92, 93, 94, 95, 96, 0, 0, 0,
- 0, 0, 0, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 0, 107, 306, 0, 307, 83, 84,
- 85, 86, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 87, 88, 0, 0, 0, 0,
- 0, 89, 90, 91, 92, 93, 94, 95, 96, 0,
- 0, 83, 84, 85, 86, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 0, 107, 87, 88, 134,
- 0, 0, 0, 0, 89, 90, 91, 92, 93, 94,
- 95, 96, 0, 0, 83, 84, 85, 86, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 0, 107,
- 87, 88, 211, 0, 0, 0, 0, 89, 90, 91,
- 92, 93, 94, 95, 96, 0, 0, 83, 84, 85,
- 86, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 0, 107, 87, 88, 281, 0, 0, 0, 0,
- 89, 90, 91, 92, 93, 94, 95, 96, 0, 0,
- 83, 84, 85, 86, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 0, 107, 87, 88, 305, 0,
- 0, 0, 0, 89, 90, 91, 92, 93, 94, 95,
- 96, 0, 0, 83, 84, 85, 86, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 0, 107, 87,
- 88, 309, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 108, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 234, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 240, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 288, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 294, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 295, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 298, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 299, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 0, 241, 242, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 0, 0, 0, 0,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 83, 84, 85, 86, 0, 0, 0, 0,
- 0, 0, 126, 0, 0, 0, 0, 0, 87, 88,
- 0, 0, 0, 0, 0, 89, 90, 91, 92, 93,
- 94, 95, 96, 0, 0, 83, 84, 85, 86, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 0,
- 107, 87, 88, 0, 0, 0, 0, 0, 89, 90,
- 91, 92, 93, 94, 95, 96, 0, 0, 0, 275,
- 0, 0, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 0, 107, 83, 84, 85, 86, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 292,
- 87, 88, 0, 0, 0, 0, 0, 89, 90, 91,
- 92, 93, 94, 95, 96, 0, 0, 0, 0, 0,
- 0, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 0, 107, 83, 84, 85, 86, 0, 0, 0,
- 0, 0, 0, 293, 0, 0, 0, 0, 0, 87,
- 88, 0, 0, 0, 0, 0, 89, 90, 91, 92,
- 93, 94, 95, 96, 0, 0, 83, 84, 85, 86,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 0, 107, 87, 88, 0, 0, 0, 0, 0, 89,
- 90, 91, 92, 93, 94, 95, 96, 0, 0, 83,
- 84, 85, 86, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 0, 107, 87, 88, 0, 0, 0,
- 0, 0, 89, 90, 91, 92, 93, 94, 95, 96,
- 0, 0, -146, 84, 85, 0, 0, 0, 99, 100,
- 101, 102, 103, 104, 105, 106, 0, 107, 87, 88,
- 0, 0, 0, 0, 0, -146, -146, -146, -146, -146,
- -146, 95, 96, 0, 0, 0, 0, 0, 0, 0,
- 0, -146, 100, 101, 102, 103, 104, 105, 106, 0,
- 107
+ 0, 22, 15, 0, 0, 0, 0, 0, 15, 0,
+ 0, 0, 16, 0, 0, 0, 0, 0, 16, 0,
+ 0, 0, 0, 0, 209, 0, 0, 0, 0, 0,
+ 0, 18, 0, 19, 0, 20, 21, 18, 22, 19,
+ 220, 20, 21, 52, 22, 0, 0, 0, 0, 59,
+ 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, 16, 84, 85, 86,
+ 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 88, 89, 221, 0, 222, 0, 0,
+ 90, 91, 92, 93, 94, 95, 96, 97, 0, 0,
+ 0, 0, 0, 0, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 0, 108, 84, 85, 86, 87,
+ 232, 0, 0, 233, 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, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 0, 108, 84, 85, 86, 87, 0,
+ 0, 0, 141, 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, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 0, 108, 84, 85, 86, 87, 0, 0,
+ 0, 263, 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, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 0, 108, 84, 85, 86, 87, 0, 0, 0,
+ 286, 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,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 0, 108, 301, 0, 302, 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, 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, 84, 85, 86, 87, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 0, 108, 88, 89, 213,
+ 0, 0, 0, 0, 90, 91, 92, 93, 94, 95,
+ 96, 97, 0, 0, 84, 85, 86, 87, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 0, 108,
+ 88, 89, 280, 0, 0, 0, 0, 90, 91, 92,
+ 93, 94, 95, 96, 97, 0, 0, 84, 85, 86,
+ 87, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 0, 108, 88, 89, 300, 0, 0, 0, 0,
+ 90, 91, 92, 93, 94, 95, 96, 97, 0, 0,
+ 84, 85, 86, 87, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 0, 108, 88, 89, 304, 0,
+ 0, 0, 0, 90, 91, 92, 93, 94, 95, 96,
+ 97, 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, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 0, 108, 188,
+ 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, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 0, 108, 241