From 427f3c202f8dde2eb31b99f8aa3d116e7fc5eecb Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Fri, 24 Apr 2020 18:00:19 +0200 Subject: [PATCH 01/12] Add AST struct and parsing for EXPLAIN Signed-off-by: Andres Taylor --- go/vt/sqlparser/analyzer.go | 2 +- go/vt/sqlparser/ast.go | 16 + go/vt/sqlparser/constants.go | 5 + go/vt/sqlparser/parse_test.go | 15 +- go/vt/sqlparser/rewriter.go | 7 + go/vt/sqlparser/sql.go | 7184 +++++++++-------- go/vt/sqlparser/sql.y | 58 +- go/vt/sqlparser/token.go | 3 + go/vt/vtgate/planbuilder/builder.go | 2 +- .../tabletserver/planbuilder/permission.go | 2 +- 10 files changed, 3724 insertions(+), 3570 deletions(-) diff --git a/go/vt/sqlparser/analyzer.go b/go/vt/sqlparser/analyzer.go index 466a2346584..d3e0bd6daf0 100644 --- a/go/vt/sqlparser/analyzer.go +++ b/go/vt/sqlparser/analyzer.go @@ -73,7 +73,7 @@ func ASTToStatementType(stmt Statement) StatementType { return StmtDDL case *Use: return StmtUse - case *OtherRead, *OtherAdmin: + case *OtherRead, *OtherAdmin, *Explain: return StmtOther case *Begin: return StmtBegin diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 2d7f65268ec..8b30319ce97 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -227,6 +227,12 @@ type ( // Rollback represents a Rollback statement. Rollback struct{} + // Explain represents an EXPLAIN statement + Explain struct { + Fmt string + Statement Statement + } + // OtherRead represents a DESCRIBE, or EXPLAIN statement. // It should be used only as an indicator. It does not contain // the full AST for the statement. @@ -254,6 +260,7 @@ func (*Use) iStatement() {} func (*Begin) iStatement() {} func (*Commit) iStatement() {} func (*Rollback) iStatement() {} +func (*Explain) iStatement() {} func (*OtherRead) iStatement() {} func (*OtherAdmin) iStatement() {} func (*Select) iSelectStatement() {} @@ -1295,6 +1302,15 @@ func (node *Rollback) Format(buf *TrackedBuffer) { buf.WriteString("rollback") } +// Format formats the node. +func (node *Explain) Format(buf *TrackedBuffer) { + format := "" + if node.Fmt != "" { + format = "format = " + node.Fmt + " " + } + buf.astPrintf(node, "explain %s%v", format, node.Statement) +} + // Format formats the node. func (node *OtherRead) Format(buf *TrackedBuffer) { buf.WriteString("otherread") diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index de14d3c53eb..54e57c1a10e 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -163,4 +163,9 @@ const ( TxReadOnly = "read only" TxReadWrite = "read write" + + // Explain formats + TreeStr = "tree" + JSONStr = "json" + VitessStr = "vitess" ) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 915af6dbd3f..41889bff68d 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1379,8 +1379,19 @@ var ( input: "desc foobar", output: "otherread", }, { - input: "explain foobar", - output: "otherread", + input: "explain select * from t", + }, { + input: "explain format = tree select * from t", + }, { + input: "explain format = json select * from t", + }, { + input: "explain format = vitess select * from t", + }, { + input: "explain delete from t", + }, { + input: "explain insert into t(col1, col2) values (1, 2)", + }, { + input: "explain update t set col = 2", }, { input: "truncate table foo", output: "truncate table foo", diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go index f9d4ea6b93f..d35f96d9526 100644 --- a/go/vt/sqlparser/rewriter.go +++ b/go/vt/sqlparser/rewriter.go @@ -262,6 +262,10 @@ func replaceExistsExprSubquery(newNode, parent SQLNode) { parent.(*ExistsExpr).Subquery = newNode.(*Subquery) } +func replaceExplainStatement(newNode, parent SQLNode) { + parent.(*Explain).Statement = newNode.(Statement) +} + type replaceExprsItems int func (r *replaceExprsItems) replace(newNode, container SQLNode) { @@ -988,6 +992,9 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { case *ExistsExpr: a.apply(node, n.Subquery, replaceExistsExprSubquery) + case *Explain: + a.apply(node, n.Statement, replaceExplainStatement) + case Exprs: replacer := replaceExprsItems(0) replacerRef := &replacer diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 8377f48738e..a4bc92779dd 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -441,6 +441,9 @@ const TIES = 57674 const UNBOUNDED = 57675 const VCPU = 57676 const VISIBLE = 57677 +const FORMAT = 57678 +const TREE = 57679 +const VITESS = 57680 var yyToknames = [...]string{ "$end", @@ -795,6 +798,9 @@ var yyToknames = [...]string{ "UNBOUNDED", "VCPU", "VISIBLE", + "FORMAT", + "TREE", + "VITESS", "';'", } var yyStatenames = [...]string{} @@ -809,1744 +815,1753 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 3, - 5, 33, + 5, 34, -2, 4, - -1, 38, - 33, 299, - 128, 299, - 140, 299, - 165, 313, - 166, 313, - -2, 301, - -1, 62, - 37, 337, - -2, 345, - -1, 318, - 37, 338, - -2, 350, - -1, 319, - 37, 339, - -2, 351, - -1, 334, - 116, 667, - -2, 663, - -1, 335, - 116, 668, - -2, 664, - -1, 404, - 86, 918, - -2, 66, - -1, 405, - 86, 835, + -1, 39, + 33, 300, + 128, 300, + 140, 300, + 165, 314, + 166, 314, + -2, 302, + -1, 45, + 1, 971, + 356, 971, + -2, 323, + -1, 63, + 37, 346, + -2, 354, + -1, 321, + 37, 347, + -2, 359, + -1, 322, + 37, 348, + -2, 360, + -1, 337, + 116, 676, + -2, 672, + -1, 338, + 116, 677, + -2, 673, + -1, 407, + 86, 927, -2, 67, - -1, 410, - 86, 803, - -2, 629, - -1, 412, - 86, 866, - -2, 631, - -1, 715, - 1, 375, - 5, 375, - 12, 375, - 13, 375, - 14, 375, - 15, 375, - 17, 375, - 19, 375, - 30, 375, - 31, 375, - 44, 375, - 45, 375, - 46, 375, - 47, 375, - 48, 375, - 50, 375, - 51, 375, - 54, 375, - 55, 375, - 57, 375, - 58, 375, - 353, 375, - -2, 393, - -1, 718, - 55, 48, - 57, 48, - -2, 52, - -1, 874, - 116, 670, - -2, 666, - -1, 1109, + -1, 408, + 86, 844, + -2, 68, + -1, 413, + 86, 812, + -2, 638, + -1, 415, + 86, 875, + -2, 640, + -1, 598, 5, 34, - -2, 461, - -1, 1140, - 5, 33, - -2, 602, - -1, 1387, + -2, 327, + -1, 723, + 1, 384, + 5, 384, + 12, 384, + 13, 384, + 14, 384, + 15, 384, + 17, 384, + 19, 384, + 30, 384, + 31, 384, + 44, 384, + 45, 384, + 46, 384, + 47, 384, + 48, 384, + 50, 384, + 51, 384, + 54, 384, + 55, 384, + 57, 384, + 58, 384, + 356, 384, + -2, 402, + -1, 726, + 55, 49, + 57, 49, + -2, 53, + -1, 885, + 116, 679, + -2, 675, + -1, 1120, + 5, 35, + -2, 470, + -1, 1151, 5, 34, - -2, 603, - -1, 1440, - 5, 33, - -2, 605, - -1, 1515, + -2, 611, + -1, 1398, + 5, 35, + -2, 612, + -1, 1451, 5, 34, - -2, 606, + -2, 614, + -1, 1526, + 5, 35, + -2, 615, } const yyPrivate = 57344 -const yyLast = 16362 +const yyLast = 16387 var yyAct = [...]int{ - 334, 1549, 1539, 1347, 1505, 1236, 339, 990, 1143, 1420, - 1407, 1453, 575, 1161, 352, 1321, 1288, 1019, 670, 1289, - 1285, 365, 986, 1144, 963, 58, 1033, 564, 1187, 999, - 1295, 669, 3, 81, 1301, 1260, 989, 271, 899, 291, - 271, 836, 1213, 1204, 961, 1101, 731, 298, 929, 1003, - 965, 950, 307, 1087, 876, 320, 906, 599, 711, 409, - 612, 817, 712, 605, 1029, 730, 720, 533, 271, 81, - 337, 403, 534, 271, 943, 271, 398, 395, 57, 622, - 1542, 406, 1526, 1537, 306, 684, 62, 1052, 553, 1513, - 1534, 1348, 1525, 299, 300, 301, 302, 685, 1277, 305, - 1379, 1051, 1512, 538, 267, 263, 264, 265, 341, 1315, - 909, 1316, 1317, 64, 65, 66, 67, 68, 981, 982, - 980, 83, 84, 85, 1175, 326, 732, 1174, 733, 1261, - 1176, 83, 84, 85, 1195, 83, 84, 85, 593, 304, - 303, 1012, 1050, 1479, 635, 634, 644, 645, 637, 638, - 639, 640, 641, 642, 643, 636, 1410, 377, 646, 383, - 384, 381, 382, 380, 379, 378, 1238, 1020, 1263, 83, - 84, 85, 259, 385, 386, 257, 588, 261, 1370, 1368, - 589, 586, 587, 297, 591, 806, 581, 582, 275, 570, - 1240, 572, 1047, 1044, 1045, 278, 1043, 592, 805, 803, - 1536, 1533, 1265, 285, 1269, 1506, 1264, 1235, 1262, 573, - 944, 1498, 1004, 1267, 1557, 554, 1223, 540, 261, 1239, - 1162, 1164, 1266, 569, 571, 266, 807, 1241, 1462, 1054, - 1057, 578, 810, 794, 804, 1268, 1270, 283, 543, 1006, - 1232, 1311, 1310, 290, 1309, 536, 1234, 1219, 1220, 1221, - 1006, 274, 262, 1064, 332, 1487, 1063, 1454, 271, 545, - 546, 658, 659, 271, 1390, 555, 1049, 1553, 1246, 271, - 276, 260, 1456, 1171, 1128, 271, 562, 1095, 847, 568, - 81, 83, 84, 85, 81, 1118, 81, 726, 1048, 626, - 1115, 560, 81, 258, 987, 646, 1013, 287, 279, 1163, - 288, 289, 295, 844, 1020, 837, 280, 282, 292, 567, - 277, 294, 293, 550, 831, 1480, 1222, 1511, 976, 566, - 841, 1227, 1224, 1215, 1225, 1218, 577, 1214, 1053, 81, - 1496, 1216, 1217, 1463, 1461, 621, 607, 71, 579, 1005, - 1455, 1006, 1471, 1055, 608, 1226, 1233, 1299, 1231, 734, - 1005, 595, 596, 1279, 556, 557, 558, 635, 634, 644, - 645, 637, 638, 639, 640, 641, 642, 643, 636, 620, - 619, 646, 83, 84, 85, 72, 613, 598, 547, 1551, - 548, 930, 1552, 549, 1550, 636, 621, 619, 646, 796, - 838, 658, 659, 271, 271, 271, 658, 659, 1009, 832, - 609, 565, 81, 621, 1010, 83, 84, 85, 81, 83, - 84, 85, 1102, 930, 406, 1125, 635, 634, 644, 645, - 637, 638, 639, 640, 641, 642, 643, 636, 611, 1501, - 646, 639, 640, 641, 642, 643, 636, 883, 710, 646, - 1113, 1005, 1112, 1193, 532, 656, 1002, 1000, 55, 1001, - 616, 881, 882, 880, 1558, 1517, 998, 1004, 1334, 1416, - 879, 620, 619, 724, 687, 689, 691, 693, 695, 697, - 698, 1415, 719, 729, 539, 1208, 688, 690, 621, 694, - 696, 1207, 699, 1196, 637, 638, 639, 640, 641, 642, - 643, 636, 1519, 580, 646, 583, 630, 1559, 633, 1497, - 256, 594, 715, 1434, 647, 648, 649, 650, 651, 652, - 653, 1413, 631, 632, 629, 635, 634, 644, 645, 637, - 638, 639, 640, 641, 642, 643, 636, 850, 851, 646, - 866, 868, 869, 271, 1114, 846, 867, 792, 81, 1205, - 795, 1074, 797, 271, 271, 81, 81, 81, 620, 619, - 822, 271, 541, 542, 271, 1281, 598, 271, 815, 816, - 1468, 271, 23, 81, 1467, 621, 392, 393, 81, 81, - 81, 271, 81, 81, 845, 1298, 1092, 1093, 1094, 620, - 619, 1330, 81, 81, 83, 84, 85, 1286, 620, 619, - 1298, 821, 1007, 620, 619, 1385, 621, 660, 661, 662, - 663, 664, 665, 666, 667, 621, 1459, 1535, 1521, 598, - 621, 81, 355, 354, 357, 358, 359, 360, 271, 911, - 819, 356, 361, 311, 81, 83, 84, 85, 1470, 901, - 55, 811, 83, 84, 85, 1338, 1178, 1459, 1509, 873, - 1459, 598, 952, 955, 956, 957, 953, 900, 954, 958, - 947, 877, 1302, 1303, 1459, 1488, 902, 1459, 1458, 1179, - 852, 1405, 1404, 1392, 598, 1389, 598, 1088, 81, 861, - 634, 644, 645, 637, 638, 639, 640, 641, 642, 643, - 636, 1340, 1339, 646, 918, 921, 874, 25, 872, 722, - 931, 1336, 1337, 1336, 1335, 859, 598, 947, 598, 911, - 598, 81, 81, 870, 913, 741, 740, 1088, 59, 271, - 979, 1138, 947, 722, 25, 1131, 1139, 271, 271, 946, - 860, 271, 271, 1130, 859, 271, 271, 271, 81, 903, - 904, 721, 970, 723, 721, 725, 848, 55, 878, 809, - 406, 81, 534, 1439, 727, 1237, 947, 793, 1527, 1423, - 859, 25, 1298, 991, 800, 801, 802, 723, 1037, 721, - 939, 940, 313, 1422, 55, 971, 859, 1014, 1397, 973, - 1034, 1326, 820, 1021, 1022, 1023, 1182, 824, 825, 826, - 1030, 828, 829, 1025, 914, 915, 819, 1024, 920, 923, - 924, 833, 834, 969, 978, 271, 81, 1544, 81, 977, - 1056, 55, 974, 1540, 271, 271, 271, 271, 271, 994, - 271, 271, 55, 938, 271, 81, 941, 942, 1035, 1328, - 952, 955, 956, 957, 953, 715, 954, 958, 1305, 715, - 1531, 271, 1286, 715, 1302, 1303, 271, 1209, 271, 271, - 842, 813, 1155, 271, 1153, 321, 1308, 1156, 1157, 1154, - 956, 957, 1307, 1031, 1032, 1152, 1151, 1524, 322, 1245, - 873, 271, 1076, 610, 1071, 614, 615, 324, 1529, 323, - 1086, 335, 644, 645, 637, 638, 639, 640, 641, 642, - 643, 636, 1382, 875, 646, 1085, 884, 885, 886, 887, - 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, - 898, 926, 877, 600, 82, 1090, 1200, 874, 272, 1079, - 1081, 272, 1080, 739, 927, 601, 563, 1091, 1192, 1503, - 1089, 1502, 635, 634, 644, 645, 637, 638, 639, 640, - 641, 642, 643, 636, 321, 1097, 646, 1437, 1190, 272, - 82, 935, 1184, 1383, 272, 1418, 272, 322, 271, 271, - 271, 271, 271, 1145, 318, 319, 324, 1040, 323, 812, - 271, 960, 1084, 271, 314, 315, 308, 271, 1359, 715, - 1083, 271, 309, 59, 1358, 1140, 1249, 1124, 1088, 590, - 1546, 1545, 61, 1119, 1116, 835, 617, 1546, 1177, 878, - 81, 1484, 1411, 843, 913, 63, 56, 1180, 1, 1183, - 1538, 1349, 991, 1188, 1188, 1039, 1146, 1041, 1419, 1149, - 1158, 1147, 1148, 1046, 1150, 1168, 1504, 1166, 1106, 1107, - 1452, 1320, 997, 1167, 1068, 1169, 1172, 1170, 988, 70, - 531, 69, 1189, 1197, 1198, 1495, 1122, 830, 81, 81, - 576, 996, 1199, 995, 1201, 1202, 1203, 1015, 1016, 1017, - 1018, 1185, 1186, 1460, 1409, 1008, 715, 715, 715, 715, - 715, 1194, 1011, 1026, 1027, 1028, 1327, 1191, 81, 1206, - 1500, 715, 747, 745, 746, 744, 1381, 749, 748, 715, - 743, 284, 401, 271, 959, 735, 1036, 1228, 618, 73, - 1212, 1230, 1229, 1042, 840, 281, 81, 584, 585, 286, - 654, 1082, 1173, 407, 400, 1293, 849, 604, 1252, 1357, - 1248, 1243, 1244, 1123, 900, 681, 635, 634, 644, 645, - 637, 638, 639, 640, 641, 642, 643, 636, 928, 272, - 646, 340, 865, 353, 272, 350, 1098, 1099, 1100, 351, - 272, 1282, 81, 81, 1254, 1145, 272, 1287, 1278, 854, - 1272, 82, 1271, 1253, 1137, 82, 628, 82, 338, 330, - 714, 1290, 707, 82, 951, 949, 81, 948, 396, 1304, - 1300, 713, 858, 1292, 317, 1378, 1478, 316, 925, 27, - 81, 60, 81, 81, 1306, 325, 1188, 1188, 874, 1319, - 1079, 20, 991, 1313, 991, 19, 1312, 1297, 18, 21, - 82, 1333, 1376, 17, 16, 15, 551, 31, 22, 14, - 271, 13, 12, 1323, 1324, 1325, 1318, 11, 10, 9, - 1331, 1332, 1314, 8, 7, 6, 5, 4, 310, 24, - 271, 2, 0, 0, 0, 0, 81, 934, 1350, 81, - 81, 81, 271, 0, 0, 0, 0, 81, 1211, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1252, - 0, 1342, 0, 0, 272, 272, 272, 0, 0, 0, - 0, 1355, 1356, 82, 0, 0, 1343, 1242, 1345, 82, - 635, 634, 644, 645, 637, 638, 639, 640, 641, 642, - 643, 636, 1366, 0, 646, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1145, 0, 0, 1384, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 0, 1394, 1393, 0, 0, 1180, 81, 0, 0, - 0, 991, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 81, - 0, 0, 0, 1412, 0, 1414, 0, 1256, 1257, 0, - 0, 1421, 0, 0, 0, 1427, 1403, 0, 0, 0, - 1273, 1274, 0, 1275, 1276, 0, 0, 0, 1425, 0, - 0, 0, 1426, 0, 0, 1283, 1284, 0, 0, 0, - 81, 81, 0, 81, 0, 0, 0, 0, 81, 0, - 81, 81, 81, 271, 272, 1438, 81, 1290, 1446, 82, - 1447, 1449, 1450, 0, 272, 272, 82, 82, 82, 0, - 1440, 1457, 272, 81, 271, 272, 1464, 1451, 272, 0, - 0, 1433, 272, 1472, 82, 1465, 0, 1466, 0, 82, - 82, 82, 272, 82, 82, 0, 1445, 1329, 0, 0, - 0, 0, 0, 82, 82, 1494, 1485, 0, 0, 0, - 81, 1290, 0, 0, 1493, 1492, 0, 0, 0, 0, - 0, 81, 81, 1486, 0, 0, 0, 0, 0, 1508, - 1507, 0, 82, 1421, 991, 0, 0, 0, 81, 272, - 0, 1145, 0, 1514, 0, 82, 0, 0, 0, 271, - 0, 0, 366, 52, 0, 0, 0, 81, 0, 0, - 1361, 0, 0, 0, 0, 1523, 0, 0, 0, 0, - 0, 0, 1375, 0, 0, 0, 1528, 1530, 81, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1532, 82, - 0, 1543, 0, 0, 597, 0, 0, 0, 1554, 0, - 0, 1417, 0, 0, 0, 52, 0, 0, 1363, 1364, - 1374, 1365, 0, 312, 1367, 0, 1369, 0, 0, 0, - 0, 0, 82, 82, 0, 0, 0, 0, 0, 0, - 272, 0, 0, 0, 0, 0, 0, 0, 272, 272, - 0, 764, 272, 272, 0, 0, 272, 272, 272, 82, - 635, 634, 644, 645, 637, 638, 639, 640, 641, 642, - 643, 636, 82, 0, 646, 0, 0, 0, 0, 1406, - 0, 0, 0, 0, 0, 0, 0, 0, 1428, 1429, - 1430, 1431, 1432, 0, 0, 0, 1435, 1436, 635, 634, - 644, 645, 637, 638, 639, 640, 641, 642, 643, 636, - 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 364, 272, 82, 0, 82, - 0, 0, 0, 752, 0, 272, 272, 272, 272, 272, - 0, 272, 272, 0, 0, 272, 82, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 272, 0, 0, 0, 0, 272, 0, 272, - 272, 0, 765, 0, 272, 0, 0, 0, 0, 1373, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 272, 0, 408, 778, 781, 782, 783, 784, - 785, 786, 0, 787, 788, 789, 790, 791, 766, 767, - 768, 769, 750, 751, 779, 0, 753, 0, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 770, 771, - 772, 773, 774, 775, 776, 777, 0, 0, 0, 0, - 0, 0, 574, 0, 0, 0, 574, 0, 574, 0, - 0, 0, 0, 0, 574, 0, 1547, 635, 634, 644, - 645, 637, 638, 639, 640, 641, 642, 643, 636, 0, - 0, 646, 0, 0, 0, 52, 0, 0, 0, 272, - 272, 272, 272, 272, 0, 0, 0, 780, 1255, 0, - 0, 272, 0, 0, 272, 0, 655, 0, 272, 657, - 0, 0, 272, 0, 0, 0, 853, 0, 635, 634, - 644, 645, 637, 638, 639, 640, 641, 642, 643, 636, - 0, 82, 646, 0, 0, 0, 0, 668, 0, 672, - 673, 674, 675, 676, 677, 678, 679, 680, 0, 683, - 686, 686, 686, 692, 686, 686, 692, 686, 700, 701, - 702, 703, 704, 705, 706, 1103, 716, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 910, 912, 82, - 82, 0, 0, 0, 0, 635, 634, 644, 645, 637, - 638, 639, 640, 641, 642, 643, 636, 0, 0, 646, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 0, 0, 0, 0, 408, 0, 0, 0, 408, - 0, 408, 0, 0, 272, 0, 0, 408, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 635, 634, - 644, 645, 637, 638, 639, 640, 641, 642, 643, 636, - 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 624, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 82, 0, 0, 0, 0, 0, - 0, 0, 603, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, - 574, 0, 0, 0, 0, 0, 0, 574, 574, 574, - 0, 82, 0, 82, 82, 0, 0, 0, 0, 270, - 0, 0, 296, 0, 0, 574, 0, 408, 0, 0, - 574, 574, 574, 736, 574, 574, 0, 0, 0, 0, - 0, 272, 0, 0, 574, 574, 0, 329, 0, 0, - 399, 0, 0, 0, 0, 270, 0, 270, 0, 0, - 0, 272, 0, 0, 0, 0, 0, 82, 0, 0, - 82, 82, 82, 272, 0, 0, 0, 0, 82, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1104, 0, 0, 0, 1105, 0, 0, 0, 0, 0, - 0, 1109, 1110, 1111, 0, 0, 0, 0, 1117, 0, - 52, 1120, 1121, 0, 0, 0, 0, 0, 0, 1127, - 0, 0, 0, 1129, 0, 672, 1132, 1133, 1134, 1135, - 1136, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 0, 0, 0, 0, 0, 0, 0, 82, 1160, - 0, 0, 0, 408, 0, 0, 0, 0, 0, 0, - 408, 408, 408, 82, 0, 0, 0, 0, 0, 962, - 82, 0, 0, 716, 0, 0, 0, 716, 408, 0, - 0, 0, 0, 408, 408, 408, 0, 408, 408, 0, - 0, 0, 0, 328, 0, 0, 0, 408, 408, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 82, 82, 0, 82, 0, 0, 0, 0, 82, - 0, 82, 82, 82, 272, 0, 855, 82, 0, 0, - 270, 0, 0, 0, 0, 270, 0, 0, 0, 624, - 0, 270, 408, 0, 82, 272, 0, 270, 574, 0, - 574, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 574, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 82, 0, 905, 0, 0, 0, 0, 0, 0, - 329, 0, 82, 82, 1258, 1259, 0, 0, 0, 932, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 0, 0, 0, 716, 0, 0, 936, 937, 0, 0, - 272, 0, 0, 0, 0, 0, 1096, 0, 82, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 408, 0, 0, 0, 0, 0, 82, - 0, 0, 0, 0, 0, 0, 408, 0, 0, 0, - 0, 0, 0, 0, 0, 270, 270, 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, 0, 0, 0, 0, 1141, 1142, 0, 0, - 716, 716, 716, 716, 716, 0, 0, 0, 0, 0, - 0, 408, 0, 408, 0, 962, 0, 1165, 0, 0, - 0, 0, 0, 716, 0, 0, 0, 0, 0, 0, - 408, 0, 0, 717, 0, 0, 0, 0, 0, 0, - 0, 1360, 0, 0, 0, 0, 0, 0, 1362, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1371, - 1372, 0, 0, 408, 0, 0, 0, 0, 0, 0, - 269, 0, 0, 0, 0, 0, 0, 0, 0, 1386, - 1387, 1388, 0, 1391, 0, 0, 0, 0, 0, 0, - 0, 574, 0, 0, 0, 0, 0, 0, 0, 0, - 1402, 397, 602, 606, 0, 270, 535, 0, 537, 0, - 0, 0, 0, 0, 0, 270, 270, 0, 0, 0, - 574, 0, 0, 270, 0, 627, 270, 0, 0, 270, - 0, 0, 0, 818, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 270, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 671, 0, 932, 0, 0, 0, 0, 0, 0, 682, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1448, 0, 0, - 270, 0, 1291, 0, 52, 0, 0, 0, 0, 818, - 0, 0, 0, 0, 0, 408, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1474, 1475, 1476, 1477, - 0, 1481, 0, 1482, 1483, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1489, 0, 1490, 1491, 0, - 0, 329, 0, 0, 0, 0, 329, 329, 0, 0, - 329, 329, 329, 1210, 408, 0, 933, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1510, 0, 0, 0, - 0, 0, 0, 0, 1515, 329, 329, 329, 329, 329, - 0, 270, 0, 408, 0, 0, 0, 0, 0, 270, - 967, 544, 1520, 270, 270, 0, 552, 270, 975, 818, - 0, 0, 559, 0, 0, 0, 0, 0, 561, 0, - 0, 408, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1377, 0, 0, 0, 0, 1555, 1556, 0, 0, 0, - 0, 0, 0, 0, 408, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 932, 0, 0, 1294, 1296, 0, - 823, 0, 1399, 1400, 1401, 0, 0, 270, 0, 0, - 0, 0, 0, 0, 0, 0, 270, 270, 270, 270, - 270, 1296, 270, 270, 839, 0, 270, 0, 0, 0, - 0, 0, 0, 0, 574, 408, 0, 408, 1322, 0, - 0, 0, 0, 270, 0, 0, 0, 0, 270, 0, - 1072, 1073, 0, 863, 864, 270, 0, 0, 0, 0, - 818, 0, 0, 0, 0, 0, 709, 0, 718, 0, - 0, 0, 329, 270, 0, 0, 0, 0, 1291, 0, - 0, 1441, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1346, 0, 0, 1351, 1352, 1353, 0, 0, 0, - 0, 0, 408, 0, 0, 0, 671, 0, 0, 916, - 917, 1469, 0, 0, 0, 0, 0, 0, 0, 0, - 329, 329, 0, 25, 26, 53, 28, 29, 0, 0, - 0, 0, 1291, 0, 52, 0, 0, 0, 329, 0, - 0, 0, 44, 0, 0, 0, 0, 30, 49, 50, - 0, 0, 0, 0, 932, 0, 0, 0, 0, 933, - 270, 270, 270, 270, 270, 0, 0, 0, 985, 39, - 0, 0, 1159, 55, 408, 270, 0, 0, 0, 967, - 0, 0, 1408, 270, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 408, 0, 0, - 0, 0, 0, 0, 408, 0, 742, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 798, 799, 0, 0, - 0, 0, 0, 0, 808, 0, 0, 397, 0, 1541, - 814, 0, 0, 0, 0, 0, 32, 33, 35, 34, - 37, 0, 51, 0, 827, 1442, 1443, 0, 1444, 0, - 0, 0, 0, 1408, 0, 1408, 1408, 1408, 0, 0, - 0, 1322, 0, 0, 0, 38, 45, 46, 0, 0, - 47, 48, 36, 0, 0, 0, 0, 0, 1408, 1077, - 1078, 0, 606, 0, 0, 0, 40, 41, 0, 42, - 43, 862, 0, 0, 0, 270, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, - 0, 0, 0, 0, 0, 1499, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 408, 408, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 932, 818, 0, 1516, 0, 1108, 0, 0, 0, 0, - 0, 933, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1522, 0, 1126, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 945, 1408, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 972, 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, 270, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 270, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 270, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1038, 0, - 0, 0, 0, 0, 0, 0, 0, 1058, 1059, 1060, - 1061, 1062, 0, 1065, 1066, 0, 0, 1067, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1069, 0, 0, 0, 0, 1070, - 0, 933, 0, 0, 0, 0, 1075, 0, 0, 0, - 0, 0, 1250, 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, 1280, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 967, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 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, 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, 933, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 270, 0, 0, 0, 1380, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 671, 0, 0, 0, 0, - 0, 0, 0, 1395, 0, 0, 1396, 0, 0, 1398, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1247, 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, 1424, 671, 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, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1341, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1344, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1354, 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, 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, 518, 506, 0, 463, - 521, 436, 453, 529, 454, 457, 494, 421, 476, 171, - 451, 0, 440, 416, 447, 417, 438, 465, 115, 469, - 435, 508, 479, 520, 143, 441, 527, 145, 485, 0, - 217, 159, 0, 0, 0, 467, 510, 474, 503, 462, - 495, 426, 484, 522, 452, 492, 523, 0, 0, 0, - 83, 84, 85, 0, 992, 993, 0, 0, 0, 0, - 0, 105, 0, 489, 517, 449, 491, 493, 415, 486, - 0, 419, 422, 528, 513, 444, 445, 1181, 0, 0, - 0, 0, 0, 0, 466, 475, 500, 460, 0, 0, - 0, 0, 0, 0, 0, 0, 442, 1473, 483, 0, - 0, 0, 423, 420, 0, 0, 464, 0, 0, 0, - 425, 0, 443, 501, 0, 413, 124, 505, 512, 461, - 273, 516, 459, 458, 519, 190, 0, 221, 127, 142, - 101, 139, 87, 97, 0, 126, 168, 197, 201, 509, - 439, 448, 109, 446, 199, 178, 237, 482, 180, 198, - 146, 227, 191, 236, 246, 247, 224, 244, 251, 214, - 90, 223, 235, 106, 209, 92, 233, 220, 157, 136, - 137, 91, 1518, 195, 114, 122, 111, 170, 230, 231, - 110, 254, 98, 243, 94, 99, 242, 164, 226, 234, - 158, 151, 93, 232, 156, 150, 141, 118, 129, 188, - 148, 189, 130, 161, 160, 162, 0, 418, 0, 218, - 240, 255, 103, 434, 225, 249, 250, 0, 0, 104, - 123, 117, 187, 121, 163, 100, 132, 215, 140, 147, - 194, 253, 177, 200, 107, 239, 216, 430, 433, 428, - 429, 477, 478, 524, 525, 526, 502, 424, 0, 431, - 432, 0, 507, 514, 515, 481, 86, 95, 144, 252, - 192, 120, 241, 414, 427, 113, 437, 0, 0, 450, - 455, 456, 468, 470, 471, 472, 473, 480, 487, 488, - 490, 496, 497, 498, 499, 504, 511, 530, 88, 89, - 96, 102, 108, 112, 116, 119, 125, 128, 131, 133, - 134, 135, 138, 149, 152, 153, 154, 155, 165, 166, - 167, 169, 172, 173, 174, 175, 176, 179, 181, 182, - 183, 184, 185, 186, 193, 196, 202, 203, 204, 205, - 206, 207, 208, 210, 211, 212, 213, 219, 222, 228, - 229, 238, 245, 248, 518, 506, 0, 463, 521, 436, - 453, 529, 454, 457, 494, 421, 476, 171, 451, 0, - 440, 416, 447, 417, 438, 465, 115, 469, 435, 508, - 479, 520, 143, 441, 527, 145, 485, 0, 217, 159, - 0, 0, 0, 467, 510, 474, 503, 462, 495, 426, - 484, 522, 452, 492, 523, 0, 0, 0, 83, 84, - 85, 0, 992, 993, 0, 0, 0, 0, 0, 105, - 0, 489, 517, 449, 491, 493, 415, 486, 0, 419, - 422, 528, 513, 444, 445, 0, 0, 0, 0, 0, - 0, 0, 466, 475, 500, 460, 0, 0, 0, 0, - 0, 0, 0, 0, 442, 0, 483, 0, 0, 0, - 423, 420, 0, 0, 464, 0, 0, 0, 425, 0, - 443, 501, 0, 413, 124, 505, 512, 461, 273, 516, - 459, 458, 519, 190, 0, 221, 127, 142, 101, 139, - 87, 97, 0, 126, 168, 197, 201, 509, 439, 448, - 109, 446, 199, 178, 237, 482, 180, 198, 146, 227, - 191, 236, 246, 247, 224, 244, 251, 214, 90, 223, - 235, 106, 209, 92, 233, 220, 157, 136, 137, 91, - 0, 195, 114, 122, 111, 170, 230, 231, 110, 254, - 98, 243, 94, 99, 242, 164, 226, 234, 158, 151, - 93, 232, 156, 150, 141, 118, 129, 188, 148, 189, - 130, 161, 160, 162, 0, 418, 0, 218, 240, 255, - 103, 434, 225, 249, 250, 0, 0, 104, 123, 117, - 187, 121, 163, 100, 132, 215, 140, 147, 194, 253, - 177, 200, 107, 239, 216, 430, 433, 428, 429, 477, - 478, 524, 525, 526, 502, 424, 0, 431, 432, 0, - 507, 514, 515, 481, 86, 95, 144, 252, 192, 120, - 241, 414, 427, 113, 437, 0, 0, 450, 455, 456, - 468, 470, 471, 472, 473, 480, 487, 488, 490, 496, - 497, 498, 499, 504, 511, 530, 88, 89, 96, 102, - 108, 112, 116, 119, 125, 128, 131, 133, 134, 135, - 138, 149, 152, 153, 154, 155, 165, 166, 167, 169, - 172, 173, 174, 175, 176, 179, 181, 182, 183, 184, - 185, 186, 193, 196, 202, 203, 204, 205, 206, 207, - 208, 210, 211, 212, 213, 219, 222, 228, 229, 238, - 245, 248, 518, 506, 0, 463, 521, 436, 453, 529, - 454, 457, 494, 421, 476, 171, 451, 0, 440, 416, - 447, 417, 438, 465, 115, 469, 435, 508, 479, 520, - 143, 441, 527, 145, 485, 0, 217, 159, 0, 0, - 0, 467, 510, 474, 503, 462, 495, 426, 484, 522, - 452, 492, 523, 55, 0, 0, 83, 84, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 105, 0, 489, - 517, 449, 491, 493, 415, 486, 0, 419, 422, 528, - 513, 444, 445, 0, 0, 0, 0, 0, 0, 0, - 466, 475, 500, 460, 0, 0, 0, 0, 0, 0, - 0, 0, 442, 0, 483, 0, 0, 0, 423, 420, - 0, 0, 464, 0, 0, 0, 425, 0, 443, 501, - 0, 413, 124, 505, 512, 461, 273, 516, 459, 458, - 519, 190, 0, 221, 127, 142, 101, 139, 87, 97, - 0, 126, 168, 197, 201, 509, 439, 448, 109, 446, - 199, 178, 237, 482, 180, 198, 146, 227, 191, 236, - 246, 247, 224, 244, 251, 214, 90, 223, 235, 106, - 209, 92, 233, 220, 157, 136, 137, 91, 0, 195, - 114, 122, 111, 170, 230, 231, 110, 254, 98, 243, - 94, 99, 242, 164, 226, 234, 158, 151, 93, 232, - 156, 150, 141, 118, 129, 188, 148, 189, 130, 161, - 160, 162, 0, 418, 0, 218, 240, 255, 103, 434, - 225, 249, 250, 0, 0, 104, 123, 117, 187, 121, - 163, 100, 132, 215, 140, 147, 194, 253, 177, 200, - 107, 239, 216, 430, 433, 428, 429, 477, 478, 524, - 525, 526, 502, 424, 0, 431, 432, 0, 507, 514, - 515, 481, 86, 95, 144, 252, 192, 120, 241, 414, - 427, 113, 437, 0, 0, 450, 455, 456, 468, 470, - 471, 472, 473, 480, 487, 488, 490, 496, 497, 498, - 499, 504, 511, 530, 88, 89, 96, 102, 108, 112, - 116, 119, 125, 128, 131, 133, 134, 135, 138, 149, - 152, 153, 154, 155, 165, 166, 167, 169, 172, 173, - 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, - 193, 196, 202, 203, 204, 205, 206, 207, 208, 210, - 211, 212, 213, 219, 222, 228, 229, 238, 245, 248, - 518, 506, 0, 463, 521, 436, 453, 529, 454, 457, - 494, 421, 476, 171, 451, 0, 440, 416, 447, 417, - 438, 465, 115, 469, 435, 508, 479, 520, 143, 441, - 527, 145, 485, 0, 217, 159, 0, 0, 0, 467, - 510, 474, 503, 462, 495, 426, 484, 522, 452, 492, - 523, 0, 0, 0, 83, 84, 85, 0, 0, 0, - 0, 0, 0, 0, 0, 105, 0, 489, 517, 449, - 491, 493, 415, 486, 0, 419, 422, 528, 513, 444, - 445, 0, 0, 0, 0, 0, 0, 0, 466, 475, - 500, 460, 0, 0, 0, 0, 0, 0, 1251, 0, - 442, 0, 483, 0, 0, 0, 423, 420, 0, 0, - 464, 0, 0, 0, 425, 0, 443, 501, 0, 413, - 124, 505, 512, 461, 273, 516, 459, 458, 519, 190, - 0, 221, 127, 142, 101, 139, 87, 97, 0, 126, - 168, 197, 201, 509, 439, 448, 109, 446, 199, 178, - 237, 482, 180, 198, 146, 227, 191, 236, 246, 247, - 224, 244, 251, 214, 90, 223, 235, 106, 209, 92, - 233, 220, 157, 136, 137, 91, 0, 195, 114, 122, - 111, 170, 230, 231, 110, 254, 98, 243, 94, 99, - 242, 164, 226, 234, 158, 151, 93, 232, 156, 150, - 141, 118, 129, 188, 148, 189, 130, 161, 160, 162, - 0, 418, 0, 218, 240, 255, 103, 434, 225, 249, - 250, 0, 0, 104, 123, 117, 187, 121, 163, 100, - 132, 215, 140, 147, 194, 253, 177, 200, 107, 239, - 216, 430, 433, 428, 429, 477, 478, 524, 525, 526, - 502, 424, 0, 431, 432, 0, 507, 514, 515, 481, - 86, 95, 144, 252, 192, 120, 241, 414, 427, 113, - 437, 0, 0, 450, 455, 456, 468, 470, 471, 472, - 473, 480, 487, 488, 490, 496, 497, 498, 499, 504, - 511, 530, 88, 89, 96, 102, 108, 112, 116, 119, - 125, 128, 131, 133, 134, 135, 138, 149, 152, 153, - 154, 155, 165, 166, 167, 169, 172, 173, 174, 175, - 176, 179, 181, 182, 183, 184, 185, 186, 193, 196, - 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, - 213, 219, 222, 228, 229, 238, 245, 248, 518, 506, - 0, 463, 521, 436, 453, 529, 454, 457, 494, 421, - 476, 171, 451, 0, 440, 416, 447, 417, 438, 465, - 115, 469, 435, 508, 479, 520, 143, 441, 527, 145, - 485, 0, 217, 159, 0, 0, 0, 467, 510, 474, - 503, 462, 495, 426, 484, 522, 452, 492, 523, 0, - 0, 0, 83, 84, 85, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 0, 489, 517, 449, 491, 493, - 415, 486, 0, 419, 422, 528, 513, 444, 445, 0, - 0, 0, 0, 0, 0, 0, 466, 475, 500, 460, - 0, 0, 0, 0, 0, 0, 976, 0, 442, 0, - 483, 0, 0, 0, 423, 420, 0, 0, 464, 0, - 0, 0, 425, 0, 443, 501, 0, 413, 124, 505, - 512, 461, 273, 516, 459, 458, 519, 190, 0, 221, - 127, 142, 101, 139, 87, 97, 0, 126, 168, 197, - 201, 509, 439, 448, 109, 446, 199, 178, 237, 482, - 180, 198, 146, 227, 191, 236, 246, 247, 224, 244, - 251, 214, 90, 223, 235, 106, 209, 92, 233, 220, - 157, 136, 137, 91, 0, 195, 114, 122, 111, 170, - 230, 231, 110, 254, 98, 243, 94, 99, 242, 164, - 226, 234, 158, 151, 93, 232, 156, 150, 141, 118, - 129, 188, 148, 189, 130, 161, 160, 162, 0, 418, - 0, 218, 240, 255, 103, 434, 225, 249, 250, 0, - 0, 104, 123, 117, 187, 121, 163, 100, 132, 215, - 140, 147, 194, 253, 177, 200, 107, 239, 216, 430, - 433, 428, 429, 477, 478, 524, 525, 526, 502, 424, - 0, 431, 432, 0, 507, 514, 515, 481, 86, 95, - 144, 252, 192, 120, 241, 414, 427, 113, 437, 0, - 0, 450, 455, 456, 468, 470, 471, 472, 473, 480, - 487, 488, 490, 496, 497, 498, 499, 504, 511, 530, - 88, 89, 96, 102, 108, 112, 116, 119, 125, 128, - 131, 133, 134, 135, 138, 149, 152, 153, 154, 155, - 165, 166, 167, 169, 172, 173, 174, 175, 176, 179, - 181, 182, 183, 184, 185, 186, 193, 196, 202, 203, - 204, 205, 206, 207, 208, 210, 211, 212, 213, 219, - 222, 228, 229, 238, 245, 248, 518, 506, 0, 463, - 521, 436, 453, 529, 454, 457, 494, 421, 476, 171, - 451, 0, 440, 416, 447, 417, 438, 465, 115, 469, - 435, 508, 479, 520, 143, 441, 527, 145, 485, 0, - 217, 159, 0, 0, 0, 467, 510, 474, 503, 462, - 495, 426, 484, 522, 452, 492, 523, 0, 0, 0, - 83, 84, 85, 0, 0, 0, 0, 0, 0, 0, - 0, 105, 0, 489, 517, 449, 491, 493, 415, 486, - 0, 419, 422, 528, 513, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 466, 475, 500, 460, 0, 0, - 0, 0, 0, 0, 871, 0, 442, 0, 483, 0, - 0, 0, 423, 420, 0, 0, 464, 0, 0, 0, - 425, 0, 443, 501, 0, 413, 124, 505, 512, 461, - 273, 516, 459, 458, 519, 190, 0, 221, 127, 142, - 101, 139, 87, 97, 0, 126, 168, 197, 201, 509, - 439, 448, 109, 446, 199, 178, 237, 482, 180, 198, - 146, 227, 191, 236, 246, 247, 224, 244, 251, 214, - 90, 223, 235, 106, 209, 92, 233, 220, 157, 136, - 137, 91, 0, 195, 114, 122, 111, 170, 230, 231, - 110, 254, 98, 243, 94, 99, 242, 164, 226, 234, - 158, 151, 93, 232, 156, 150, 141, 118, 129, 188, - 148, 189, 130, 161, 160, 162, 0, 418, 0, 218, - 240, 255, 103, 434, 225, 249, 250, 0, 0, 104, - 123, 117, 187, 121, 163, 100, 132, 215, 140, 147, - 194, 253, 177, 200, 107, 239, 216, 430, 433, 428, - 429, 477, 478, 524, 525, 526, 502, 424, 0, 431, - 432, 0, 507, 514, 515, 481, 86, 95, 144, 252, - 192, 120, 241, 414, 427, 113, 437, 0, 0, 450, - 455, 456, 468, 470, 471, 472, 473, 480, 487, 488, - 490, 496, 497, 498, 499, 504, 511, 530, 88, 89, - 96, 102, 108, 112, 116, 119, 125, 128, 131, 133, - 134, 135, 138, 149, 152, 153, 154, 155, 165, 166, - 167, 169, 172, 173, 174, 175, 176, 179, 181, 182, - 183, 184, 185, 186, 193, 196, 202, 203, 204, 205, - 206, 207, 208, 210, 211, 212, 213, 219, 222, 228, - 229, 238, 245, 248, 518, 506, 0, 463, 521, 436, - 453, 529, 454, 457, 494, 421, 476, 171, 451, 0, - 440, 416, 447, 417, 438, 465, 115, 469, 435, 508, - 479, 520, 143, 441, 527, 145, 485, 0, 217, 159, - 0, 0, 0, 467, 510, 474, 503, 462, 495, 426, - 484, 522, 452, 492, 523, 0, 0, 0, 83, 84, - 85, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 0, 489, 517, 449, 491, 493, 415, 486, 0, 419, - 422, 528, 513, 444, 445, 0, 0, 0, 0, 0, - 0, 0, 466, 475, 500, 460, 0, 0, 0, 0, - 0, 0, 0, 0, 442, 0, 483, 0, 0, 0, - 423, 420, 0, 0, 464, 0, 0, 0, 425, 0, - 443, 501, 0, 413, 124, 505, 512, 461, 273, 516, - 459, 458, 519, 190, 0, 221, 127, 142, 101, 139, - 87, 97, 0, 126, 168, 197, 201, 509, 439, 448, - 109, 446, 199, 178, 237, 482, 180, 198, 146, 227, - 191, 236, 246, 247, 224, 244, 251, 214, 90, 223, - 235, 106, 209, 92, 233, 220, 157, 136, 137, 91, - 0, 195, 114, 122, 111, 170, 230, 231, 110, 254, - 98, 243, 94, 99, 242, 164, 226, 234, 158, 151, - 93, 232, 156, 150, 141, 118, 129, 188, 148, 189, - 130, 161, 160, 162, 0, 418, 0, 218, 240, 255, - 103, 434, 225, 249, 250, 0, 0, 104, 123, 117, - 187, 121, 163, 100, 132, 215, 140, 147, 194, 253, - 177, 200, 107, 239, 216, 430, 433, 428, 429, 477, - 478, 524, 525, 526, 502, 424, 0, 431, 432, 0, - 507, 514, 515, 481, 86, 95, 144, 252, 192, 120, - 241, 414, 427, 113, 437, 0, 0, 450, 455, 456, - 468, 470, 471, 472, 473, 480, 487, 488, 490, 496, - 497, 498, 499, 504, 511, 530, 88, 89, 96, 102, - 108, 112, 116, 119, 125, 128, 131, 133, 134, 135, - 138, 149, 152, 153, 154, 155, 165, 166, 167, 169, - 172, 173, 174, 175, 176, 179, 181, 182, 183, 184, - 185, 186, 193, 196, 202, 203, 204, 205, 206, 207, - 208, 210, 211, 212, 213, 219, 222, 228, 229, 238, - 245, 248, 518, 506, 0, 463, 521, 436, 453, 529, - 454, 457, 494, 421, 476, 171, 451, 0, 440, 416, - 447, 417, 438, 465, 115, 469, 435, 508, 479, 520, - 143, 441, 527, 145, 485, 0, 217, 159, 0, 0, - 0, 467, 510, 474, 503, 462, 495, 426, 484, 522, - 452, 492, 523, 0, 0, 0, 83, 84, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 105, 0, 489, - 517, 449, 491, 493, 415, 486, 0, 419, 422, 528, - 513, 444, 445, 0, 0, 0, 0, 0, 0, 0, - 466, 475, 500, 460, 0, 0, 0, 0, 0, 0, - 0, 0, 442, 0, 483, 0, 0, 0, 423, 420, - 0, 0, 464, 0, 0, 0, 425, 0, 443, 501, - 0, 413, 124, 505, 512, 461, 273, 516, 459, 458, - 519, 190, 0, 221, 127, 142, 101, 139, 87, 97, - 0, 126, 168, 197, 201, 509, 439, 448, 109, 446, - 199, 178, 237, 482, 180, 198, 146, 227, 191, 236, - 246, 247, 224, 244, 251, 214, 90, 223, 235, 106, - 209, 92, 233, 220, 157, 136, 137, 91, 0, 195, - 114, 122, 111, 170, 230, 231, 110, 254, 98, 243, - 94, 411, 242, 164, 226, 234, 158, 151, 93, 232, - 156, 150, 141, 118, 129, 188, 148, 189, 130, 161, - 160, 162, 0, 418, 0, 218, 240, 255, 103, 434, - 225, 249, 250, 0, 0, 104, 123, 117, 187, 121, - 412, 410, 132, 215, 140, 147, 194, 253, 177, 200, - 107, 239, 216, 430, 433, 428, 429, 477, 478, 524, - 525, 526, 502, 424, 0, 431, 432, 0, 507, 514, - 515, 481, 86, 95, 144, 252, 192, 120, 241, 414, - 427, 113, 437, 0, 0, 450, 455, 456, 468, 470, - 471, 472, 473, 480, 487, 488, 490, 496, 497, 498, - 499, 504, 511, 530, 88, 89, 96, 102, 108, 112, - 116, 119, 125, 128, 131, 133, 134, 135, 138, 149, - 152, 153, 154, 155, 165, 166, 167, 169, 172, 173, - 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, - 193, 196, 202, 203, 204, 205, 206, 207, 208, 210, - 211, 212, 213, 219, 222, 228, 229, 238, 245, 248, - 518, 506, 0, 463, 521, 436, 453, 529, 454, 457, - 494, 421, 476, 171, 451, 0, 440, 416, 447, 417, - 438, 465, 115, 469, 435, 508, 479, 520, 143, 441, - 527, 145, 485, 0, 217, 159, 0, 0, 0, 467, - 510, 474, 503, 462, 495, 426, 484, 522, 452, 492, - 523, 0, 0, 0, 83, 84, 85, 0, 0, 0, - 0, 0, 0, 0, 0, 105, 0, 489, 517, 449, - 491, 493, 415, 486, 0, 419, 422, 528, 513, 444, - 445, 0, 0, 0, 0, 0, 0, 0, 466, 475, - 500, 460, 0, 0, 0, 0, 0, 0, 0, 0, - 442, 0, 483, 0, 0, 0, 423, 420, 0, 0, - 464, 0, 0, 0, 425, 0, 443, 501, 0, 413, - 124, 505, 512, 461, 273, 516, 459, 458, 519, 190, - 0, 221, 127, 142, 101, 139, 87, 97, 0, 126, - 168, 197, 201, 509, 439, 448, 109, 446, 199, 178, - 237, 482, 180, 198, 146, 227, 191, 236, 246, 247, - 224, 244, 251, 214, 90, 223, 728, 106, 209, 92, - 233, 220, 157, 136, 137, 91, 0, 195, 114, 122, - 111, 170, 230, 231, 110, 254, 98, 243, 94, 411, - 242, 164, 226, 234, 158, 151, 93, 232, 156, 150, - 141, 118, 129, 188, 148, 189, 130, 161, 160, 162, - 0, 418, 0, 218, 240, 255, 103, 434, 225, 249, - 250, 0, 0, 104, 123, 117, 187, 121, 412, 410, - 132, 215, 140, 147, 194, 253, 177, 200, 107, 239, - 216, 430, 433, 428, 429, 477, 478, 524, 525, 526, - 502, 424, 0, 431, 432, 0, 507, 514, 515, 481, - 86, 95, 144, 252, 192, 120, 241, 414, 427, 113, - 437, 0, 0, 450, 455, 456, 468, 470, 471, 472, - 473, 480, 487, 488, 490, 496, 497, 498, 499, 504, - 511, 530, 88, 89, 96, 102, 108, 112, 116, 119, - 125, 128, 131, 133, 134, 135, 138, 149, 152, 153, - 154, 155, 165, 166, 167, 169, 172, 173, 174, 175, - 176, 179, 181, 182, 183, 184, 185, 186, 193, 196, - 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, - 213, 219, 222, 228, 229, 238, 245, 248, 518, 506, - 0, 463, 521, 436, 453, 529, 454, 457, 494, 421, - 476, 171, 451, 0, 440, 416, 447, 417, 438, 465, - 115, 469, 435, 508, 479, 520, 143, 441, 527, 145, - 485, 0, 217, 159, 0, 0, 0, 467, 510, 474, - 503, 462, 495, 426, 484, 522, 452, 492, 523, 0, - 0, 0, 83, 84, 85, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 0, 489, 517, 449, 491, 493, - 415, 486, 0, 419, 422, 528, 513, 444, 445, 0, - 0, 0, 0, 0, 0, 0, 466, 475, 500, 460, - 0, 0, 0, 0, 0, 0, 0, 0, 442, 0, - 483, 0, 0, 0, 423, 420, 0, 0, 464, 0, - 0, 0, 425, 0, 443, 501, 0, 413, 124, 505, - 512, 461, 273, 516, 459, 458, 519, 190, 0, 221, - 127, 142, 101, 139, 87, 97, 0, 126, 168, 197, - 201, 509, 439, 448, 109, 446, 199, 178, 237, 482, - 180, 198, 146, 227, 191, 236, 246, 247, 224, 244, - 251, 214, 90, 223, 402, 106, 209, 92, 233, 220, - 157, 136, 137, 91, 0, 195, 114, 122, 111, 170, - 230, 231, 110, 254, 98, 243, 94, 411, 242, 164, - 226, 234, 158, 151, 93, 232, 156, 150, 141, 118, - 129, 188, 148, 189, 130, 161, 160, 162, 0, 418, - 0, 218, 240, 255, 103, 434, 225, 249, 250, 0, - 0, 104, 123, 117, 187, 121, 412, 410, 405, 404, - 140, 147, 194, 253, 177, 200, 107, 239, 216, 430, - 433, 428, 429, 477, 478, 524, 525, 526, 502, 424, - 0, 431, 432, 0, 507, 514, 515, 481, 86, 95, - 144, 252, 192, 120, 241, 414, 427, 113, 437, 0, - 0, 450, 455, 456, 468, 470, 471, 472, 473, 480, - 487, 488, 490, 496, 497, 498, 499, 504, 511, 530, - 88, 89, 96, 102, 108, 112, 116, 119, 125, 128, - 131, 133, 134, 135, 138, 149, 152, 153, 154, 155, - 165, 166, 167, 169, 172, 173, 174, 175, 176, 179, - 181, 182, 183, 184, 185, 186, 193, 196, 202, 203, - 204, 205, 206, 207, 208, 210, 211, 212, 213, 219, - 222, 228, 229, 238, 245, 248, 171, 0, 0, 907, - 0, 336, 0, 0, 0, 115, 0, 333, 0, 0, - 0, 143, 908, 376, 145, 0, 0, 217, 159, 0, - 0, 0, 0, 0, 367, 368, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 83, 84, 85, - 355, 354, 357, 358, 359, 360, 0, 0, 105, 356, - 361, 362, 363, 0, 0, 0, 331, 348, 0, 375, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 345, - 346, 327, 0, 0, 0, 390, 0, 347, 0, 0, - 342, 343, 344, 349, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 389, 0, 0, 273, 0, 0, - 387, 0, 190, 0, 221, 127, 142, 101, 139, 87, - 97, 0, 126, 168, 197, 201, 0, 0, 0, 109, - 0, 199, 178, 237, 0, 180, 198, 146, 227, 191, - 236, 246, 247, 224, 244, 251, 214, 90, 223, 235, - 106, 209, 92, 233, 220, 157, 136, 137, 91, 0, - 195, 114, 122, 111, 170, 230, 231, 110, 254, 98, - 243, 94, 99, 242, 164, 226, 234, 158, 151, 93, - 232, 156, 150, 141, 118, 129, 188, 148, 189, 130, - 161, 160, 162, 0, 0, 0, 218, 240, 255, 103, - 0, 225, 249, 250, 0, 0, 104, 123, 117, 187, - 121, 163, 100, 132, 215, 140, 147, 194, 253, 177, - 200, 107, 239, 216, 377, 388, 383, 384, 381, 382, - 380, 379, 378, 391, 369, 370, 371, 372, 374, 0, - 385, 386, 373, 86, 95, 144, 252, 192, 120, 241, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 89, 96, 102, 108, - 112, 116, 119, 125, 128, 131, 133, 134, 135, 138, - 149, 152, 153, 154, 155, 165, 166, 167, 169, 172, - 173, 174, 175, 176, 179, 181, 182, 183, 184, 185, - 186, 193, 196, 202, 203, 204, 205, 206, 207, 208, - 210, 211, 212, 213, 219, 222, 228, 229, 238, 245, - 248, 171, 0, 0, 0, 0, 336, 0, 0, 0, - 115, 0, 333, 0, 0, 0, 143, 0, 376, 145, - 0, 0, 217, 159, 0, 0, 0, 0, 0, 367, - 368, 0, 0, 0, 0, 0, 0, 983, 0, 55, - 0, 0, 83, 84, 85, 355, 354, 357, 358, 359, - 360, 0, 0, 105, 356, 361, 362, 363, 984, 0, - 0, 331, 348, 0, 375, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 346, 0, 0, 0, 0, - 390, 0, 347, 0, 0, 342, 343, 344, 349, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 124, 389, - 0, 0, 273, 0, 0, 387, 0, 190, 0, 221, - 127, 142, 101, 139, 87, 97, 0, 126, 168, 197, - 201, 0, 0, 0, 109, 0, 199, 178, 237, 0, - 180, 198, 146, 227, 191, 236, 246, 247, 224, 244, - 251, 214, 90, 223, 235, 106, 209, 92, 233, 220, - 157, 136, 137, 91, 0, 195, 114, 122, 111, 170, - 230, 231, 110, 254, 98, 243, 94, 99, 242, 164, - 226, 234, 158, 151, 93, 232, 156, 150, 141, 118, - 129, 188, 148, 189, 130, 161, 160, 162, 0, 0, - 0, 218, 240, 255, 103, 0, 225, 249, 250, 0, - 0, 104, 123, 117, 187, 121, 163, 100, 132, 215, - 140, 147, 194, 253, 177, 200, 107, 239, 216, 377, - 388, 383, 384, 381, 382, 380, 379, 378, 391, 369, - 370, 371, 372, 374, 0, 385, 386, 373, 86, 95, - 144, 252, 192, 120, 241, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 89, 96, 102, 108, 112, 116, 119, 125, 128, - 131, 133, 134, 135, 138, 149, 152, 153, 154, 155, - 165, 166, 167, 169, 172, 173, 174, 175, 176, 179, - 181, 182, 183, 184, 185, 186, 193, 196, 202, 203, - 204, 205, 206, 207, 208, 210, 211, 212, 213, 219, - 222, 228, 229, 238, 245, 248, 171, 0, 0, 0, - 0, 336, 0, 0, 0, 115, 0, 333, 0, 0, - 0, 143, 0, 376, 145, 0, 0, 217, 159, 0, - 0, 0, 0, 0, 367, 368, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 598, 83, 84, 85, - 355, 354, 357, 358, 359, 360, 0, 0, 105, 356, - 361, 362, 363, 0, 0, 0, 331, 348, 0, 375, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 345, - 346, 0, 0, 0, 0, 390, 0, 347, 0, 0, - 342, 343, 344, 349, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 389, 0, 0, 273, 0, 0, - 387, 0, 190, 0, 221, 127, 142, 101, 139, 87, - 97, 0, 126, 168, 197, 201, 0, 0, 0, 109, - 0, 199, 178, 237, 0, 180, 198, 146, 227, 191, - 236, 246, 247, 224, 244, 251, 214, 90, 223, 235, - 106, 209, 92, 233, 220, 157, 136, 137, 91, 0, - 195, 114, 122, 111, 170, 230, 231, 110, 254, 98, - 243, 94, 99, 242, 164, 226, 234, 158, 151, 93, - 232, 156, 150, 141, 118, 129, 188, 148, 189, 130, - 161, 160, 162, 0, 0, 0, 218, 240, 255, 103, - 0, 225, 249, 250, 0, 0, 104, 123, 117, 187, - 121, 163, 100, 132, 215, 140, 147, 194, 253, 177, - 200, 107, 239, 216, 377, 388, 383, 384, 381, 382, - 380, 379, 378, 391, 369, 370, 371, 372, 374, 0, - 385, 386, 373, 86, 95, 144, 252, 192, 120, 241, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 89, 96, 102, 108, - 112, 116, 119, 125, 128, 131, 133, 134, 135, 138, - 149, 152, 153, 154, 155, 165, 166, 167, 169, 172, - 173, 174, 175, 176, 179, 181, 182, 183, 184, 185, - 186, 193, 196, 202, 203, 204, 205, 206, 207, 208, - 210, 211, 212, 213, 219, 222, 228, 229, 238, 245, - 248, 171, 0, 0, 0, 0, 336, 0, 0, 0, - 115, 0, 333, 0, 0, 0, 143, 0, 376, 145, - 0, 0, 217, 159, 0, 0, 0, 0, 0, 367, - 368, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 83, 84, 85, 355, 354, 357, 358, 359, - 360, 0, 0, 105, 356, 361, 362, 363, 0, 0, - 0, 331, 348, 0, 375, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 346, 327, 0, 0, 0, - 390, 0, 347, 0, 0, 342, 343, 344, 349, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 124, 389, - 0, 0, 273, 0, 0, 387, 0, 190, 0, 221, - 127, 142, 101, 139, 87, 97, 0, 126, 168, 197, - 201, 0, 0, 0, 109, 0, 199, 178, 237, 0, - 180, 198, 146, 227, 191, 236, 246, 247, 224, 244, - 251, 214, 90, 223, 235, 106, 209, 92, 233, 220, - 157, 136, 137, 91, 0, 195, 114, 122, 111, 170, - 230, 231, 110, 254, 98, 243, 94, 99, 242, 164, - 226, 234, 158, 151, 93, 232, 156, 150, 141, 118, - 129, 188, 148, 189, 130, 161, 160, 162, 0, 0, - 0, 218, 240, 255, 103, 0, 225, 249, 250, 0, - 0, 104, 123, 117, 187, 121, 163, 100, 132, 215, - 140, 147, 194, 253, 177, 200, 107, 239, 216, 377, - 388, 383, 384, 381, 382, 380, 379, 378, 391, 369, - 370, 371, 372, 374, 0, 385, 386, 373, 86, 95, - 144, 252, 192, 120, 241, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 89, 96, 102, 108, 112, 116, 119, 125, 128, - 131, 133, 134, 135, 138, 149, 152, 153, 154, 155, - 165, 166, 167, 169, 172, 173, 174, 175, 176, 179, - 181, 182, 183, 184, 185, 186, 193, 196, 202, 203, - 204, 205, 206, 207, 208, 210, 211, 212, 213, 219, - 222, 228, 229, 238, 245, 248, 171, 0, 0, 0, - 0, 336, 0, 0, 0, 115, 0, 333, 0, 0, - 0, 143, 0, 376, 145, 0, 0, 217, 159, 0, - 0, 0, 0, 0, 367, 368, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 83, 84, 85, - 355, 922, 357, 358, 359, 360, 0, 0, 105, 356, - 361, 362, 363, 0, 0, 0, 331, 348, 0, 375, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 345, - 346, 327, 0, 0, 0, 390, 0, 347, 0, 0, - 342, 343, 344, 349, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 389, 0, 0, 273, 0, 0, - 387, 0, 190, 0, 221, 127, 142, 101, 139, 87, - 97, 0, 126, 168, 197, 201, 0, 0, 0, 109, - 0, 199, 178, 237, 0, 180, 198, 146, 227, 191, - 236, 246, 247, 224, 244, 251, 214, 90, 223, 235, - 106, 209, 92, 233, 220, 157, 136, 137, 91, 0, - 195, 114, 122, 111, 170, 230, 231, 110, 254, 98, - 243, 94, 99, 242, 164, 226, 234, 158, 151, 93, - 232, 156, 150, 141, 118, 129, 188, 148, 189, 130, - 161, 160, 162, 0, 0, 0, 218, 240, 255, 103, - 0, 225, 249, 250, 0, 0, 104, 123, 117, 187, - 121, 163, 100, 132, 215, 140, 147, 194, 253, 177, - 200, 107, 239, 216, 377, 388, 383, 384, 381, 382, - 380, 379, 378, 391, 369, 370, 371, 372, 374, 0, - 385, 386, 373, 86, 95, 144, 252, 192, 120, 241, - 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 89, 96, 102, 108, - 112, 116, 119, 125, 128, 131, 133, 134, 135, 138, - 149, 152, 153, 154, 155, 165, 166, 167, 169, 172, - 173, 174, 175, 176, 179, 181, 182, 183, 184, 185, - 186, 193, 196, 202, 203, 204, 205, 206, 207, 208, - 210, 211, 212, 213, 219, 222, 228, 229, 238, 245, - 248, 171, 0, 0, 0, 0, 336, 0, 0, 0, - 115, 0, 333, 0, 0, 0, 143, 0, 376, 145, - 0, 0, 217, 159, 0, 0, 0, 0, 0, 367, - 368, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 0, 0, 83, 84, 85, 355, 919, 357, 358, 359, - 360, 0, 0, 105, 356, 361, 362, 363, 0, 0, - 0, 331, 348, 0, 375, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 346, 327, 0, 0, 0, - 390, 0, 347, 0, 0, 342, 343, 344, 349, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 124, 389, - 0, 0, 273, 0, 0, 387, 0, 190, 0, 221, - 127, 142, 101, 139, 87, 97, 0, 126, 168, 197, - 201, 0, 0, 0, 109, 0, 199, 178, 237, 0, - 180, 198, 146, 227, 191, 236, 246, 247, 224, 244, - 251, 214, 90, 223, 235, 106, 209, 92, 233, 220, - 157, 136, 137, 91, 0, 195, 114, 122, 111, 170, - 230, 231, 110, 254, 98, 243, 94, 99, 242, 164, - 226, 234, 158, 151, 93, 232, 156, 150, 141, 118, - 129, 188, 148, 189, 130, 161, 160, 162, 0, 0, - 0, 218, 240, 255, 103, 0, 225, 249, 250, 0, - 0, 104, 123, 117, 187, 121, 163, 100, 132, 215, - 140, 147, 194, 253, 177, 200, 107, 239, 216, 377, - 388, 383, 384, 381, 382, 380, 379, 378, 391, 369, - 370, 371, 372, 374, 0, 385, 386, 373, 86, 95, - 144, 252, 192, 120, 241, 0, 0, 113, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 89, 96, 102, 108, 112, 116, 119, 125, 128, - 131, 133, 134, 135, 138, 149, 152, 153, 154, 155, - 165, 166, 167, 169, 172, 173, 174, 175, 176, 179, - 181, 182, 183, 184, 185, 186, 193, 196, 202, 203, - 204, 205, 206, 207, 208, 210, 211, 212, 213, 219, - 222, 228, 229, 238, 245, 248, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, - 0, 0, 0, 336, 0, 0, 0, 115, 0, 333, - 0, 0, 0, 143, 0, 376, 145, 0, 0, 217, - 159, 0, 0, 0, 0, 0, 367, 368, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 83, - 84, 85, 355, 354, 357, 358, 359, 360, 0, 0, - 105, 356, 361, 362, 363, 0, 0, 0, 331, 348, - 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 346, 0, 0, 0, 0, 390, 0, 347, - 0, 0, 342, 343, 344, 349, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 389, 0, 0, 273, - 0, 0, 387, 0, 190, 0, 221, 127, 142, 101, - 139, 87, 97, 0, 126, 168, 197, 201, 0, 0, - 0, 109, 0, 199, 178, 237, 0, 180, 198, 146, - 227, 191, 236, 246, 247, 224, 244, 251, 214, 90, - 223, 235, 106, 209, 92, 233, 220, 157, 136, 137, - 91, 0, 195, 114, 122, 111, 170, 230, 231, 110, - 254, 98, 243, 94, 99, 242, 164, 226, 234, 158, - 151, 93, 232, 156, 150, 141, 118, 129, 188, 148, - 189, 130, 161, 160, 162, 0, 0, 0, 218, 240, - 255, 103, 0, 225, 249, 250, 0, 0, 104, 123, - 117, 187, 121, 163, 100, 132, 215, 140, 147, 194, - 253, 177, 200, 107, 239, 216, 377, 388, 383, 384, - 381, 382, 380, 379, 378, 391, 369, 370, 371, 372, - 374, 0, 385, 386, 373, 86, 95, 144, 252, 192, - 120, 241, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 89, 96, - 102, 108, 112, 116, 119, 125, 128, 131, 133, 134, - 135, 138, 149, 152, 153, 154, 155, 165, 166, 167, - 169, 172, 173, 174, 175, 176, 179, 181, 182, 183, - 184, 185, 186, 193, 196, 202, 203, 204, 205, 206, - 207, 208, 210, 211, 212, 213, 219, 222, 228, 229, - 238, 245, 248, 171, 0, 0, 0, 0, 336, 0, - 0, 0, 115, 0, 333, 0, 0, 0, 143, 0, - 376, 145, 0, 0, 217, 159, 0, 0, 0, 0, - 0, 367, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 83, 84, 85, 355, 354, 357, - 358, 359, 360, 0, 0, 105, 356, 361, 362, 363, - 0, 0, 0, 331, 348, 0, 375, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 345, 346, 0, 0, - 0, 0, 390, 0, 347, 0, 0, 342, 343, 344, - 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 124, 389, 0, 0, 273, 0, 0, 387, 0, 190, - 0, 221, 127, 142, 101, 139, 87, 97, 0, 126, - 168, 197, 201, 0, 0, 0, 109, 0, 199, 178, - 237, 0, 180, 198, 146, 227, 191, 236, 246, 247, - 224, 244, 251, 214, 90, 223, 235, 106, 209, 92, - 233, 220, 157, 136, 137, 91, 0, 195, 114, 122, - 111, 170, 230, 231, 110, 254, 98, 243, 94, 99, - 242, 164, 226, 234, 158, 151, 93, 232, 156, 150, - 141, 118, 129, 188, 148, 189, 130, 161, 160, 162, - 0, 0, 0, 218, 240, 255, 103, 0, 225, 249, - 250, 0, 0, 104, 123, 117, 187, 121, 163, 100, - 132, 215, 140, 147, 194, 253, 177, 200, 107, 239, - 216, 377, 388, 383, 384, 381, 382, 380, 379, 378, - 391, 369, 370, 371, 372, 374, 0, 385, 386, 373, - 86, 95, 144, 252, 192, 120, 241, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 89, 96, 102, 108, 112, 116, 119, - 125, 128, 131, 133, 134, 135, 138, 149, 152, 153, - 154, 155, 165, 166, 167, 169, 172, 173, 174, 175, - 176, 179, 181, 182, 183, 184, 185, 186, 193, 196, - 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, - 213, 219, 222, 228, 229, 238, 245, 248, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, - 0, 0, 0, 143, 0, 376, 145, 0, 0, 217, - 159, 0, 0, 0, 0, 0, 367, 368, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 83, - 84, 85, 355, 354, 357, 358, 359, 360, 0, 0, - 105, 356, 361, 362, 363, 0, 0, 0, 0, 348, - 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 346, 0, 0, 0, 0, 390, 0, 347, - 0, 0, 342, 343, 344, 349, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 389, 0, 0, 273, - 0, 0, 387, 0, 190, 0, 221, 127, 142, 101, - 139, 87, 97, 0, 126, 168, 197, 201, 0, 0, - 0, 109, 0, 199, 178, 237, 1548, 180, 198, 146, - 227, 191, 236, 246, 247, 224, 244, 251, 214, 90, - 223, 235, 106, 209, 92, 233, 220, 157, 136, 137, - 91, 0, 195, 114, 122, 111, 170, 230, 231, 110, - 254, 98, 243, 94, 99, 242, 164, 226, 234, 158, - 151, 93, 232, 156, 150, 141, 118, 129, 188, 148, - 189, 130, 161, 160, 162, 0, 0, 0, 218, 240, - 255, 103, 0, 225, 249, 250, 0, 0, 104, 123, - 117, 187, 121, 163, 100, 132, 215, 140, 147, 194, - 253, 177, 200, 107, 239, 216, 377, 388, 383, 384, - 381, 382, 380, 379, 378, 391, 369, 370, 371, 372, - 374, 0, 385, 386, 373, 86, 95, 144, 252, 192, - 120, 241, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 89, 96, - 102, 108, 112, 116, 119, 125, 128, 131, 133, 134, - 135, 138, 149, 152, 153, 154, 155, 165, 166, 167, - 169, 172, 173, 174, 175, 176, 179, 181, 182, 183, - 184, 185, 186, 193, 196, 202, 203, 204, 205, 206, - 207, 208, 210, 211, 212, 213, 219, 222, 228, 229, - 238, 245, 248, 171, 0, 0, 0, 0, 0, 0, - 0, 0, 115, 0, 0, 0, 0, 0, 143, 0, - 376, 145, 0, 0, 217, 159, 0, 0, 0, 0, - 0, 367, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 55, 0, 598, 83, 84, 85, 355, 354, 357, - 358, 359, 360, 0, 0, 105, 356, 361, 362, 363, - 0, 0, 0, 0, 348, 0, 375, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 345, 346, 0, 0, - 0, 0, 390, 0, 347, 0, 0, 342, 343, 344, - 349, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 124, 389, 0, 0, 273, 0, 0, 387, 0, 190, - 0, 221, 127, 142, 101, 139, 87, 97, 0, 126, - 168, 197, 201, 0, 0, 0, 109, 0, 199, 178, - 237, 0, 180, 198, 146, 227, 191, 236, 246, 247, - 224, 244, 251, 214, 90, 223, 235, 106, 209, 92, - 233, 220, 157, 136, 137, 91, 0, 195, 114, 122, - 111, 170, 230, 231, 110, 254, 98, 243, 94, 99, - 242, 164, 226, 234, 158, 151, 93, 232, 156, 150, - 141, 118, 129, 188, 148, 189, 130, 161, 160, 162, - 0, 0, 0, 218, 240, 255, 103, 0, 225, 249, - 250, 0, 0, 104, 123, 117, 187, 121, 163, 100, - 132, 215, 140, 147, 194, 253, 177, 200, 107, 239, - 216, 377, 388, 383, 384, 381, 382, 380, 379, 378, - 391, 369, 370, 371, 372, 374, 0, 385, 386, 373, - 86, 95, 144, 252, 192, 120, 241, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 89, 96, 102, 108, 112, 116, 119, - 125, 128, 131, 133, 134, 135, 138, 149, 152, 153, - 154, 155, 165, 166, 167, 169, 172, 173, 174, 175, - 176, 179, 181, 182, 183, 184, 185, 186, 193, 196, - 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, - 213, 219, 222, 228, 229, 238, 245, 248, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, - 0, 0, 0, 143, 0, 376, 145, 0, 0, 217, - 159, 0, 0, 0, 0, 0, 367, 368, 0, 0, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 83, - 84, 85, 355, 354, 357, 358, 359, 360, 0, 0, - 105, 356, 361, 362, 363, 0, 0, 0, 0, 348, - 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 346, 0, 0, 0, 0, 390, 0, 347, - 0, 0, 342, 343, 344, 349, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 389, 0, 0, 273, - 0, 0, 387, 0, 190, 0, 221, 127, 142, 101, - 139, 87, 97, 0, 126, 168, 197, 201, 0, 0, - 0, 109, 0, 199, 178, 237, 0, 180, 198, 146, - 227, 191, 236, 246, 247, 224, 244, 251, 214, 90, - 223, 235, 106, 209, 92, 233, 220, 157, 136, 137, - 91, 0, 195, 114, 122, 111, 170, 230, 231, 110, - 254, 98, 243, 94, 99, 242, 164, 226, 234, 158, - 151, 93, 232, 156, 150, 141, 118, 129, 188, 148, - 189, 130, 161, 160, 162, 0, 0, 0, 218, 240, - 255, 103, 0, 225, 249, 250, 0, 0, 104, 123, - 117, 187, 121, 163, 100, 132, 215, 140, 147, 194, - 253, 177, 200, 107, 239, 216, 377, 388, 383, 384, - 381, 382, 380, 379, 378, 391, 369, 370, 371, 372, - 374, 0, 385, 386, 373, 86, 95, 144, 252, 192, - 120, 241, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 89, 96, - 102, 108, 112, 116, 119, 125, 128, 131, 133, 134, - 135, 138, 149, 152, 153, 154, 155, 165, 166, 167, - 169, 172, 173, 174, 175, 176, 179, 181, 182, 183, - 184, 185, 186, 193, 196, 202, 203, 204, 205, 206, - 207, 208, 210, 211, 212, 213, 219, 222, 228, 229, - 238, 245, 248, 171, 0, 0, 0, 0, 0, 0, - 0, 0, 115, 0, 0, 0, 0, 0, 143, 0, - 0, 145, 0, 0, 217, 159, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 84, 85, 0, 0, 0, - 0, 0, 0, 0, 0, 105, 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, 635, 634, 644, 645, 637, 638, 639, 640, - 641, 642, 643, 636, 0, 0, 646, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 124, 0, 0, 0, 273, 0, 0, 0, 0, 190, - 0, 221, 127, 142, 101, 139, 87, 97, 0, 126, - 168, 197, 201, 0, 0, 0, 109, 0, 199, 178, - 237, 0, 180, 198, 146, 227, 191, 236, 246, 247, - 224, 244, 251, 214, 90, 223, 235, 106, 209, 92, - 233, 220, 157, 136, 137, 91, 0, 195, 114, 122, - 111, 170, 230, 231, 110, 254, 98, 243, 94, 99, - 242, 164, 226, 234, 158, 151, 93, 232, 156, 150, - 141, 118, 129, 188, 148, 189, 130, 161, 160, 162, - 0, 0, 0, 218, 240, 255, 103, 0, 225, 249, - 250, 0, 0, 104, 123, 117, 187, 121, 163, 100, - 132, 215, 140, 147, 194, 253, 177, 200, 107, 239, - 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 95, 144, 252, 192, 120, 241, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 89, 96, 102, 108, 112, 116, 119, - 125, 128, 131, 133, 134, 135, 138, 149, 152, 153, - 154, 155, 165, 166, 167, 169, 172, 173, 174, 175, - 176, 179, 181, 182, 183, 184, 185, 186, 193, 196, - 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, - 213, 219, 222, 228, 229, 238, 245, 248, 171, 0, - 0, 0, 623, 0, 0, 0, 0, 115, 0, 0, - 0, 0, 0, 143, 0, 0, 145, 0, 0, 217, - 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, - 84, 85, 0, 625, 0, 0, 0, 0, 0, 0, - 105, 0, 0, 0, 0, 0, 620, 619, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 621, 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, 124, 0, 0, 0, 273, - 0, 0, 0, 0, 190, 0, 221, 127, 142, 101, - 139, 87, 97, 0, 126, 168, 197, 201, 0, 0, - 0, 109, 0, 199, 178, 237, 0, 180, 198, 146, - 227, 191, 236, 246, 247, 224, 244, 251, 214, 90, - 223, 235, 106, 209, 92, 233, 220, 157, 136, 137, - 91, 0, 195, 114, 122, 111, 170, 230, 231, 110, - 254, 98, 243, 94, 99, 242, 164, 226, 234, 158, - 151, 93, 232, 156, 150, 141, 118, 129, 188, 148, - 189, 130, 161, 160, 162, 0, 0, 0, 218, 240, - 255, 103, 0, 225, 249, 250, 0, 0, 104, 123, - 117, 187, 121, 163, 100, 132, 215, 140, 147, 194, - 253, 177, 200, 107, 239, 216, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 86, 95, 144, 252, 192, - 120, 241, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 89, 96, - 102, 108, 112, 116, 119, 125, 128, 131, 133, 134, - 135, 138, 149, 152, 153, 154, 155, 165, 166, 167, - 169, 172, 173, 174, 175, 176, 179, 181, 182, 183, - 184, 185, 186, 193, 196, 202, 203, 204, 205, 206, - 207, 208, 210, 211, 212, 213, 219, 222, 228, 229, - 238, 245, 248, 171, 0, 0, 0, 0, 0, 0, - 0, 0, 115, 0, 0, 0, 0, 0, 143, 0, - 0, 145, 0, 0, 217, 159, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 84, 85, 0, 0, 0, - 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, - 0, 75, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 124, 77, 78, 0, 74, 0, 0, 0, 79, 190, - 0, 221, 127, 142, 101, 139, 87, 97, 0, 126, - 168, 197, 201, 0, 0, 0, 109, 0, 199, 178, - 237, 0, 180, 198, 146, 227, 191, 236, 246, 247, - 224, 244, 251, 214, 90, 223, 235, 106, 209, 92, - 233, 220, 157, 136, 137, 91, 0, 195, 114, 122, - 111, 170, 230, 231, 110, 254, 98, 243, 94, 99, - 242, 164, 226, 234, 158, 151, 93, 232, 156, 150, - 141, 118, 129, 188, 148, 189, 130, 161, 160, 162, - 0, 0, 0, 218, 240, 255, 103, 0, 225, 249, - 250, 0, 0, 104, 123, 117, 187, 121, 163, 100, - 132, 215, 140, 147, 194, 253, 177, 200, 107, 239, - 216, 0, 76, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 95, 144, 252, 192, 120, 241, 0, 0, 113, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 88, 89, 96, 102, 108, 112, 116, 119, - 125, 128, 131, 133, 134, 135, 138, 149, 152, 153, - 154, 155, 165, 166, 167, 169, 172, 173, 174, 175, - 176, 179, 181, 182, 183, 184, 185, 186, 193, 196, - 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, - 213, 219, 222, 228, 229, 238, 245, 248, 171, 0, - 0, 0, 966, 0, 0, 0, 0, 115, 0, 0, - 0, 0, 0, 143, 0, 0, 145, 0, 0, 217, - 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 337, 1560, 1358, 1550, 1247, 1516, 1431, 1299, 1464, 1418, + 1154, 1172, 342, 368, 355, 1332, 974, 1001, 310, 1300, + 678, 1044, 1296, 1010, 997, 1198, 677, 3, 567, 1155, + 1306, 1312, 59, 1000, 82, 825, 910, 1271, 272, 917, + 292, 272, 1112, 412, 1224, 844, 725, 1215, 300, 1014, + 1098, 739, 972, 961, 976, 940, 887, 323, 719, 607, + 620, 613, 738, 401, 406, 720, 954, 536, 630, 272, + 82, 728, 1040, 537, 272, 340, 272, 692, 398, 851, + 309, 58, 301, 7, 270, 6, 5, 1553, 1063, 1537, + 556, 1030, 693, 1548, 1524, 302, 303, 304, 305, 63, + 1545, 308, 1062, 1359, 1536, 1523, 1288, 1390, 541, 84, + 85, 86, 1327, 1328, 1326, 400, 268, 264, 265, 266, + 538, 26, 540, 54, 29, 30, 329, 65, 66, 67, + 68, 69, 84, 85, 86, 991, 84, 85, 86, 992, + 993, 596, 740, 1061, 741, 1490, 643, 642, 652, 653, + 645, 646, 647, 648, 649, 650, 651, 644, 307, 380, + 654, 386, 387, 384, 385, 383, 382, 381, 306, 260, + 1206, 56, 258, 1023, 262, 388, 389, 573, 1186, 575, + 1024, 1185, 591, 1249, 1187, 1421, 592, 589, 590, 276, + 1031, 1381, 920, 1058, 1055, 1056, 279, 1054, 576, 298, + 595, 84, 85, 86, 286, 1379, 814, 584, 585, 813, + 594, 572, 574, 1547, 1251, 811, 1544, 1517, 1246, 955, + 1509, 557, 1564, 543, 1015, 1568, 262, 1252, 852, 853, + 1065, 1068, 818, 581, 802, 1243, 1250, 267, 284, 1322, + 1465, 1245, 1473, 546, 291, 812, 1321, 815, 1173, 1175, + 1320, 539, 275, 263, 578, 1467, 666, 667, 987, 272, + 548, 549, 1498, 1401, 272, 1017, 558, 1060, 261, 1075, + 272, 277, 1074, 1129, 1257, 1182, 272, 565, 1139, 1106, + 571, 82, 858, 734, 634, 82, 563, 82, 644, 1059, + 259, 654, 998, 82, 1272, 654, 1126, 570, 288, 280, + 855, 289, 290, 296, 849, 547, 845, 281, 283, 293, + 555, 278, 295, 294, 839, 627, 562, 1491, 1234, 629, + 1522, 1017, 564, 1466, 409, 553, 598, 1174, 580, 1064, + 1017, 629, 82, 1274, 1562, 569, 1031, 1563, 1507, 1561, + 582, 1244, 616, 1242, 1066, 1482, 615, 1474, 1472, 1230, + 1231, 1232, 84, 85, 86, 603, 604, 559, 560, 561, + 1310, 84, 85, 86, 742, 1016, 72, 1276, 602, 1280, + 55, 1275, 1290, 1273, 941, 84, 85, 86, 1278, 666, + 667, 621, 941, 601, 1136, 599, 600, 1277, 861, 862, + 550, 846, 551, 894, 1204, 552, 272, 272, 272, 840, + 1279, 1281, 666, 667, 73, 82, 804, 892, 893, 891, + 1124, 82, 1123, 1125, 542, 1512, 617, 568, 1233, 624, + 1528, 1016, 1427, 1238, 1235, 1226, 1236, 1229, 1345, 1225, + 1016, 628, 627, 1227, 1228, 1013, 1011, 1020, 1012, 1569, + 628, 627, 717, 1021, 726, 1009, 1015, 1237, 629, 718, + 647, 648, 649, 650, 651, 644, 857, 629, 654, 695, + 697, 699, 701, 703, 705, 706, 1426, 628, 627, 737, + 1219, 732, 628, 627, 696, 698, 727, 702, 704, 606, + 707, 1218, 1570, 583, 629, 586, 877, 879, 880, 629, + 1207, 597, 878, 544, 545, 856, 643, 642, 652, 653, + 645, 646, 647, 648, 649, 650, 651, 644, 1530, 1508, + 654, 257, 1445, 619, 628, 627, 1424, 1216, 643, 642, + 652, 653, 645, 646, 647, 648, 649, 650, 651, 644, + 1085, 629, 654, 84, 85, 86, 272, 1103, 1104, 1105, + 800, 82, 830, 803, 56, 805, 272, 272, 82, 82, + 82, 1113, 628, 627, 272, 606, 890, 272, 1479, 1292, + 272, 823, 824, 24, 272, 1478, 82, 1297, 535, 629, + 1309, 82, 82, 82, 272, 82, 82, 1341, 395, 396, + 1470, 1546, 750, 1532, 606, 82, 82, 84, 85, 86, + 1018, 912, 806, 807, 1309, 829, 1393, 84, 85, 86, + 816, 1189, 1387, 400, 1470, 1520, 822, 827, 642, 652, + 653, 645, 646, 647, 648, 649, 650, 651, 644, 82, + 835, 654, 84, 85, 86, 314, 272, 1470, 606, 1470, + 1499, 957, 82, 60, 863, 819, 643, 642, 652, 653, + 645, 646, 647, 648, 649, 650, 651, 644, 1470, 1469, + 654, 888, 1416, 1415, 1396, 911, 1403, 606, 958, 409, + 1400, 606, 1351, 1350, 913, 1347, 1348, 1347, 1346, 981, + 883, 729, 873, 870, 606, 870, 82, 26, 885, 872, + 643, 642, 652, 653, 645, 646, 647, 648, 649, 650, + 651, 644, 958, 606, 654, 922, 606, 922, 929, 932, + 881, 1149, 749, 748, 942, 1481, 1150, 924, 1099, 82, + 82, 358, 357, 360, 361, 362, 363, 272, 26, 1349, + 359, 364, 1099, 958, 1190, 272, 272, 56, 56, 272, + 272, 730, 990, 272, 272, 272, 82, 1142, 1141, 801, + 871, 870, 914, 915, 730, 729, 808, 809, 810, 82, + 537, 950, 951, 958, 859, 963, 966, 967, 968, 964, + 338, 965, 969, 956, 828, 1313, 1314, 1309, 56, 832, + 833, 834, 817, 836, 837, 731, 983, 733, 827, 735, + 1538, 982, 316, 841, 842, 984, 870, 1433, 731, 1248, + 729, 26, 1025, 980, 83, 1408, 1045, 985, 273, 989, + 988, 273, 1337, 272, 82, 1193, 82, 1041, 1067, 1313, + 1314, 344, 272, 272, 272, 272, 272, 1005, 272, 272, + 1450, 1046, 272, 82, 1036, 1035, 1434, 1048, 1555, 273, + 83, 1551, 56, 1339, 273, 1316, 273, 1297, 1220, 272, + 850, 56, 821, 1166, 272, 1164, 272, 272, 1167, 1049, + 1165, 272, 1319, 1318, 1163, 1032, 1033, 1034, 1069, 1070, + 1071, 1072, 1073, 1162, 1076, 1077, 1542, 1535, 1078, 1042, + 1043, 324, 272, 1082, 925, 926, 1256, 1087, 931, 934, + 935, 618, 1540, 1097, 325, 1080, 1096, 937, 1266, 884, + 1081, 622, 623, 327, 1090, 326, 1168, 1086, 967, 968, + 938, 1211, 885, 949, 747, 888, 952, 953, 643, 642, + 652, 653, 645, 646, 647, 648, 649, 650, 651, 644, + 608, 1091, 654, 1092, 1101, 566, 1203, 1051, 1514, 1394, + 1102, 1100, 609, 1513, 1448, 1201, 1195, 1429, 820, 1026, + 1027, 1028, 1029, 963, 966, 967, 968, 964, 1108, 965, + 969, 971, 317, 318, 311, 1037, 1038, 1039, 1095, 272, + 272, 272, 272, 272, 324, 1370, 1094, 312, 60, 1369, + 1156, 272, 1260, 1099, 272, 593, 1130, 325, 272, 1127, + 843, 1151, 272, 625, 321, 322, 327, 1557, 326, 1495, + 409, 1557, 1556, 1422, 854, 1135, 62, 64, 57, 1188, + 924, 82, 1050, 1002, 1052, 1, 1549, 1360, 1430, 1057, + 1194, 1515, 1463, 1331, 1199, 1199, 1008, 1157, 1191, 273, + 1160, 1079, 999, 1169, 273, 1158, 1159, 1392, 1161, 71, + 273, 1178, 1177, 1180, 1179, 1181, 273, 534, 70, 1506, + 1200, 83, 1183, 838, 579, 83, 1007, 83, 1006, 82, + 82, 1471, 1420, 83, 1019, 1210, 1205, 1212, 1213, 1214, + 1022, 1338, 1196, 1197, 1202, 1511, 755, 643, 642, 652, + 653, 645, 646, 647, 648, 649, 650, 651, 644, 82, + 753, 654, 754, 752, 1217, 757, 756, 751, 285, 404, + 970, 743, 83, 1047, 272, 626, 74, 1241, 1240, 1053, + 1239, 848, 1223, 282, 587, 588, 287, 82, 662, 1093, + 1184, 1117, 1118, 884, 410, 403, 1304, 860, 1208, 1209, + 612, 1368, 1259, 1134, 689, 911, 1254, 1255, 939, 1133, + 652, 653, 645, 646, 647, 648, 649, 650, 651, 644, + 1258, 343, 654, 876, 356, 353, 354, 1264, 865, 1148, + 636, 664, 1265, 82, 82, 341, 273, 273, 273, 333, + 1298, 1282, 1156, 1283, 1301, 83, 1289, 722, 715, 962, + 960, 83, 959, 399, 1315, 1090, 1311, 82, 721, 1303, + 869, 320, 1389, 885, 1489, 319, 936, 299, 28, 61, + 328, 82, 1317, 82, 82, 20, 19, 1199, 1199, 18, + 22, 17, 16, 15, 554, 1308, 32, 1323, 723, 23, + 1330, 1324, 1344, 14, 13, 12, 11, 10, 1334, 9, + 8, 272, 1335, 1336, 1329, 4, 21, 313, 25, 2, + 1325, 0, 0, 1342, 1343, 0, 0, 0, 0, 0, + 0, 272, 0, 0, 0, 335, 0, 82, 1222, 1361, + 82, 82, 82, 272, 0, 1002, 0, 0, 82, 0, + 0, 0, 0, 0, 0, 369, 53, 1352, 0, 0, + 0, 0, 0, 1353, 0, 0, 0, 1253, 0, 0, + 0, 0, 0, 1366, 1367, 1386, 0, 1355, 1354, 0, + 1356, 0, 0, 0, 0, 0, 273, 0, 1377, 1365, + 0, 83, 0, 0, 0, 0, 273, 273, 83, 83, + 83, 0, 0, 0, 273, 0, 0, 273, 0, 53, + 273, 1395, 1156, 0, 273, 0, 83, 315, 0, 0, + 82, 83, 83, 83, 273, 83, 83, 0, 82, 1405, + 0, 1404, 0, 1414, 0, 83, 83, 1191, 0, 0, + 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, + 82, 1263, 0, 643, 642, 652, 653, 645, 646, 647, + 648, 649, 650, 651, 644, 945, 1438, 654, 0, 83, + 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, + 0, 1436, 83, 0, 1293, 0, 0, 0, 0, 0, + 0, 82, 82, 0, 82, 0, 0, 0, 1444, 82, + 1301, 82, 82, 82, 272, 0, 1449, 82, 1457, 0, + 1458, 1460, 1461, 1456, 0, 0, 1451, 0, 0, 0, + 1462, 0, 1468, 0, 82, 272, 83, 1475, 1423, 0, + 1425, 0, 0, 1483, 0, 1002, 0, 1002, 1476, 889, + 1477, 0, 0, 1374, 1375, 0, 1376, 0, 1496, 1378, + 0, 1380, 0, 0, 1301, 0, 1505, 1437, 0, 83, + 83, 82, 1504, 367, 1503, 0, 0, 273, 0, 1497, + 0, 1484, 82, 82, 0, 273, 273, 0, 1518, 273, + 273, 0, 0, 273, 273, 273, 83, 0, 0, 82, + 1519, 0, 0, 0, 0, 0, 1525, 81, 1156, 83, + 272, 0, 1263, 0, 1417, 0, 0, 0, 82, 0, + 0, 0, 0, 0, 0, 1534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 723, 1541, 1539, 82, + 723, 0, 1385, 411, 723, 0, 577, 0, 1543, 0, + 577, 1428, 577, 1554, 0, 0, 1529, 0, 577, 1565, + 0, 0, 0, 273, 83, 53, 83, 0, 0, 0, + 0, 0, 273, 273, 273, 273, 273, 0, 273, 273, + 0, 53, 273, 83, 1002, 1384, 0, 0, 0, 0, + 0, 668, 669, 670, 671, 672, 673, 674, 675, 273, + 0, 0, 663, 0, 273, 665, 273, 273, 0, 0, + 0, 273, 0, 0, 1432, 0, 0, 0, 0, 0, + 643, 642, 652, 653, 645, 646, 647, 648, 649, 650, + 651, 644, 273, 676, 654, 680, 681, 682, 683, 684, + 685, 686, 687, 688, 0, 691, 694, 694, 694, 700, + 694, 694, 700, 694, 708, 709, 710, 711, 712, 713, + 714, 0, 724, 643, 642, 652, 653, 645, 646, 647, + 648, 649, 650, 651, 644, 0, 0, 654, 0, 0, + 0, 0, 0, 723, 0, 605, 643, 642, 652, 653, + 645, 646, 647, 648, 649, 650, 651, 644, 0, 0, + 654, 0, 0, 889, 645, 646, 647, 648, 649, 650, + 651, 644, 331, 0, 654, 0, 0, 0, 0, 273, + 273, 273, 273, 273, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 273, 0, 1432, 1002, 273, 0, + 0, 0, 273, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 411, 0, 0, 0, 411, 0, + 411, 83, 0, 0, 0, 0, 411, 0, 0, 0, + 723, 723, 723, 723, 723, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 723, 0, 0, 0, 0, + 0, 0, 0, 723, 0, 0, 1114, 0, 0, 0, + 0, 0, 0, 0, 0, 632, 577, 0, 0, 83, + 83, 0, 0, 577, 577, 577, 643, 642, 652, 653, + 645, 646, 647, 648, 649, 650, 651, 644, 0, 0, + 654, 577, 0, 0, 0, 0, 577, 577, 577, 83, + 577, 577, 0, 0, 0, 0, 0, 0, 0, 0, + 577, 577, 0, 0, 273, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 411, 0, + 0, 0, 886, 0, 744, 895, 896, 897, 898, 899, + 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 83, 83, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 53, 0, 0, 0, 0, 0, 83, 0, 0, + 946, 0, 0, 0, 0, 0, 680, 638, 0, 641, + 0, 83, 0, 83, 83, 655, 656, 657, 658, 659, + 660, 661, 0, 639, 640, 637, 643, 642, 652, 653, + 645, 646, 647, 648, 649, 650, 651, 644, 0, 0, + 654, 273, 0, 0, 0, 0, 0, 0, 0, 0, + 973, 0, 864, 0, 724, 0, 0, 0, 724, 0, + 0, 273, 0, 0, 0, 0, 0, 83, 0, 0, + 83, 83, 83, 273, 411, 0, 0, 0, 83, 0, + 0, 411, 411, 411, 610, 614, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, + 0, 0, 0, 0, 411, 411, 411, 635, 411, 411, + 0, 0, 0, 921, 923, 0, 0, 0, 411, 411, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 577, + 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 679, 0, 0, 0, 0, 0, 577, 0, + 83, 690, 866, 0, 0, 0, 0, 0, 83, 0, + 0, 0, 0, 0, 0, 632, 0, 0, 411, 0, + 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 724, 1109, 1110, + 1111, 0, 0, 0, 0, 0, 0, 0, 0, 916, + 1107, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 83, 0, 83, 943, 0, 0, 0, 83, + 0, 83, 83, 83, 273, 0, 0, 83, 0, 0, + 0, 0, 947, 948, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 273, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1152, 1153, 411, 0, 724, 724, 724, 724, 724, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 0, 973, + 0, 1176, 83, 83, 0, 0, 0, 724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, - 84, 85, 0, 968, 0, 0, 0, 0, 0, 0, - 105, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 124, 0, 0, 0, 273, - 0, 0, 0, 0, 190, 0, 221, 127, 142, 101, - 139, 87, 97, 0, 126, 168, 197, 201, 0, 0, - 0, 109, 0, 199, 178, 237, 0, 180, 198, 146, - 227, 191, 236, 246, 247, 224, 244, 251, 214, 90, - 223, 235, 106, 209, 92, 233, 220, 157, 136, 137, - 91, 0, 195, 114, 122, 111, 170, 230, 231, 110, - 254, 98, 243, 94, 99, 242, 164, 226, 234, 158, - 151, 93, 232, 156, 150, 141, 118, 129, 188, 148, - 189, 130, 161, 160, 162, 0, 0, 0, 218, 240, - 255, 103, 0, 225, 249, 250, 0, 0, 104, 123, - 117, 187, 121, 163, 100, 132, 215, 140, 147, 194, - 253, 177, 200, 107, 239, 216, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 86, 95, 144, 252, 192, - 120, 241, 0, 0, 113, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 88, 89, 96, - 102, 108, 112, 116, 119, 125, 128, 131, 133, 134, - 135, 138, 149, 152, 153, 154, 155, 165, 166, 167, - 169, 172, 173, 174, 175, 176, 179, 181, 182, 183, - 184, 185, 186, 193, 196, 202, 203, 204, 205, 206, - 207, 208, 210, 211, 212, 213, 219, 222, 228, 229, - 238, 245, 248, 25, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, - 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, - 143, 0, 0, 145, 0, 0, 217, 159, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 55, 0, 0, 83, 84, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 105, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 0, 0, 0, 273, 0, 0, 0, - 0, 190, 0, 221, 127, 142, 101, 139, 87, 97, - 0, 126, 168, 197, 201, 0, 0, 0, 109, 0, - 199, 178, 237, 0, 180, 198, 146, 227, 191, 236, - 246, 247, 224, 244, 251, 214, 90, 223, 235, 106, - 209, 92, 233, 220, 157, 136, 137, 91, 0, 195, - 114, 122, 111, 170, 230, 231, 110, 254, 98, 243, - 94, 99, 242, 164, 226, 234, 158, 151, 93, 232, - 156, 150, 141, 118, 129, 188, 148, 189, 130, 161, - 160, 162, 0, 0, 0, 218, 240, 255, 103, 0, - 225, 249, 250, 0, 0, 104, 123, 117, 187, 121, - 163, 100, 132, 215, 140, 147, 194, 253, 177, 200, - 107, 239, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 95, 144, 252, 192, 120, 241, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 96, 102, 108, 112, - 116, 119, 125, 128, 131, 133, 134, 135, 138, 149, - 152, 153, 154, 155, 165, 166, 167, 169, 172, 173, - 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, - 193, 196, 202, 203, 204, 205, 206, 207, 208, 210, - 211, 212, 213, 219, 222, 228, 229, 238, 245, 248, - 171, 0, 0, 0, 966, 0, 0, 0, 0, 115, - 0, 0, 0, 0, 0, 143, 0, 0, 145, 0, - 0, 217, 159, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 83, 84, 85, 0, 968, 0, 0, 0, 0, - 0, 0, 105, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, - 0, 273, 0, 0, 0, 0, 190, 0, 221, 127, - 142, 101, 139, 87, 97, 0, 126, 168, 197, 201, - 0, 0, 0, 109, 0, 199, 178, 237, 0, 964, - 198, 146, 227, 191, 236, 246, 247, 224, 244, 251, - 214, 90, 223, 235, 106, 209, 92, 233, 220, 157, - 136, 137, 91, 0, 195, 114, 122, 111, 170, 230, - 231, 110, 254, 98, 243, 94, 99, 242, 164, 226, - 234, 158, 151, 93, 232, 156, 150, 141, 118, 129, - 188, 148, 189, 130, 161, 160, 162, 0, 0, 0, - 218, 240, 255, 103, 0, 225, 249, 250, 0, 0, - 104, 123, 117, 187, 121, 163, 100, 132, 215, 140, - 147, 194, 253, 177, 200, 107, 239, 216, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 86, 95, 144, - 252, 192, 120, 241, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, - 89, 96, 102, 108, 112, 116, 119, 125, 128, 131, - 133, 134, 135, 138, 149, 152, 153, 154, 155, 165, - 166, 167, 169, 172, 173, 174, 175, 176, 179, 181, - 182, 183, 184, 185, 186, 193, 196, 202, 203, 204, - 205, 206, 207, 208, 210, 211, 212, 213, 219, 222, - 228, 229, 238, 245, 248, 171, 0, 0, 0, 0, - 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, - 143, 0, 0, 145, 0, 0, 217, 159, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 83, 84, 85, 0, - 0, 856, 0, 0, 857, 0, 0, 105, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 0, 0, 0, 273, 0, 0, 0, - 0, 190, 0, 221, 127, 142, 101, 139, 87, 97, - 0, 126, 168, 197, 201, 0, 0, 0, 109, 0, - 199, 178, 237, 0, 180, 198, 146, 227, 191, 236, - 246, 247, 224, 244, 251, 214, 90, 223, 235, 106, - 209, 92, 233, 220, 157, 136, 137, 91, 0, 195, - 114, 122, 111, 170, 230, 231, 110, 254, 98, 243, - 94, 99, 242, 164, 226, 234, 158, 151, 93, 232, - 156, 150, 141, 118, 129, 188, 148, 189, 130, 161, - 160, 162, 0, 0, 0, 218, 240, 255, 103, 0, - 225, 249, 250, 0, 0, 104, 123, 117, 187, 121, - 163, 100, 132, 215, 140, 147, 194, 253, 177, 200, - 107, 239, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 95, 144, 252, 192, 120, 241, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 96, 102, 108, 112, - 116, 119, 125, 128, 131, 133, 134, 135, 138, 149, - 152, 153, 154, 155, 165, 166, 167, 169, 172, 173, - 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, - 193, 196, 202, 203, 204, 205, 206, 207, 208, 210, - 211, 212, 213, 219, 222, 228, 229, 238, 245, 248, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 115, - 0, 738, 0, 0, 0, 143, 0, 0, 145, 0, - 0, 217, 159, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 83, 84, 85, 0, 737, 0, 0, 0, 0, - 0, 0, 105, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, - 0, 273, 0, 0, 0, 0, 190, 0, 221, 127, - 142, 101, 139, 87, 97, 0, 126, 168, 197, 201, - 0, 0, 0, 109, 0, 199, 178, 237, 0, 180, - 198, 146, 227, 191, 236, 246, 247, 224, 244, 251, - 214, 90, 223, 235, 106, 209, 92, 233, 220, 157, - 136, 137, 91, 0, 195, 114, 122, 111, 170, 230, - 231, 110, 254, 98, 243, 94, 99, 242, 164, 226, - 234, 158, 151, 93, 232, 156, 150, 141, 118, 129, - 188, 148, 189, 130, 161, 160, 162, 0, 0, 0, - 218, 240, 255, 103, 0, 225, 249, 250, 0, 0, - 104, 123, 117, 187, 121, 163, 100, 132, 215, 140, - 147, 194, 253, 177, 200, 107, 239, 216, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 86, 95, 144, - 252, 192, 120, 241, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, - 89, 96, 102, 108, 112, 116, 119, 125, 128, 131, - 133, 134, 135, 138, 149, 152, 153, 154, 155, 165, - 166, 167, 169, 172, 173, 174, 175, 176, 179, 181, - 182, 183, 184, 185, 186, 193, 196, 202, 203, 204, - 205, 206, 207, 208, 210, 211, 212, 213, 219, 222, - 228, 229, 238, 245, 248, 171, 0, 0, 0, 0, - 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, - 143, 0, 0, 145, 0, 0, 217, 159, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 598, 83, 84, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 105, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 0, 0, 0, 273, 0, 0, 0, - 0, 190, 0, 221, 127, 142, 101, 139, 87, 97, - 0, 126, 168, 197, 201, 0, 0, 0, 109, 0, - 199, 178, 237, 0, 180, 198, 146, 227, 191, 236, - 246, 247, 224, 244, 251, 214, 90, 223, 235, 106, - 209, 92, 233, 220, 157, 136, 137, 91, 0, 195, - 114, 122, 111, 170, 230, 231, 110, 254, 98, 243, - 94, 99, 242, 164, 226, 234, 158, 151, 93, 232, - 156, 150, 141, 118, 129, 188, 148, 189, 130, 161, - 160, 162, 0, 0, 0, 218, 240, 255, 103, 0, - 225, 249, 250, 0, 0, 104, 123, 117, 187, 121, - 163, 100, 132, 215, 140, 147, 194, 253, 177, 200, - 107, 239, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 95, 144, 252, 192, 120, 241, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 96, 102, 108, 112, - 116, 119, 125, 128, 131, 133, 134, 135, 138, 149, - 152, 153, 154, 155, 165, 166, 167, 169, 172, 173, - 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, - 193, 196, 202, 203, 204, 205, 206, 207, 208, 210, - 211, 212, 213, 219, 222, 228, 229, 238, 245, 248, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 115, - 0, 0, 0, 0, 0, 143, 0, 0, 145, 0, - 0, 217, 159, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, - 0, 83, 84, 85, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, - 0, 273, 0, 0, 0, 0, 190, 0, 221, 127, - 142, 101, 139, 87, 97, 0, 126, 168, 197, 201, - 0, 0, 0, 109, 0, 199, 178, 237, 0, 180, - 198, 146, 227, 191, 236, 246, 247, 224, 244, 251, - 214, 90, 223, 235, 106, 209, 92, 233, 220, 157, - 136, 137, 91, 0, 195, 114, 122, 111, 170, 230, - 231, 110, 254, 98, 243, 94, 99, 242, 164, 226, - 234, 158, 151, 93, 232, 156, 150, 141, 118, 129, - 188, 148, 189, 130, 161, 160, 162, 0, 0, 0, - 218, 240, 255, 103, 0, 225, 249, 250, 0, 0, - 104, 123, 117, 187, 121, 163, 100, 132, 215, 140, - 147, 194, 253, 177, 200, 107, 239, 216, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 86, 95, 144, - 252, 192, 120, 241, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, - 89, 96, 102, 108, 112, 116, 119, 125, 128, 131, - 133, 134, 135, 138, 149, 152, 153, 154, 155, 165, - 166, 167, 169, 172, 173, 174, 175, 176, 179, 181, - 182, 183, 184, 185, 186, 193, 196, 202, 203, 204, - 205, 206, 207, 208, 210, 211, 212, 213, 219, 222, - 228, 229, 238, 245, 248, 171, 0, 0, 0, 0, - 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, - 143, 0, 0, 145, 0, 0, 217, 159, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 83, 84, 85, 0, - 968, 0, 0, 0, 0, 0, 0, 105, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 0, 0, 0, 273, 0, 0, 0, - 0, 190, 0, 221, 127, 142, 101, 139, 87, 97, - 0, 126, 168, 197, 201, 0, 0, 0, 109, 0, - 199, 178, 237, 0, 180, 198, 146, 227, 191, 236, - 246, 247, 224, 244, 251, 214, 90, 223, 235, 106, - 209, 92, 233, 220, 157, 136, 137, 91, 0, 195, - 114, 122, 111, 170, 230, 231, 110, 254, 98, 243, - 94, 99, 242, 164, 226, 234, 158, 151, 93, 232, - 156, 150, 141, 118, 129, 188, 148, 189, 130, 161, - 160, 162, 0, 0, 0, 218, 240, 255, 103, 0, - 225, 249, 250, 0, 0, 104, 123, 117, 187, 121, - 163, 100, 132, 215, 140, 147, 194, 253, 177, 200, - 107, 239, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 95, 144, 252, 192, 120, 241, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 96, 102, 108, 112, - 116, 119, 125, 128, 131, 133, 134, 135, 138, 149, - 152, 153, 154, 155, 165, 166, 167, 169, 172, 173, - 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, - 193, 196, 202, 203, 204, 205, 206, 207, 208, 210, - 211, 212, 213, 219, 222, 228, 229, 238, 245, 248, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 115, - 0, 0, 0, 0, 0, 143, 0, 0, 145, 0, - 0, 217, 159, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 83, 84, 85, 0, 625, 0, 0, 0, 0, - 0, 0, 105, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, - 0, 273, 0, 0, 0, 0, 190, 0, 221, 127, - 142, 101, 139, 87, 97, 0, 126, 168, 197, 201, - 0, 0, 0, 109, 0, 199, 178, 237, 0, 180, - 198, 146, 227, 191, 236, 246, 247, 224, 244, 251, - 214, 90, 223, 235, 106, 209, 92, 233, 220, 157, - 136, 137, 91, 0, 195, 114, 122, 111, 170, 230, - 231, 110, 254, 98, 243, 94, 99, 242, 164, 226, - 234, 158, 151, 93, 232, 156, 150, 141, 118, 129, - 188, 148, 189, 130, 161, 160, 162, 0, 0, 0, - 218, 240, 255, 103, 0, 225, 249, 250, 0, 0, - 104, 123, 117, 187, 121, 163, 100, 132, 215, 140, - 147, 194, 253, 177, 200, 107, 239, 216, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 86, 95, 144, - 252, 192, 120, 241, 0, 0, 113, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, - 89, 96, 102, 108, 112, 116, 119, 125, 128, 131, - 133, 134, 135, 138, 149, 152, 153, 154, 155, 165, - 166, 167, 169, 172, 173, 174, 175, 176, 179, 181, - 182, 183, 184, 185, 186, 193, 196, 202, 203, 204, - 205, 206, 207, 208, 210, 211, 212, 213, 219, 222, - 228, 229, 238, 245, 248, 171, 0, 0, 0, 0, - 0, 0, 0, 708, 115, 0, 0, 0, 0, 0, - 143, 0, 0, 145, 0, 0, 217, 159, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 83, 84, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 105, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 0, 0, 0, 273, 0, 0, 0, - 0, 190, 0, 221, 127, 142, 101, 139, 87, 97, - 0, 126, 168, 197, 201, 0, 0, 0, 109, 0, - 199, 178, 237, 0, 180, 198, 146, 227, 191, 236, - 246, 247, 224, 244, 251, 214, 90, 223, 235, 106, - 209, 92, 233, 220, 157, 136, 137, 91, 0, 195, - 114, 122, 111, 170, 230, 231, 110, 254, 98, 243, - 94, 99, 242, 164, 226, 234, 158, 151, 93, 232, - 156, 150, 141, 118, 129, 188, 148, 189, 130, 161, - 160, 162, 0, 0, 0, 218, 240, 255, 103, 0, - 225, 249, 250, 0, 0, 104, 123, 117, 187, 121, - 163, 100, 132, 215, 140, 147, 194, 253, 177, 200, - 107, 239, 216, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 86, 95, 144, 252, 192, 120, 241, 0, - 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 89, 96, 102, 108, 112, - 116, 119, 125, 128, 131, 133, 134, 135, 138, 149, - 152, 153, 154, 155, 165, 166, 167, 169, 172, 173, - 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, - 193, 196, 202, 203, 204, 205, 206, 207, 208, 210, - 211, 212, 213, 219, 222, 228, 229, 238, 245, 248, - 394, 0, 0, 0, 0, 0, 0, 171, 0, 0, - 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, - 0, 0, 143, 0, 0, 145, 0, 0, 217, 159, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 84, - 85, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 124, 0, 0, 0, 273, 0, - 0, 0, 0, 190, 0, 221, 127, 142, 101, 139, - 87, 97, 0, 126, 168, 197, 201, 0, 0, 0, - 109, 0, 199, 178, 237, 0, 180, 198, 146, 227, - 191, 236, 246, 247, 224, 244, 251, 214, 90, 223, - 235, 106, 209, 92, 233, 220, 157, 136, 137, 91, - 0, 195, 114, 122, 111, 170, 230, 231, 110, 254, - 98, 243, 94, 99, 242, 164, 226, 234, 158, 151, - 93, 232, 156, 150, 141, 118, 129, 188, 148, 189, - 130, 161, 160, 162, 0, 0, 0, 218, 240, 255, - 103, 0, 225, 249, 250, 0, 0, 104, 123, 117, - 187, 121, 163, 100, 132, 215, 140, 147, 194, 253, - 177, 200, 107, 239, 216, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 95, 144, 252, 192, 120, - 241, 0, 0, 113, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 89, 96, 102, - 108, 112, 116, 119, 125, 128, 131, 133, 134, 135, - 138, 149, 152, 153, 154, 155, 165, 166, 167, 169, - 172, 173, 174, 175, 176, 179, 181, 182, 183, 184, - 185, 186, 193, 196, 202, 203, 204, 205, 206, 207, - 208, 210, 211, 212, 213, 219, 222, 228, 229, 238, - 245, 248, 171, 0, 0, 0, 0, 0, 0, 0, - 0, 115, 0, 0, 0, 0, 0, 143, 0, 0, - 145, 0, 0, 217, 159, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 83, 84, 85, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, - 0, 268, 0, 273, 0, 0, 0, 0, 190, 0, - 221, 127, 142, 101, 139, 87, 97, 0, 126, 168, - 197, 201, 0, 0, 0, 109, 0, 199, 178, 237, - 0, 180, 198, 146, 227, 191, 236, 246, 247, 224, - 244, 251, 214, 90, 223, 235, 106, 209, 92, 233, - 220, 157, 136, 137, 91, 0, 195, 114, 122, 111, - 170, 230, 231, 110, 254, 98, 243, 94, 99, 242, - 164, 226, 234, 158, 151, 93, 232, 156, 150, 141, - 118, 129, 188, 148, 189, 130, 161, 160, 162, 0, - 0, 0, 218, 240, 255, 103, 0, 225, 249, 250, - 0, 0, 104, 123, 117, 187, 121, 163, 100, 132, - 215, 140, 147, 194, 253, 177, 200, 107, 239, 216, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, - 95, 144, 252, 192, 120, 241, 0, 0, 113, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 88, 89, 96, 102, 108, 112, 116, 119, 125, - 128, 131, 133, 134, 135, 138, 149, 152, 153, 154, - 155, 165, 166, 167, 169, 172, 173, 174, 175, 176, - 179, 181, 182, 183, 184, 185, 186, 193, 196, 202, - 203, 204, 205, 206, 207, 208, 210, 211, 212, 213, - 219, 222, 228, 229, 238, 245, 248, 171, 0, 0, - 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, - 0, 0, 143, 0, 0, 145, 0, 0, 217, 159, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 84, - 85, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 124, 0, 0, 0, 273, 0, - 0, 0, 0, 190, 0, 221, 127, 142, 101, 139, - 87, 97, 0, 126, 168, 197, 201, 0, 0, 0, - 109, 0, 199, 178, 237, 0, 180, 198, 146, 227, - 191, 236, 246, 247, 224, 244, 251, 214, 90, 223, - 235, 106, 209, 92, 233, 220, 157, 136, 137, 91, - 0, 195, 114, 122, 111, 170, 230, 231, 110, 254, - 98, 243, 94, 99, 242, 164, 226, 234, 158, 151, - 93, 232, 156, 150, 141, 118, 129, 188, 148, 189, - 130, 161, 160, 162, 0, 0, 0, 218, 240, 255, - 103, 0, 225, 249, 250, 0, 0, 104, 123, 117, - 187, 121, 163, 100, 132, 215, 140, 147, 194, 253, - 177, 200, 107, 239, 216, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 95, 144, 252, 192, 120, - 241, 0, 0, 113, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 89, 96, 102, - 108, 112, 116, 119, 125, 128, 131, 133, 134, 135, - 138, 149, 152, 153, 154, 155, 165, 166, 167, 169, - 172, 173, 174, 175, 176, 179, 181, 182, 183, 184, - 185, 186, 193, 196, 202, 203, 204, 205, 206, 207, - 208, 210, 211, 212, 213, 219, 222, 228, 229, 238, - 245, 248, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 273, 0, 0, 0, 0, 0, 0, 411, 83, 411, + 0, 0, 831, 0, 0, 0, 0, 0, 0, 1115, + 0, 0, 0, 1116, 0, 0, 411, 0, 0, 83, + 1120, 1121, 1122, 0, 0, 0, 847, 1128, 0, 0, + 1131, 1132, 0, 0, 0, 577, 0, 0, 1138, 0, + 0, 0, 1140, 0, 0, 1143, 1144, 1145, 1146, 1147, + 0, 0, 411, 0, 0, 0, 0, 0, 0, 0, + 874, 875, 0, 0, 577, 0, 0, 0, 1171, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1267, + 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1284, 1285, 0, 1286, 1287, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1294, 1295, 0, + 0, 0, 0, 679, 0, 0, 927, 928, 0, 0, + 26, 27, 54, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1302, 0, 53, 46, + 0, 0, 0, 0, 31, 50, 51, 0, 0, 0, + 0, 943, 611, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 40, 0, 0, 1340, + 56, 0, 0, 0, 0, 996, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 271, 0, 0, 297, 411, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1269, 1270, 0, 0, 0, 332, 0, + 0, 402, 0, 0, 0, 0, 271, 0, 271, 0, + 0, 0, 1372, 33, 34, 36, 35, 38, 0, 52, + 0, 0, 1221, 411, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 39, 47, 45, 0, 0, 48, 49, 37, + 0, 0, 411, 0, 1388, 0, 0, 0, 0, 0, + 0, 0, 0, 41, 42, 0, 43, 44, 0, 1088, + 1089, 0, 614, 0, 0, 0, 0, 0, 0, 0, + 411, 0, 0, 0, 0, 0, 1410, 1411, 1412, 772, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 411, 0, 0, 0, 0, 577, 0, + 0, 0, 0, 943, 0, 0, 1305, 1307, 0, 0, + 1439, 1440, 1441, 1442, 1443, 1119, 0, 0, 1446, 1447, + 1371, 0, 0, 0, 0, 0, 0, 1373, 0, 55, + 1307, 0, 0, 0, 1137, 0, 0, 0, 1382, 1383, + 0, 0, 1302, 0, 411, 1452, 411, 1333, 0, 0, + 0, 760, 0, 0, 0, 0, 0, 0, 1397, 1398, + 1399, 0, 1402, 0, 0, 0, 0, 0, 0, 0, + 0, 271, 0, 0, 0, 1480, 271, 0, 0, 1413, + 0, 0, 271, 0, 0, 0, 0, 0, 271, 0, + 773, 0, 0, 0, 0, 0, 1302, 0, 53, 0, + 1357, 0, 0, 1362, 1363, 1364, 0, 0, 0, 0, + 0, 411, 0, 786, 789, 790, 791, 792, 793, 794, + 0, 795, 796, 797, 798, 799, 774, 775, 776, 777, + 758, 759, 787, 332, 761, 0, 762, 763, 764, 765, + 766, 767, 768, 769, 770, 771, 778, 779, 780, 781, + 782, 783, 784, 785, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 943, 0, 0, 1459, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1558, 0, + 0, 0, 0, 411, 0, 0, 0, 0, 0, 0, + 0, 1419, 1261, 1552, 0, 1485, 1486, 1487, 1488, 0, + 1492, 0, 1493, 1494, 0, 788, 411, 0, 271, 271, + 271, 0, 0, 411, 1500, 0, 1501, 1502, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1291, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1521, 0, 0, 0, 0, + 0, 0, 0, 1526, 1453, 1454, 0, 1455, 0, 0, + 0, 0, 1419, 0, 1419, 1419, 1419, 0, 0, 0, + 1333, 1531, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1419, 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, 1566, 1567, 0, 0, 0, 0, + 0, 0, 0, 0, 1510, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 411, 411, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 271, 943, + 0, 0, 1527, 0, 0, 0, 0, 0, 271, 271, + 0, 0, 0, 0, 0, 0, 271, 0, 0, 271, + 0, 1533, 271, 0, 0, 0, 826, 0, 0, 0, + 0, 0, 0, 0, 0, 1391, 271, 0, 0, 0, + 0, 0, 1419, 0, 0, 679, 0, 0, 0, 0, + 0, 0, 0, 1406, 0, 0, 1407, 0, 0, 1409, + 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, 271, 0, + 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1435, 679, 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, 332, + 0, 0, 0, 0, 332, 332, 0, 0, 332, 332, + 332, 0, 0, 0, 944, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 332, 332, 332, 332, 332, 0, 271, + 0, 0, 0, 0, 0, 0, 0, 271, 978, 0, + 0, 271, 271, 0, 0, 271, 986, 826, 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, 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, 271, 0, 0, 0, 0, + 0, 0, 0, 0, 271, 271, 271, 271, 271, 0, + 271, 271, 0, 0, 271, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 271, 0, 0, 0, 0, 271, 0, 1083, 1084, + 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, + 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 332, 271, 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, 0, 0, 0, 0, 0, + 0, 332, 332, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 944, 271, 271, 271, 271, 271, 0, 0, 0, 0, + 0, 0, 0, 1170, 0, 0, 271, 0, 0, 0, + 978, 0, 0, 0, 271, 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, 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, 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, 271, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 332, 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, 826, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 944, 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, 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, 271, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 271, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 944, 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, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 521, 509, 0, 466, 524, 439, 456, 532, 457, + 460, 497, 424, 479, 172, 454, 978, 443, 419, 450, + 420, 441, 468, 116, 472, 438, 511, 482, 523, 144, + 444, 530, 146, 488, 0, 218, 160, 271, 0, 0, + 470, 513, 477, 506, 465, 498, 429, 487, 525, 455, + 495, 526, 0, 0, 0, 84, 85, 86, 0, 1003, + 1004, 0, 0, 0, 0, 0, 106, 0, 492, 520, + 452, 494, 496, 418, 489, 0, 422, 425, 531, 516, + 447, 448, 1192, 0, 0, 0, 0, 0, 0, 469, + 478, 503, 463, 0, 0, 0, 0, 0, 944, 0, + 0, 445, 0, 486, 0, 0, 0, 426, 423, 0, + 0, 467, 271, 0, 0, 428, 0, 446, 504, 0, + 416, 125, 508, 515, 464, 274, 519, 462, 461, 522, + 191, 0, 222, 128, 143, 102, 140, 88, 98, 0, + 127, 169, 198, 202, 512, 442, 451, 110, 449, 200, + 179, 238, 485, 181, 199, 147, 228, 192, 237, 247, + 248, 225, 245, 252, 215, 91, 224, 236, 107, 210, + 93, 234, 221, 158, 137, 138, 92, 0, 196, 115, + 123, 112, 171, 231, 232, 111, 255, 99, 244, 95, + 100, 243, 165, 227, 235, 159, 152, 94, 233, 157, + 151, 142, 119, 130, 189, 149, 190, 131, 162, 161, + 163, 0, 421, 0, 219, 241, 256, 104, 437, 226, + 250, 251, 0, 0, 105, 124, 118, 188, 122, 164, + 101, 133, 216, 141, 148, 195, 254, 178, 201, 108, + 240, 217, 433, 436, 431, 432, 480, 481, 527, 528, + 529, 505, 427, 0, 434, 435, 0, 510, 517, 518, + 484, 87, 96, 145, 253, 193, 121, 242, 417, 430, + 114, 440, 0, 0, 453, 458, 459, 471, 473, 474, + 475, 476, 483, 490, 491, 493, 499, 500, 501, 502, + 507, 514, 533, 89, 90, 97, 103, 109, 113, 117, + 120, 126, 129, 132, 134, 135, 136, 139, 150, 153, + 154, 155, 156, 166, 167, 168, 170, 173, 174, 175, + 176, 177, 180, 182, 183, 184, 185, 186, 187, 194, + 197, 203, 204, 205, 206, 207, 208, 209, 211, 212, + 213, 214, 220, 223, 229, 230, 239, 246, 249, 521, + 509, 0, 466, 524, 439, 456, 532, 457, 460, 497, + 424, 479, 172, 454, 0, 443, 419, 450, 420, 441, + 468, 116, 472, 438, 511, 482, 523, 144, 444, 530, + 146, 488, 0, 218, 160, 0, 0, 0, 470, 513, + 477, 506, 465, 498, 429, 487, 525, 455, 495, 526, + 0, 0, 0, 84, 85, 86, 0, 1003, 1004, 0, + 0, 0, 0, 0, 106, 0, 492, 520, 452, 494, + 496, 418, 489, 0, 422, 425, 531, 516, 447, 448, + 0, 0, 0, 0, 0, 0, 0, 469, 478, 503, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 445, + 0, 486, 0, 0, 0, 426, 423, 0, 0, 467, + 0, 0, 0, 428, 0, 446, 504, 0, 416, 125, + 508, 515, 464, 274, 519, 462, 461, 522, 191, 0, + 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, + 198, 202, 512, 442, 451, 110, 449, 200, 179, 238, + 485, 181, 199, 147, 228, 192, 237, 247, 248, 225, + 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, + 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, + 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, + 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, + 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, + 421, 0, 219, 241, 256, 104, 437, 226, 250, 251, + 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, + 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, + 433, 436, 431, 432, 480, 481, 527, 528, 529, 505, + 427, 0, 434, 435, 0, 510, 517, 518, 484, 87, + 96, 145, 253, 193, 121, 242, 417, 430, 114, 440, + 0, 0, 453, 458, 459, 471, 473, 474, 475, 476, + 483, 490, 491, 493, 499, 500, 501, 502, 507, 514, + 533, 89, 90, 97, 103, 109, 113, 117, 120, 126, + 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, + 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, + 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, + 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, + 220, 223, 229, 230, 239, 246, 249, 521, 509, 0, + 466, 524, 439, 456, 532, 457, 460, 497, 424, 479, + 172, 454, 0, 443, 419, 450, 420, 441, 468, 116, + 472, 438, 511, 482, 523, 144, 444, 530, 146, 488, + 0, 218, 160, 0, 0, 0, 470, 513, 477, 506, + 465, 498, 429, 487, 525, 455, 495, 526, 56, 0, + 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 0, 492, 520, 452, 494, 496, 418, + 489, 0, 422, 425, 531, 516, 447, 448, 0, 0, + 0, 0, 0, 0, 0, 469, 478, 503, 463, 0, + 0, 0, 0, 0, 0, 0, 0, 445, 0, 486, + 0, 0, 0, 426, 423, 0, 0, 467, 0, 0, + 0, 428, 0, 446, 504, 0, 416, 125, 508, 515, + 464, 274, 519, 462, 461, 522, 191, 0, 222, 128, + 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, + 512, 442, 451, 110, 449, 200, 179, 238, 485, 181, + 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, + 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, + 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, + 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, + 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, + 189, 149, 190, 131, 162, 161, 163, 0, 421, 0, + 219, 241, 256, 104, 437, 226, 250, 251, 0, 0, + 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, + 148, 195, 254, 178, 201, 108, 240, 217, 433, 436, + 431, 432, 480, 481, 527, 528, 529, 505, 427, 0, + 434, 435, 0, 510, 517, 518, 484, 87, 96, 145, + 253, 193, 121, 242, 417, 430, 114, 440, 0, 0, + 453, 458, 459, 471, 473, 474, 475, 476, 483, 490, + 491, 493, 499, 500, 501, 502, 507, 514, 533, 89, + 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, + 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, + 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, + 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, + 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, + 229, 230, 239, 246, 249, 521, 509, 0, 466, 524, + 439, 456, 532, 457, 460, 497, 424, 479, 172, 454, + 0, 443, 419, 450, 420, 441, 468, 116, 472, 438, + 511, 482, 523, 144, 444, 530, 146, 488, 0, 218, + 160, 0, 0, 0, 470, 513, 477, 506, 465, 498, + 429, 487, 525, 455, 495, 526, 0, 0, 0, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 106, 0, 492, 520, 452, 494, 496, 418, 489, 0, + 422, 425, 531, 516, 447, 448, 0, 0, 0, 0, + 0, 0, 0, 469, 478, 503, 463, 0, 0, 0, + 0, 0, 0, 1262, 0, 445, 0, 486, 0, 0, + 0, 426, 423, 0, 0, 467, 0, 0, 0, 428, + 0, 446, 504, 0, 416, 125, 508, 515, 464, 274, + 519, 462, 461, 522, 191, 0, 222, 128, 143, 102, + 140, 88, 98, 0, 127, 169, 198, 202, 512, 442, + 451, 110, 449, 200, 179, 238, 485, 181, 199, 147, + 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, + 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, + 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, + 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, + 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, + 190, 131, 162, 161, 163, 0, 421, 0, 219, 241, + 256, 104, 437, 226, 250, 251, 0, 0, 105, 124, + 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, + 254, 178, 201, 108, 240, 217, 433, 436, 431, 432, + 480, 481, 527, 528, 529, 505, 427, 0, 434, 435, + 0, 510, 517, 518, 484, 87, 96, 145, 253, 193, + 121, 242, 417, 430, 114, 440, 0, 0, 453, 458, + 459, 471, 473, 474, 475, 476, 483, 490, 491, 493, + 499, 500, 501, 502, 507, 514, 533, 89, 90, 97, + 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, + 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, + 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, + 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, + 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, + 239, 246, 249, 521, 509, 0, 466, 524, 439, 456, + 532, 457, 460, 497, 424, 479, 172, 454, 0, 443, + 419, 450, 420, 441, 468, 116, 472, 438, 511, 482, + 523, 144, 444, 530, 146, 488, 0, 218, 160, 0, + 0, 0, 470, 513, 477, 506, 465, 498, 429, 487, + 525, 455, 495, 526, 0, 0, 0, 84, 85, 86, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, + 492, 520, 452, 494, 496, 418, 489, 0, 422, 425, + 531, 516, 447, 448, 0, 0, 0, 0, 0, 0, + 0, 469, 478, 503, 463, 0, 0, 0, 0, 0, + 0, 987, 0, 445, 0, 486, 0, 0, 0, 426, + 423, 0, 0, 467, 0, 0, 0, 428, 0, 446, + 504, 0, 416, 125, 508, 515, 464, 274, 519, 462, + 461, 522, 191, 0, 222, 128, 143, 102, 140, 88, + 98, 0, 127, 169, 198, 202, 512, 442, 451, 110, + 449, 200, 179, 238, 485, 181, 199, 147, 228, 192, + 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, + 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, + 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, + 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, + 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, + 162, 161, 163, 0, 421, 0, 219, 241, 256, 104, + 437, 226, 250, 251, 0, 0, 105, 124, 118, 188, + 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, + 201, 108, 240, 217, 433, 436, 431, 432, 480, 481, + 527, 528, 529, 505, 427, 0, 434, 435, 0, 510, + 517, 518, 484, 87, 96, 145, 253, 193, 121, 242, + 417, 430, 114, 440, 0, 0, 453, 458, 459, 471, + 473, 474, 475, 476, 483, 490, 491, 493, 499, 500, + 501, 502, 507, 514, 533, 89, 90, 97, 103, 109, + 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, + 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, + 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, + 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, + 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, + 249, 521, 509, 0, 466, 524, 439, 456, 532, 457, + 460, 497, 424, 479, 172, 454, 0, 443, 419, 450, + 420, 441, 468, 116, 472, 438, 511, 482, 523, 144, + 444, 530, 146, 488, 0, 218, 160, 0, 0, 0, + 470, 513, 477, 506, 465, 498, 429, 487, 525, 455, + 495, 526, 0, 0, 0, 84, 85, 86, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 0, 492, 520, + 452, 494, 496, 418, 489, 0, 422, 425, 531, 516, + 447, 448, 0, 0, 0, 0, 0, 0, 0, 469, + 478, 503, 463, 0, 0, 0, 0, 0, 0, 882, + 0, 445, 0, 486, 0, 0, 0, 426, 423, 0, + 0, 467, 0, 0, 0, 428, 0, 446, 504, 0, + 416, 125, 508, 515, 464, 274, 519, 462, 461, 522, + 191, 0, 222, 128, 143, 102, 140, 88, 98, 0, + 127, 169, 198, 202, 512, 442, 451, 110, 449, 200, + 179, 238, 485, 181, 199, 147, 228, 192, 237, 247, + 248, 225, 245, 252, 215, 91, 224, 236, 107, 210, + 93, 234, 221, 158, 137, 138, 92, 0, 196, 115, + 123, 112, 171, 231, 232, 111, 255, 99, 244, 95, + 100, 243, 165, 227, 235, 159, 152, 94, 233, 157, + 151, 142, 119, 130, 189, 149, 190, 131, 162, 161, + 163, 0, 421, 0, 219, 241, 256, 104, 437, 226, + 250, 251, 0, 0, 105, 124, 118, 188, 122, 164, + 101, 133, 216, 141, 148, 195, 254, 178, 201, 108, + 240, 217, 433, 436, 431, 432, 480, 481, 527, 528, + 529, 505, 427, 0, 434, 435, 0, 510, 517, 518, + 484, 87, 96, 145, 253, 193, 121, 242, 417, 430, + 114, 440, 0, 0, 453, 458, 459, 471, 473, 474, + 475, 476, 483, 490, 491, 493, 499, 500, 501, 502, + 507, 514, 533, 89, 90, 97, 103, 109, 113, 117, + 120, 126, 129, 132, 134, 135, 136, 139, 150, 153, + 154, 155, 156, 166, 167, 168, 170, 173, 174, 175, + 176, 177, 180, 182, 183, 184, 185, 186, 187, 194, + 197, 203, 204, 205, 206, 207, 208, 209, 211, 212, + 213, 214, 220, 223, 229, 230, 239, 246, 249, 521, + 509, 0, 466, 524, 439, 456, 532, 457, 460, 497, + 424, 479, 172, 454, 0, 443, 419, 450, 420, 441, + 468, 116, 472, 438, 511, 482, 523, 144, 444, 530, + 146, 488, 0, 218, 160, 0, 0, 0, 470, 513, + 477, 506, 465, 498, 429, 487, 525, 455, 495, 526, + 0, 0, 0, 84, 85, 86, 0, 0, 0, 0, + 0, 0, 0, 0, 106, 0, 492, 520, 452, 494, + 496, 418, 489, 0, 422, 425, 531, 516, 447, 448, + 0, 0, 0, 0, 0, 0, 0, 469, 478, 503, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 445, + 0, 486, 0, 0, 0, 426, 423, 0, 0, 467, + 0, 0, 0, 428, 0, 446, 504, 0, 416, 125, + 508, 515, 464, 274, 519, 462, 461, 522, 191, 0, + 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, + 198, 202, 512, 442, 451, 110, 449, 200, 179, 238, + 485, 181, 199, 147, 228, 192, 237, 247, 248, 225, + 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, + 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, + 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, + 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, + 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, + 421, 0, 219, 241, 256, 104, 437, 226, 250, 251, + 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, + 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, + 433, 436, 431, 432, 480, 481, 527, 528, 529, 505, + 427, 0, 434, 435, 0, 510, 517, 518, 484, 87, + 96, 145, 253, 193, 121, 242, 417, 430, 114, 440, + 0, 0, 453, 458, 459, 471, 473, 474, 475, 476, + 483, 490, 491, 493, 499, 500, 501, 502, 507, 514, + 533, 89, 90, 97, 103, 109, 113, 117, 120, 126, + 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, + 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, + 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, + 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, + 220, 223, 229, 230, 239, 246, 249, 521, 509, 0, + 466, 524, 439, 456, 532, 457, 460, 497, 424, 479, + 172, 454, 0, 443, 419, 450, 420, 441, 468, 116, + 472, 438, 511, 482, 523, 144, 444, 530, 146, 488, + 0, 218, 160, 0, 0, 0, 470, 513, 477, 506, + 465, 498, 429, 487, 525, 455, 495, 526, 0, 0, + 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 0, 492, 520, 452, 494, 496, 418, + 489, 0, 422, 425, 531, 516, 447, 448, 0, 0, + 0, 0, 0, 0, 0, 469, 478, 503, 463, 0, + 0, 0, 0, 0, 0, 0, 0, 445, 0, 486, + 0, 0, 0, 426, 423, 0, 0, 467, 0, 0, + 0, 428, 0, 446, 504, 0, 416, 125, 508, 515, + 464, 274, 519, 462, 461, 522, 191, 0, 222, 128, + 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, + 512, 442, 451, 110, 449, 200, 179, 238, 485, 181, + 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, + 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, + 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, + 232, 111, 255, 99, 244, 95, 414, 243, 165, 227, + 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, + 189, 149, 190, 131, 162, 161, 163, 0, 421, 0, + 219, 241, 256, 104, 437, 226, 250, 251, 0, 0, + 105, 124, 118, 188, 122, 415, 413, 133, 216, 141, + 148, 195, 254, 178, 201, 108, 240, 217, 433, 436, + 431, 432, 480, 481, 527, 528, 529, 505, 427, 0, + 434, 435, 0, 510, 517, 518, 484, 87, 96, 145, + 253, 193, 121, 242, 417, 430, 114, 440, 0, 0, + 453, 458, 459, 471, 473, 474, 475, 476, 483, 490, + 491, 493, 499, 500, 501, 502, 507, 514, 533, 89, + 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, + 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, + 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, + 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, + 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, + 229, 230, 239, 246, 249, 521, 509, 0, 466, 524, + 439, 456, 532, 457, 460, 497, 424, 479, 172, 454, + 0, 443, 419, 450, 420, 441, 468, 116, 472, 438, + 511, 482, 523, 144, 444, 530, 146, 488, 0, 218, + 160, 0, 0, 0, 470, 513, 477, 506, 465, 498, + 429, 487, 525, 455, 495, 526, 0, 0, 0, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 106, 0, 492, 520, 452, 494, 496, 418, 489, 0, + 422, 425, 531, 516, 447, 448, 0, 0, 0, 0, + 0, 0, 0, 469, 478, 503, 463, 0, 0, 0, + 0, 0, 0, 0, 0, 445, 0, 486, 0, 0, + 0, 426, 423, 0, 0, 467, 0, 0, 0, 428, + 0, 446, 504, 0, 416, 125, 508, 515, 464, 274, + 519, 462, 461, 522, 191, 0, 222, 128, 143, 102, + 140, 88, 98, 0, 127, 169, 198, 202, 512, 442, + 451, 110, 449, 200, 179, 238, 485, 181, 199, 147, + 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, + 224, 736, 107, 210, 93, 234, 221, 158, 137, 138, + 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, + 255, 99, 244, 95, 414, 243, 165, 227, 235, 159, + 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, + 190, 131, 162, 161, 163, 0, 421, 0, 219, 241, + 256, 104, 437, 226, 250, 251, 0, 0, 105, 124, + 118, 188, 122, 415, 413, 133, 216, 141, 148, 195, + 254, 178, 201, 108, 240, 217, 433, 436, 431, 432, + 480, 481, 527, 528, 529, 505, 427, 0, 434, 435, + 0, 510, 517, 518, 484, 87, 96, 145, 253, 193, + 121, 242, 417, 430, 114, 440, 0, 0, 453, 458, + 459, 471, 473, 474, 475, 476, 483, 490, 491, 493, + 499, 500, 501, 502, 507, 514, 533, 89, 90, 97, + 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, + 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, + 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, + 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, + 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, + 239, 246, 249, 521, 509, 0, 466, 524, 439, 456, + 532, 457, 460, 497, 424, 479, 172, 454, 0, 443, + 419, 450, 420, 441, 468, 116, 472, 438, 511, 482, + 523, 144, 444, 530, 146, 488, 0, 218, 160, 0, + 0, 0, 470, 513, 477, 506, 465, 498, 429, 487, + 525, 455, 495, 526, 0, 0, 0, 84, 85, 86, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, + 492, 520, 452, 494, 496, 418, 489, 0, 422, 425, + 531, 516, 447, 448, 0, 0, 0, 0, 0, 0, + 0, 469, 478, 503, 463, 0, 0, 0, 0, 0, + 0, 0, 0, 445, 0, 486, 0, 0, 0, 426, + 423, 0, 0, 467, 0, 0, 0, 428, 0, 446, + 504, 0, 416, 125, 508, 515, 464, 274, 519, 462, + 461, 522, 191, 0, 222, 128, 143, 102, 140, 88, + 98, 0, 127, 169, 198, 202, 512, 442, 451, 110, + 449, 200, 179, 238, 485, 181, 199, 147, 228, 192, + 237, 247, 248, 225, 245, 252, 215, 91, 224, 405, + 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, + 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, + 244, 95, 414, 243, 165, 227, 235, 159, 152, 94, + 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, + 162, 161, 163, 0, 421, 0, 219, 241, 256, 104, + 437, 226, 250, 251, 0, 0, 105, 124, 118, 188, + 122, 415, 413, 408, 407, 141, 148, 195, 254, 178, + 201, 108, 240, 217, 433, 436, 431, 432, 480, 481, + 527, 528, 529, 505, 427, 0, 434, 435, 0, 510, + 517, 518, 484, 87, 96, 145, 253, 193, 121, 242, + 417, 430, 114, 440, 0, 0, 453, 458, 459, 471, + 473, 474, 475, 476, 483, 490, 491, 493, 499, 500, + 501, 502, 507, 514, 533, 89, 90, 97, 103, 109, + 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, + 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, + 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, + 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, + 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, + 249, 172, 0, 0, 918, 0, 339, 0, 0, 0, + 116, 0, 336, 0, 0, 0, 144, 919, 379, 146, + 0, 0, 218, 160, 0, 0, 0, 0, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 84, 85, 86, 358, 357, 360, 361, 362, + 363, 0, 0, 106, 359, 364, 365, 366, 0, 0, + 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 348, 349, 330, 0, 0, 0, + 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 125, 392, + 0, 0, 274, 0, 0, 390, 0, 191, 0, 222, + 128, 143, 102, 140, 88, 98, 0, 127, 169, 198, + 202, 0, 0, 0, 110, 0, 200, 179, 238, 0, + 181, 199, 147, 228, 192, 237, 247, 248, 225, 245, + 252, 215, 91, 224, 236, 107, 210, 93, 234, 221, + 158, 137, 138, 92, 0, 196, 115, 123, 112, 171, + 231, 232, 111, 255, 99, 244, 95, 100, 243, 165, + 227, 235, 159, 152, 94, 233, 157, 151, 142, 119, + 130, 189, 149, 190, 131, 162, 161, 163, 0, 0, + 0, 219, 241, 256, 104, 0, 226, 250, 251, 0, + 0, 105, 124, 118, 188, 122, 164, 101, 133, 216, + 141, 148, 195, 254, 178, 201, 108, 240, 217, 380, + 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, + 373, 374, 375, 377, 0, 388, 389, 376, 87, 96, + 145, 253, 193, 121, 242, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 90, 97, 103, 109, 113, 117, 120, 126, 129, + 132, 134, 135, 136, 139, 150, 153, 154, 155, 156, + 166, 167, 168, 170, 173, 174, 175, 176, 177, 180, + 182, 183, 184, 185, 186, 187, 194, 197, 203, 204, + 205, 206, 207, 208, 209, 211, 212, 213, 214, 220, + 223, 229, 230, 239, 246, 249, 172, 0, 0, 0, + 0, 339, 0, 0, 0, 116, 0, 336, 0, 0, + 0, 144, 0, 379, 146, 0, 0, 218, 160, 0, + 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 994, 0, 56, 0, 0, 84, 85, 86, + 358, 357, 360, 361, 362, 363, 0, 0, 106, 359, + 364, 365, 366, 995, 0, 0, 334, 351, 0, 378, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 349, 0, 0, 0, 0, 393, 0, 350, 0, 0, + 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 125, 392, 0, 0, 274, 0, 0, + 390, 0, 191, 0, 222, 128, 143, 102, 140, 88, + 98, 0, 127, 169, 198, 202, 0, 0, 0, 110, + 0, 200, 179, 238, 0, 181, 199, 147, 228, 192, + 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, + 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, + 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, + 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, + 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, + 162, 161, 163, 0, 0, 0, 219, 241, 256, 104, + 0, 226, 250, 251, 0, 0, 105, 124, 118, 188, + 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, + 201, 108, 240, 217, 380, 391, 386, 387, 384, 385, + 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, + 388, 389, 376, 87, 96, 145, 253, 193, 121, 242, + 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 97, 103, 109, + 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, + 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, + 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, + 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, + 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, + 249, 172, 0, 0, 0, 0, 339, 0, 0, 0, + 116, 0, 336, 0, 0, 0, 144, 0, 379, 146, + 0, 0, 218, 160, 0, 0, 0, 0, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 606, 84, 85, 86, 358, 357, 360, 361, 362, + 363, 0, 0, 106, 359, 364, 365, 366, 0, 0, + 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 348, 349, 0, 0, 0, 0, + 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 125, 392, + 0, 0, 274, 0, 0, 390, 0, 191, 0, 222, + 128, 143, 102, 140, 88, 98, 0, 127, 169, 198, + 202, 0, 0, 0, 110, 0, 200, 179, 238, 0, + 181, 199, 147, 228, 192, 237, 247, 248, 225, 245, + 252, 215, 91, 224, 236, 107, 210, 93, 234, 221, + 158, 137, 138, 92, 0, 196, 115, 123, 112, 171, + 231, 232, 111, 255, 99, 244, 95, 100, 243, 165, + 227, 235, 159, 152, 94, 233, 157, 151, 142, 119, + 130, 189, 149, 190, 131, 162, 161, 163, 0, 0, + 0, 219, 241, 256, 104, 0, 226, 250, 251, 0, + 0, 105, 124, 118, 188, 122, 164, 101, 133, 216, + 141, 148, 195, 254, 178, 201, 108, 240, 217, 380, + 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, + 373, 374, 375, 377, 0, 388, 389, 376, 87, 96, + 145, 253, 193, 121, 242, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 90, 97, 103, 109, 113, 117, 120, 126, 129, + 132, 134, 135, 136, 139, 150, 153, 154, 155, 156, + 166, 167, 168, 170, 173, 174, 175, 176, 177, 180, + 182, 183, 184, 185, 186, 187, 194, 197, 203, 204, + 205, 206, 207, 208, 209, 211, 212, 213, 214, 220, + 223, 229, 230, 239, 246, 249, 172, 0, 0, 0, + 0, 339, 0, 0, 0, 116, 0, 336, 0, 0, + 0, 144, 0, 379, 146, 0, 0, 218, 160, 0, + 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 0, 84, 85, 86, + 358, 357, 360, 361, 362, 363, 0, 0, 106, 359, + 364, 365, 366, 0, 0, 0, 334, 351, 0, 378, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 349, 330, 0, 0, 0, 393, 0, 350, 0, 0, + 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 125, 392, 0, 0, 274, 0, 0, + 390, 0, 191, 0, 222, 128, 143, 102, 140, 88, + 98, 0, 127, 169, 198, 202, 0, 0, 0, 110, + 0, 200, 179, 238, 0, 181, 199, 147, 228, 192, + 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, + 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, + 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, + 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, + 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, + 162, 161, 163, 0, 0, 0, 219, 241, 256, 104, + 0, 226, 250, 251, 0, 0, 105, 124, 118, 188, + 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, + 201, 108, 240, 217, 380, 391, 386, 387, 384, 385, + 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, + 388, 389, 376, 87, 96, 145, 253, 193, 121, 242, + 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 97, 103, 109, + 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, + 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, + 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, + 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, + 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, + 249, 172, 0, 0, 0, 0, 339, 0, 0, 0, + 116, 0, 336, 0, 0, 0, 144, 0, 379, 146, + 0, 0, 218, 160, 0, 0, 0, 0, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 84, 85, 86, 358, 933, 360, 361, 362, + 363, 0, 0, 106, 359, 364, 365, 366, 0, 0, + 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 348, 349, 330, 0, 0, 0, + 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 125, 392, + 0, 0, 274, 0, 0, 390, 0, 191, 0, 222, + 128, 143, 102, 140, 88, 98, 0, 127, 169, 198, + 202, 0, 0, 0, 110, 0, 200, 179, 238, 0, + 181, 199, 147, 228, 192, 237, 247, 248, 225, 245, + 252, 215, 91, 224, 236, 107, 210, 93, 234, 221, + 158, 137, 138, 92, 0, 196, 115, 123, 112, 171, + 231, 232, 111, 255, 99, 244, 95, 100, 243, 165, + 227, 235, 159, 152, 94, 233, 157, 151, 142, 119, + 130, 189, 149, 190, 131, 162, 161, 163, 0, 0, + 0, 219, 241, 256, 104, 0, 226, 250, 251, 0, + 0, 105, 124, 118, 188, 122, 164, 101, 133, 216, + 141, 148, 195, 254, 178, 201, 108, 240, 217, 380, + 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, + 373, 374, 375, 377, 0, 388, 389, 376, 87, 96, + 145, 253, 193, 121, 242, 0, 0, 114, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 90, 97, 103, 109, 113, 117, 120, 126, 129, + 132, 134, 135, 136, 139, 150, 153, 154, 155, 156, + 166, 167, 168, 170, 173, 174, 175, 176, 177, 180, + 182, 183, 184, 185, 186, 187, 194, 197, 203, 204, + 205, 206, 207, 208, 209, 211, 212, 213, 214, 220, + 223, 229, 230, 239, 246, 249, 172, 0, 0, 0, + 0, 339, 0, 0, 0, 116, 0, 336, 0, 0, + 0, 144, 0, 379, 146, 0, 0, 218, 160, 0, + 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 0, 84, 85, 86, + 358, 930, 360, 361, 362, 363, 0, 0, 106, 359, + 364, 365, 366, 0, 0, 0, 334, 351, 0, 378, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 349, 330, 0, 0, 0, 393, 0, 350, 0, 0, + 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 125, 392, 0, 0, 274, 0, 0, + 390, 0, 191, 0, 222, 128, 143, 102, 140, 88, + 98, 0, 127, 169, 198, 202, 0, 0, 0, 110, + 0, 200, 179, 238, 0, 181, 199, 147, 228, 192, + 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, + 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, + 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, + 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, + 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, + 162, 161, 163, 0, 0, 0, 219, 241, 256, 104, + 0, 226, 250, 251, 0, 0, 105, 124, 118, 188, + 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, + 201, 108, 240, 217, 380, 391, 386, 387, 384, 385, + 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, + 388, 389, 376, 87, 96, 145, 253, 193, 121, 242, + 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 97, 103, 109, + 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, + 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, + 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, + 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, + 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, + 249, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 172, 0, 0, 0, 0, 339, 0, + 0, 0, 116, 0, 336, 0, 0, 0, 144, 0, + 379, 146, 0, 0, 218, 160, 0, 0, 0, 0, + 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 84, 85, 86, 358, 357, 360, + 361, 362, 363, 0, 0, 106, 359, 364, 365, 366, + 0, 0, 0, 334, 351, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, + 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, + 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 392, 0, 0, 274, 0, 0, 390, 0, 191, + 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, + 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, + 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, + 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, + 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, + 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, + 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, + 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, + 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, + 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, + 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, + 217, 380, 391, 386, 387, 384, 385, 383, 382, 381, + 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, + 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, + 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, + 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, + 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, + 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, + 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, + 0, 0, 0, 339, 0, 0, 0, 116, 0, 336, + 0, 0, 0, 144, 0, 379, 146, 0, 0, 218, + 160, 0, 0, 0, 0, 0, 370, 371, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 84, + 85, 86, 358, 357, 360, 361, 362, 363, 0, 0, + 106, 359, 364, 365, 366, 0, 0, 0, 334, 351, + 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 349, 0, 0, 0, 0, 393, 0, 350, + 0, 0, 345, 346, 347, 352, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 125, 392, 0, 0, 274, + 0, 0, 390, 0, 191, 0, 222, 128, 143, 102, + 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, + 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, + 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, + 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, + 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, + 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, + 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, + 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, + 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, + 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, + 254, 178, 201, 108, 240, 217, 380, 391, 386, 387, + 384, 385, 383, 382, 381, 394, 372, 373, 374, 375, + 377, 0, 388, 389, 376, 87, 96, 145, 253, 193, + 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, + 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, + 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, + 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, + 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, + 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, + 239, 246, 249, 172, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, + 379, 146, 0, 0, 218, 160, 0, 0, 0, 0, + 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 84, 85, 86, 358, 357, 360, + 361, 362, 363, 0, 0, 106, 359, 364, 365, 366, + 0, 0, 0, 0, 351, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, + 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, + 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 392, 0, 0, 274, 0, 0, 390, 0, 191, + 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, + 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, + 238, 1559, 181, 199, 147, 228, 192, 237, 247, 248, + 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, + 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, + 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, + 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, + 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, + 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, + 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, + 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, + 217, 380, 391, 386, 387, 384, 385, 383, 382, 381, + 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, + 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, + 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, + 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, + 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, + 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, + 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, + 0, 0, 0, 144, 0, 379, 146, 0, 0, 218, + 160, 0, 0, 0, 0, 0, 370, 371, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 606, 84, + 85, 86, 358, 357, 360, 361, 362, 363, 0, 0, + 106, 359, 364, 365, 366, 0, 0, 0, 0, 351, + 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 349, 0, 0, 0, 0, 393, 0, 350, + 0, 0, 345, 346, 347, 352, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 125, 392, 0, 0, 274, + 0, 0, 390, 0, 191, 0, 222, 128, 143, 102, + 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, + 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, + 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, + 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, + 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, + 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, + 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, + 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, + 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, + 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, + 254, 178, 201, 108, 240, 217, 380, 391, 386, 387, + 384, 385, 383, 382, 381, 394, 372, 373, 374, 375, + 377, 0, 388, 389, 376, 87, 96, 145, 253, 193, + 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, + 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, + 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, + 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, + 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, + 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, + 239, 246, 249, 172, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, + 379, 146, 0, 0, 218, 160, 0, 0, 0, 0, + 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 84, 85, 86, 358, 357, 360, + 361, 362, 363, 0, 0, 106, 359, 364, 365, 366, + 0, 0, 0, 0, 351, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, + 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, + 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 392, 0, 0, 274, 0, 0, 390, 0, 191, + 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, + 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, + 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, + 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, + 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, + 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, + 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, + 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, + 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, + 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, + 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, + 217, 380, 391, 386, 387, 384, 385, 383, 382, 381, + 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, + 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, + 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, + 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, + 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, + 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, + 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, + 0, 0, 0, 144, 0, 0, 146, 0, 0, 218, + 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 106, 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, 643, 642, 652, + 653, 645, 646, 647, 648, 649, 650, 651, 644, 0, + 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 125, 0, 0, 0, 274, + 0, 0, 0, 0, 191, 0, 222, 128, 143, 102, + 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, + 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, + 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, + 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, + 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, + 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, + 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, + 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, + 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, + 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, + 254, 178, 201, 108, 240, 217, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 87, 96, 145, 253, 193, + 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, + 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, + 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, + 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, + 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, + 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, + 239, 246, 249, 172, 0, 0, 0, 631, 0, 0, + 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, + 0, 146, 0, 0, 218, 160, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 85, 86, 0, 633, 0, + 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, + 0, 628, 627, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 629, 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, + 125, 0, 0, 0, 274, 0, 0, 0, 0, 191, + 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, + 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, + 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, + 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, + 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, + 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, + 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, + 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, + 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, + 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, + 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, + 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, + 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, + 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, + 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, + 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, + 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, + 0, 0, 0, 144, 0, 0, 146, 0, 0, 218, + 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 106, 0, 0, 0, 0, 0, 76, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 125, 78, 79, 0, 75, + 0, 0, 0, 80, 191, 0, 222, 128, 143, 102, + 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, + 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, + 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, + 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, + 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, + 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, + 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, + 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, + 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, + 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, + 254, 178, 201, 108, 240, 217, 0, 77, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 87, 96, 145, 253, 193, + 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, + 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, + 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, + 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, + 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, + 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, + 239, 246, 249, 172, 0, 0, 0, 977, 0, 0, + 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, + 0, 146, 0, 0, 218, 160, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 85, 86, 0, 979, 0, + 0, 0, 0, 0, 0, 106, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 125, 0, 0, 0, 274, 0, 0, 0, 0, 191, + 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, + 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, + 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, + 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, + 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, + 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, + 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, + 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, + 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, + 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, + 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, + 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, + 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, + 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, + 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, + 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, + 214, 220, 223, 229, 230, 239, 246, 249, 26, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, + 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, + 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, + 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, + 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, + 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, + 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, + 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, + 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, + 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, + 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, + 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, + 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, + 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, + 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, + 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, + 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, + 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, + 229, 230, 239, 246, 249, 172, 0, 0, 0, 977, + 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, + 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 86, 0, + 979, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, + 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, + 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, + 200, 179, 238, 0, 975, 199, 147, 228, 192, 237, + 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, + 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, + 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, + 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, + 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, + 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, + 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, + 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, + 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, + 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, + 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, + 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, + 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, + 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, + 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 85, 86, 0, 0, 867, 0, 0, 868, + 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, + 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, + 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, + 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, + 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, + 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, + 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, + 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, + 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, + 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, + 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, + 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, + 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, + 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, + 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, + 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, + 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, + 229, 230, 239, 246, 249, 172, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 0, 746, 0, 0, 0, + 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 86, 0, + 745, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, + 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, + 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, + 200, 179, 238, 0, 181, 199, 147, 228, 192, 237, + 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, + 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, + 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, + 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, + 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, + 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, + 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, + 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, + 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, + 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, + 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, + 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, + 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, + 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, + 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 84, 85, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, + 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, + 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, + 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, + 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, + 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, + 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, + 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, + 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, + 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, + 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, + 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, + 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, + 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, + 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, + 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, + 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, + 229, 230, 239, 246, 249, 172, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, + 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 84, 85, 86, 0, + 0, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, + 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, + 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, + 200, 179, 238, 0, 181, 199, 147, 228, 192, 237, + 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, + 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, + 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, + 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, + 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, + 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, + 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, + 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, + 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, + 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, + 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, + 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, + 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, + 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, + 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 85, 86, 0, 979, 0, 0, 0, 0, + 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, + 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, + 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, + 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, + 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, + 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, + 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, + 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, + 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, + 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, + 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, + 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, + 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, + 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, + 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, + 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, + 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, + 229, 230, 239, 246, 249, 172, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, + 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 86, 0, + 633, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, + 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, + 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, + 200, 179, 238, 0, 181, 199, 147, 228, 192, 237, + 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, + 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, + 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, + 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, + 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, + 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, + 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, + 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, + 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, + 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, + 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, + 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, + 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, + 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, + 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, + 172, 0, 0, 0, 0, 0, 0, 0, 716, 116, + 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, + 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, + 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, + 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, + 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, + 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, + 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, + 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, + 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, + 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, + 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, + 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, + 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, + 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, + 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, + 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, + 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, + 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, + 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, + 229, 230, 239, 246, 249, 397, 0, 0, 0, 0, + 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, + 0, 116, 0, 0, 0, 0, 0, 144, 0, 0, + 146, 0, 0, 218, 160, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 85, 86, 0, 0, 0, 0, + 0, 0, 0, 0, 106, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 0, 0, 0, 274, 0, 0, 0, 0, 191, 0, + 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, + 198, 202, 0, 0, 0, 110, 0, 200, 179, 238, + 0, 181, 199, 147, 228, 192, 237, 247, 248, 225, + 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, + 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, + 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, + 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, + 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, + 0, 0, 219, 241, 256, 104, 0, 226, 250, 251, + 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, + 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, + 96, 145, 253, 193, 121, 242, 0, 0, 114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 89, 90, 97, 103, 109, 113, 117, 120, 126, + 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, + 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, + 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, + 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, + 220, 223, 229, 230, 239, 246, 249, 172, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, + 0, 0, 144, 0, 0, 146, 0, 0, 218, 160, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, + 86, 0, 0, 0, 0, 0, 0, 0, 0, 106, + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 125, 0, 269, 0, 274, 0, + 0, 0, 0, 191, 0, 222, 128, 143, 102, 140, + 88, 98, 0, 127, 169, 198, 202, 0, 0, 0, + 110, 0, 200, 179, 238, 0, 181, 199, 147, 228, + 192, 237, 247, 248, 225, 245, 252, 215, 91, 224, + 236, 107, 210, 93, 234, 221, 158, 137, 138, 92, + 0, 196, 115, 123, 112, 171, 231, 232, 111, 255, + 99, 244, 95, 100, 243, 165, 227, 235, 159, 152, + 94, 233, 157, 151, 142, 119, 130, 189, 149, 190, + 131, 162, 161, 163, 0, 0, 0, 219, 241, 256, + 104, 0, 226, 250, 251, 0, 0, 105, 124, 118, + 188, 122, 164, 101, 133, 216, 141, 148, 195, 254, + 178, 201, 108, 240, 217, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 87, 96, 145, 253, 193, 121, + 242, 0, 0, 114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 90, 97, 103, + 109, 113, 117, 120, 126, 129, 132, 134, 135, 136, + 139, 150, 153, 154, 155, 156, 166, 167, 168, 170, + 173, 174, 175, 176, 177, 180, 182, 183, 184, 185, + 186, 187, 194, 197, 203, 204, 205, 206, 207, 208, + 209, 211, 212, 213, 214, 220, 223, 229, 230, 239, + 246, 249, 172, 0, 0, 0, 0, 0, 0, 0, + 0, 116, 0, 0, 0, 0, 0, 144, 0, 0, + 146, 0, 0, 218, 160, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 84, 85, 86, 0, 0, 0, 0, + 0, 0, 0, 0, 106, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, + 0, 0, 0, 274, 0, 0, 0, 0, 191, 0, + 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, + 198, 202, 0, 0, 0, 110, 0, 200, 179, 238, + 0, 181, 199, 147, 228, 192, 237, 247, 248, 225, + 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, + 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, + 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, + 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, + 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, + 0, 0, 219, 241, 256, 104, 0, 226, 250, 251, + 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, + 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, + 96, 145, 253, 193, 121, 242, 0, 0, 114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 89, 90, 97, 103, 109, 113, 117, 120, 126, + 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, + 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, + 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, + 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, + 220, 223, 229, 230, 239, 246, 249, } var yyPact = [...]int{ - 2927, -1000, -275, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2394, -1000, -275, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 958, 977, -1000, -1000, -1000, -1000, -1000, - -1000, 281, 11635, 46, 125, -22, 15674, 124, 76, 16009, - -1000, 12, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -83, - -84, -1000, 745, -1000, -1000, -1000, -1000, -1000, 949, 956, - 756, 944, 913, -1000, 8273, 87, 87, 15339, 6933, -1000, - -1000, 350, 16009, 117, 16009, -152, 85, 85, 85, -1000, + -1000, -1000, -1000, -1000, 953, 991, -1000, -1000, -1000, -1000, + -1000, -1000, 310, 11660, 43, 126, -10, 15699, 125, 77, + 16034, -1000, 28, -1000, -1000, -271, -1000, -1000, -1000, -1000, + -55, -65, -1000, 712, -1000, -1000, -1000, -1000, -1000, 937, + 951, 776, 932, 943, -1000, 8298, 95, 95, 15364, 6958, + -1000, -1000, 474, 16034, 123, 16034, -147, 91, 91, 91, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2564,23 +2579,24 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 111, 16009, 525, 525, - 259, -1000, 16009, 83, 525, 83, 83, 83, 16009, -1000, - 175, -1000, -1000, -1000, 16009, 525, 886, 307, 62, 4497, - -1000, 198, -1000, 4497, 21, 4497, -47, 967, 18, -26, - -1000, 4497, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 498, 884, 9625, 9625, - 958, -1000, 745, -1000, -1000, -1000, 826, 8273, -1000, -1000, - 824, -1000, -1000, -1000, -1000, 381, 975, -1000, 11300, 173, - -1000, 9625, 418, 574, -1000, -1000, 574, -1000, -1000, 144, - -1000, -1000, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 116, 16034, 563, + 563, 271, -1000, 16034, 89, 563, 89, 89, 89, 16034, + -1000, 170, -1000, -1000, -1000, 16034, 563, 895, 323, 50, + 4522, -1000, 200, -1000, 4522, 42, 4522, -41, 963, 44, + -23, -1000, 4522, -1000, -1000, -1000, -1000, -1000, -1000, 115, + -1000, 282, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 497, + 901, 9650, 9650, 953, -1000, 712, -1000, -1000, -1000, 844, + 8298, -1000, -1000, 850, -1000, -1000, -1000, -1000, 350, 972, + -1000, 11325, 168, -1000, 9650, 1869, 672, -1000, -1000, 672, + -1000, -1000, 139, -1000, -1000, 10655, 10655, 10655, 10655, 10655, + 10655, 10655, 10655, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 672, -1000, 9315, + 672, 672, 672, 672, 672, 672, 672, 672, 9650, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 15022, 14017, 16034, 733, 720, + -1000, -1000, 167, 722, 6610, -95, -1000, -1000, -1000, 278, + 13347, -1000, -1000, -1000, 874, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 574, -1000, 9290, 574, 574, 574, - 574, 574, 574, 574, 574, 9625, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 14997, 13992, 16009, 702, 678, -1000, -1000, 171, - 687, 6585, -111, -1000, -1000, -1000, 263, 13322, -1000, -1000, - -1000, 883, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2591,304 +2607,307 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 645, 16034, -1000, 2559, -1000, 563, + 4522, 105, 563, 328, 563, 16034, 16034, 4522, 4522, 4522, + 52, 82, 79, 16034, 715, 102, 16034, 915, 788, 16034, + 563, 563, -1000, 5914, -1000, 4522, 323, -1000, 479, 9650, + 4522, 4522, 4522, 16034, 4522, 4522, -1000, -1000, -1000, 303, + -1000, -1000, -1000, -1000, 4522, 4522, -1000, 969, 295, -1000, + -1000, -1000, -1000, 9650, 210, -1000, 786, -1000, -1000, -1000, + -1000, -1000, -126, -1000, -1000, -1000, -1000, -1000, 985, 204, + 438, 166, 697, -1000, 364, 937, 497, 850, 13012, 729, + -1000, 850, -1000, -1000, -1000, 16034, -1000, 9650, 9650, 414, + -1000, 14687, -1000, -1000, 5566, 226, 10655, 488, 313, 10655, + 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, + 10655, 10655, 10655, 10655, 528, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 563, -1000, 712, 649, 649, 184, 184, + 184, 184, 184, 184, 184, 10990, 7293, 497, 638, 396, + 9315, 8298, 8298, 9650, 9650, 8968, 8633, 8298, 866, 292, + 396, 16034, -1000, -1000, 10320, -1000, -1000, -1000, -1000, -1000, + 497, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 16034, 16034, + 8298, 8298, 8298, 8298, 8298, 62, 16034, -1000, 601, 899, + -1000, -1000, -1000, 929, 12342, 12677, 62, 614, 14017, 16034, + -1000, -1000, 14017, 16034, 5218, 6262, -95, -1000, 675, -1000, + -103, -101, 7628, 181, -1000, -1000, -1000, -1000, 4174, 302, + 532, 365, -46, -1000, -1000, -1000, 736, -1000, 736, 736, + 736, 736, -4, -4, -4, -4, -1000, -1000, -1000, -1000, + -1000, 769, 768, -1000, 736, 736, 736, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 648, 16009, -1000, 1561, -1000, 525, 4497, 104, 525, - 311, 525, 16009, 16009, 4497, 4497, 4497, 36, 71, 58, - 16009, 682, 102, 16009, 936, 787, 16009, 525, 525, -1000, - 5889, -1000, 4497, 307, -1000, 487, 9625, 4497, 4497, 4497, - 16009, 4497, 4497, -1000, -1000, -1000, 303, -1000, -1000, -1000, - -1000, 4497, 4497, -1000, 974, 294, -1000, -1000, -1000, -1000, - 9625, 226, -1000, 786, -1000, -1000, -1000, -1000, -1000, -1000, - 984, 207, 517, 162, 679, -1000, 503, 949, 498, 824, - 12987, 709, -1000, 824, -1000, -1000, -1000, 16009, -1000, 9625, - 9625, 458, -1000, 14662, -1000, -1000, 5541, 242, 10630, 392, - 357, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, 10630, - 10630, 10630, 10630, 10630, 10630, 10630, 566, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 525, -1000, 745, 550, 550, - 184, 184, 184, 184, 184, 184, 184, 10965, 7268, 498, - 642, 293, 9290, 8273, 8273, 9625, 9625, 8943, 8608, 8273, - 880, 299, 293, 16009, -1000, -1000, 10295, -1000, -1000, -1000, - -1000, -1000, 498, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 16009, 16009, 8273, 8273, 8273, 8273, 8273, 53, 16009, -1000, - 689, 776, -1000, -1000, -1000, 939, 12317, 12652, 53, 677, - 13992, 16009, -1000, -1000, 13992, 16009, 5193, 6237, -111, -1000, - 653, -1000, -118, -122, 7603, 183, -1000, -1000, -1000, -1000, - 4149, 313, 534, 326, -78, -1000, -1000, -1000, 711, -1000, - 711, 711, 711, 711, -27, -27, -27, -27, -1000, -1000, - -1000, -1000, -1000, 731, 727, -1000, 711, 711, 711, -1000, + -1000, -1000, -1000, -1000, -1000, 751, 751, 751, 740, 740, + 772, -1000, 16034, 4522, 904, 4522, -1000, 73, -1000, -1000, + -1000, 16034, 16034, 16034, 16034, 16034, 148, 16034, 16034, 688, + -1000, 16034, 4522, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 396, -1000, -1000, -1000, -1000, -1000, -1000, 16034, -1000, + -1000, -1000, -1000, 16034, 323, 16034, 16034, 396, -1000, 467, + 16034, -1000, -1000, -1000, -1000, 838, 9650, 9650, 5914, 9650, + -1000, -1000, -1000, 901, -1000, 947, -1000, 851, 848, 961, + 8298, 14017, 850, -1000, 226, 238, -1000, -1000, 465, -1000, + -1000, -1000, -1000, 163, 672, -1000, 1589, -1000, -1000, -1000, + -1000, 488, 10655, 10655, 10655, 399, 1589, 1719, 1031, 510, + 184, 347, 347, 180, 180, 180, 180, 180, 1603, 1603, + -1000, -1000, -1000, 497, -1000, -1000, -1000, 497, 8298, 8298, + 684, -1000, 9650, -1000, 497, 616, 616, 355, 391, 285, + 968, 616, 262, 965, 616, 616, 8298, -1000, -1000, 300, + -1000, 9650, 497, -1000, 162, -1000, 421, 681, 680, 616, + 497, 497, 616, 616, 671, 672, -1000, 16034, 14017, 14017, + 14017, 14017, 14017, -1000, 819, 810, -1000, 801, 799, 852, + 16034, -1000, 635, 12342, 196, 672, -1000, 14352, -1000, -1000, + 961, 14017, 696, -1000, 696, -1000, 159, -1000, -1000, 675, + -95, -61, -1000, -1000, -1000, -1000, 396, -1000, 538, 667, + 3826, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 749, 563, + -1000, 908, 237, 293, 563, 907, -1000, -1000, -1000, 897, + -1000, 322, -50, -1000, -1000, 426, -4, -4, -1000, -1000, + 181, 871, 181, 181, 181, 454, 454, -1000, -1000, -1000, + -1000, 417, -1000, -1000, -1000, 406, -1000, 784, 16034, 4522, + -1000, -1000, -1000, -1000, 290, 290, 213, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 61, 734, + -1000, -1000, -1000, -1000, 20, 51, 97, -1000, 4522, -1000, + 295, 295, -1000, -1000, -1000, -1000, -1000, 836, 396, 396, + 158, -1000, -1000, 16034, -1000, -1000, -1000, -1000, 959, 9650, + -1000, 666, -1000, -1000, -1000, -1000, 4870, 8298, -1000, 399, + 1589, 811, -1000, 10655, 10655, -1000, -1000, 616, 616, 396, + -1000, -1000, -1000, 182, 528, 182, 10655, 10655, -1000, 10655, + 10655, -1000, -159, 618, 287, -1000, 9650, 476, -1000, 5914, + -1000, 10655, 10655, -1000, -1000, -1000, -1000, -1000, 783, 16034, + 672, -1000, 12342, 16034, 710, -1000, 274, 899, 755, 781, + 711, -1000, -1000, -1000, -1000, 809, -1000, 808, -1000, -1000, + -1000, -1000, -1000, 122, 118, 111, 16034, -1000, 953, 696, + -1000, -1000, 155, -1000, -1000, -125, -131, -1000, -1000, -1000, + 4174, -1000, 4174, 16034, 80, -1000, 563, 563, -1000, -1000, + -1000, 746, 779, 10655, -1000, -1000, -1000, 519, 181, 181, + -1000, 316, -1000, -1000, -1000, 610, -1000, 608, 662, 605, + 16034, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 724, 724, 724, - 714, 714, 703, -1000, 16009, 4497, 934, 4497, -1000, 72, - -1000, -1000, -1000, 16009, 16009, 16009, 16009, 16009, 132, 16009, - 16009, 674, -1000, 16009, 4497, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 293, -1000, -1000, -1000, -1000, -1000, -1000, - 16009, -1000, -1000, -1000, -1000, 16009, 307, 16009, 16009, 293, - -1000, 478, 16009, -1000, 823, 9625, 9625, 5889, 9625, -1000, - -1000, -1000, 884, -1000, 951, -1000, 850, 835, 966, 8273, - 13992, 824, -1000, 242, 310, -1000, -1000, 504, -1000, -1000, - -1000, -1000, 161, 574, -1000, 1871, -1000, -1000, -1000, -1000, - 392, 10630, 10630, 10630, 260, 1871, 1818, 773, 572, 184, - 328, 328, 277, 277, 277, 277, 277, 383, 383, -1000, - -1000, -1000, 498, -1000, -1000, -1000, 498, 8273, 8273, 667, - -1000, 9625, -1000, 498, 638, 638, 385, 512, 279, 973, - 638, 274, 972, 638, 638, 8273, -1000, -1000, 331, -1000, - 9625, 498, -1000, 158, -1000, 319, 666, 658, 638, 498, - 498, 638, 638, 681, 574, -1000, 16009, 13992, 13992, 13992, - 13992, 13992, -1000, 812, 811, -1000, 800, 798, 804, 16009, - -1000, 640, 12317, 168, 574, -1000, 14327, -1000, -1000, 966, - 13992, 655, -1000, 655, -1000, 157, -1000, -1000, 653, -111, - -115, -1000, -1000, -1000, -1000, 293, -1000, 573, 602, 3801, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 720, 525, -1000, - 914, 211, 222, 525, 910, -1000, -1000, -1000, 889, -1000, - 371, -86, -1000, -1000, 419, -27, -27, -1000, -1000, 183, - 876, 183, 183, 183, 476, 476, -1000, -1000, -1000, -1000, - 417, -1000, -1000, -1000, 411, -1000, 783, 16009, 4497, -1000, - -1000, -1000, -1000, 188, 188, 218, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 50, 690, -1000, - -1000, -1000, -1000, 3, 27, 97, -1000, 4497, -1000, 294, - 294, -1000, -1000, -1000, -1000, -1000, 819, 293, 293, 152, - -1000, -1000, 16009, -1000, -1000, -1000, -1000, 963, 9625, -1000, - 593, -1000, -1000, -1000, -1000, 4845, 8273, -1000, 260, 1871, - 1751, -1000, 10630, 10630, -1000, -1000, 638, 638, 293, -1000, - -1000, -1000, 17, 566, 17, 10630, 10630, -1000, 10630, 10630, - -1000, -167, 693, 268, -1000, 9625, 472, -1000, 5889, -1000, - 10630, 10630, -1000, -1000, -1000, -1000, -1000, 778, 16009, 574, - -1000, 12317, 16009, 695, -1000, 261, 776, 780, 774, 598, - -1000, -1000, -1000, -1000, 808, -1000, 802, -1000, -1000, -1000, - -1000, -1000, 116, 114, 113, 16009, -1000, 958, 655, -1000, - -1000, 215, -1000, -1000, -130, -132, -1000, -1000, -1000, 4149, - -1000, 4149, 16009, 68, -1000, 525, 525, -1000, -1000, -1000, - 715, 765, 10630, -1000, -1000, -1000, 523, 183, 183, -1000, - 346, -1000, -1000, -1000, 636, -1000, 634, 578, 624, 16009, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 16009, - -1000, -1000, -1000, -1000, -1000, 16009, -177, 525, 16009, 16009, - 16009, 16009, -1000, 307, 307, -1000, 5889, -1000, 960, 952, - 293, -1000, -1000, 498, -1000, 10630, 1871, 1871, -1000, -1000, - 498, 711, 711, -1000, 711, 714, -1000, 711, 0, 711, - -1, 498, 498, 1700, 1541, 1503, 1183, 574, -161, -1000, - 293, 9625, -1000, 1019, 825, -1000, 916, 533, 538, -1000, - -1000, 7938, 498, 608, 148, 606, -1000, 958, 16009, 9625, - -1000, -1000, 9625, 712, -1000, 9625, -1000, -1000, -1000, 574, - 574, 574, 606, 949, -1000, -1000, -1000, -1000, 3801, -1000, - 604, -1000, 711, -1000, -1000, -1000, 16009, -60, 983, 1871, - -1000, -1000, -1000, -1000, -1000, -27, 448, -27, 407, -1000, - 395, 4497, -1000, -1000, -1000, -1000, 919, -1000, 5889, -1000, - -1000, 707, 694, -1000, -1000, -1000, -1000, -1000, 9625, 9625, - -1000, 1871, -1000, -1000, 110, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 10630, 10630, 10630, 10630, 10630, 949, 440, - 293, 10630, 10630, 909, -1000, 574, -1000, -1000, 708, 16009, - 16009, -1000, 16009, 949, -1000, 293, 293, 16009, 293, 13657, - 16009, 16009, 11970, -1000, 202, 16009, -1000, 600, -1000, 200, - -1000, -89, 183, -1000, 183, 506, 502, -1000, 574, 571, - -1000, 256, 16009, 16009, 293, 562, -1000, -1000, 319, 319, - 319, 319, 47, 498, -1000, 319, 319, 982, -1000, 574, - -1000, 745, 139, -1000, -1000, -1000, 597, 583, -1000, 583, - 583, 168, 202, -1000, 525, 244, 436, -1000, 65, 16009, - 359, 893, -1000, 891, -1000, -1000, -1000, -1000, -1000, 48, - 5889, 4149, 580, -1000, -1000, -1000, -1000, -1000, 498, 51, - -180, -1000, -1000, -1000, 16009, 538, 498, 16009, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 391, -1000, -1000, 16009, -1000, - -1000, 429, -1000, -1000, 551, -1000, 16009, -1000, -1000, 690, - -1000, 817, -175, -188, 518, -1000, -1000, -1000, 692, -1000, - -1000, 48, 833, -177, -1000, 790, -1000, 16009, -1000, 42, - -1000, -178, 549, 40, -186, 749, 574, -190, 743, -1000, - 971, 9960, -1000, -1000, 978, 237, 237, 319, 498, -1000, - -1000, -1000, 73, 425, -1000, -1000, -1000, -1000, -1000, -1000, + 16034, -1000, -1000, -1000, -1000, -1000, 16034, -165, 563, 16034, + 16034, 16034, 16034, -1000, 323, 323, -1000, 5914, -1000, 955, + 949, 396, -1000, -1000, 497, -1000, 10655, 1589, 1589, -1000, + -1000, 497, 736, 736, -1000, 736, 740, -1000, 736, 26, + 736, 12, 497, 497, 1566, 1523, 1266, 583, 672, -154, + -1000, 396, 9650, -1000, 970, 539, -1000, 902, 513, 597, + -1000, -1000, 7963, 497, 603, 147, 599, -1000, 953, 16034, + 9650, -1000, -1000, 9650, 739, -1000, 9650, -1000, -1000, -1000, + 672, 672, 672, 599, 937, -1000, -1000, -1000, -1000, 3826, + -1000, 595, -1000, 736, -1000, -1000, -1000, 16034, -31, 984, + 1589, -1000, -1000, -1000, -1000, -1000, -4, 453, -4, 402, + -1000, 358, 4522, -1000, -1000, -1000, -1000, 911, -1000, 5914, + -1000, -1000, 731, 771, -1000, -1000, -1000, -1000, -1000, 9650, + 9650, -1000, 1589, -1000, -1000, 142, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 10655, 10655, 10655, 10655, 10655, 937, + 449, 396, 10655, 10655, 906, -1000, 672, -1000, -1000, 785, + 16034, 16034, -1000, 16034, 937, -1000, 396, 396, 16034, 396, + 13682, 16034, 16034, 11995, -1000, 185, 16034, -1000, 591, -1000, + 214, -1000, -87, 181, -1000, 181, 507, 500, -1000, 672, + 648, -1000, 259, 16034, 16034, 396, 640, -1000, -1000, 421, + 421, 421, 421, 49, 497, -1000, 421, 421, 980, -1000, + 672, -1000, 712, 146, -1000, -1000, -1000, 572, 570, -1000, + 570, 570, 196, 185, -1000, 563, 252, 446, -1000, 74, + 16034, 345, 905, -1000, 900, -1000, -1000, -1000, -1000, -1000, + 60, 5914, 4174, 547, -1000, -1000, -1000, -1000, -1000, 497, + 54, -175, -1000, -1000, -1000, 16034, 597, 497, 16034, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 356, -1000, -1000, 16034, + -1000, -1000, 445, -1000, -1000, 526, -1000, 16034, -1000, -1000, + 734, -1000, 827, -163, -181, 537, -1000, -1000, -1000, 724, + -1000, -1000, 60, 847, -165, -1000, 826, -1000, 16034, -1000, + 57, -1000, -168, 523, 53, -176, 777, 672, -183, 774, + -1000, 982, 9985, -1000, -1000, 978, 192, 192, 421, 497, + -1000, -1000, -1000, 84, 410, -1000, -1000, -1000, -1000, -1000, + -1000, } var yyPgo = [...]int{ - 0, 1231, 31, 562, 1229, 1228, 1227, 1226, 1225, 1224, - 1223, 1219, 1218, 1217, 1212, 1211, 1209, 1208, 1207, 1206, - 1205, 1204, 1203, 1199, 1198, 1195, 1191, 86, 1185, 1181, - 1179, 1178, 1177, 1176, 1175, 45, 110, 56, 60, 1174, - 55, 2243, 1172, 44, 58, 62, 1171, 34, 1170, 1169, - 77, 1168, 1167, 51, 1165, 1164, 2483, 1162, 76, 1160, - 13, 53, 1159, 1158, 1156, 1154, 70, 254, 1149, 1139, - 14, 1135, 1133, 97, 1132, 54, 18, 16, 21, 19, - 1131, 108, 6, 1128, 48, 1115, 1113, 1110, 1109, 25, - 1107, 63, 1106, 52, 57, 1105, 10, 74, 30, 20, - 8, 1104, 1103, 23, 71, 46, 65, 1102, 1101, 500, - 1100, 1099, 41, 1098, 1097, 1095, 27, 1094, 88, 474, - 1093, 1092, 1091, 1089, 59, 871, 1665, 12, 79, 1088, - 1086, 1085, 2022, 61, 50, 24, 1084, 47, 209, 38, - 1082, 1081, 35, 1080, 1078, 1077, 1075, 1074, 1073, 1072, - 296, 1070, 1067, 1066, 17, 22, 1062, 1061, 64, 26, - 1055, 1054, 1053, 43, 67, 1043, 1041, 49, 1040, 1037, - 28, 1035, 1031, 1030, 1029, 1028, 36, 7, 1022, 15, - 1021, 11, 1020, 29, 1016, 4, 1013, 9, 1008, 3, - 0, 1001, 5, 42, 1, 1000, 2, 998, 996, 1502, - 1237, 66, 995, 85, + 0, 1229, 26, 563, 1228, 1227, 1226, 1225, 86, 85, + 83, 1220, 1219, 1217, 1216, 1215, 1214, 1213, 1209, 1206, + 1204, 1203, 1202, 1201, 1200, 1199, 1196, 1195, 99, 1190, + 1189, 1188, 1187, 1186, 1185, 1184, 1182, 42, 192, 39, + 60, 1181, 57, 1712, 1180, 52, 58, 65, 1178, 31, + 1176, 1174, 78, 1173, 1172, 53, 1170, 1169, 46, 1168, + 63, 1167, 11, 50, 1159, 1155, 1150, 1149, 75, 1245, + 1148, 1146, 14, 1145, 1144, 92, 1143, 56, 20, 7, + 13, 19, 1141, 811, 12, 1128, 55, 1124, 1123, 1122, + 1121, 32, 1120, 61, 1117, 18, 59, 1116, 9, 66, + 30, 22, 10, 1115, 1114, 29, 64, 51, 62, 1110, + 1109, 511, 1108, 1106, 45, 1105, 1104, 1103, 28, 1101, + 90, 414, 1099, 1098, 1097, 1096, 43, 760, 1473, 254, + 68, 1095, 1093, 1091, 2432, 35, 54, 16, 1090, 48, + 198, 36, 1089, 1088, 37, 1087, 1086, 1085, 1083, 1082, + 1080, 1066, 180, 1065, 1064, 1061, 91, 24, 1060, 1056, + 72, 21, 1054, 1052, 1051, 47, 67, 1048, 1046, 49, + 1044, 1043, 25, 1039, 1038, 1037, 1029, 1022, 33, 17, + 1016, 15, 1013, 8, 1012, 23, 1011, 5, 1009, 6, + 1008, 2, 0, 1007, 4, 44, 1, 1006, 3, 1005, + 998, 1265, 1375, 71, 997, 77, } var yyR1 = [...]int{ - 0, 197, 198, 198, 1, 1, 1, 1, 1, 1, + 0, 199, 200, 200, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 190, 190, 190, 2, 2, - 2, 6, 3, 4, 4, 5, 5, 7, 7, 30, - 30, 8, 9, 9, 9, 9, 201, 201, 50, 50, - 51, 51, 97, 97, 10, 11, 11, 106, 106, 105, - 105, 105, 107, 107, 107, 107, 140, 140, 12, 12, - 12, 12, 12, 12, 12, 192, 192, 191, 189, 189, - 188, 188, 187, 18, 172, 174, 174, 173, 173, 173, - 173, 164, 143, 143, 143, 143, 146, 146, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 145, 145, 145, - 145, 145, 147, 147, 147, 147, 147, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 149, 149, 149, 149, 149, 149, 149, 149, - 163, 163, 150, 150, 158, 158, 159, 159, 159, 156, - 156, 157, 157, 160, 160, 160, 152, 152, 153, 153, - 161, 161, 154, 154, 154, 155, 155, 155, 162, 162, - 162, 162, 162, 151, 151, 165, 165, 182, 182, 181, - 181, 181, 171, 171, 178, 178, 178, 178, 178, 168, - 168, 168, 169, 169, 167, 167, 170, 170, 180, 180, - 179, 166, 166, 183, 183, 183, 183, 195, 196, 194, - 194, 194, 194, 194, 175, 175, 175, 176, 176, 176, - 177, 177, 177, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 193, 193, 193, 193, 186, 184, 184, 185, 185, 14, - 19, 19, 15, 15, 15, 15, 15, 16, 16, 20, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 113, 113, 115, - 115, 111, 111, 114, 114, 112, 112, 112, 116, 116, - 116, 117, 117, 141, 141, 141, 22, 22, 24, 24, - 25, 26, 23, 23, 23, 23, 23, 23, 23, 17, - 202, 27, 28, 28, 29, 29, 29, 32, 32, 32, - 31, 31, 31, 37, 37, 39, 39, 39, 39, 39, - 40, 40, 40, 40, 40, 40, 36, 36, 38, 38, - 38, 38, 129, 129, 129, 128, 128, 42, 42, 43, - 43, 44, 44, 45, 45, 45, 45, 59, 59, 96, - 96, 98, 98, 46, 46, 46, 46, 47, 47, 48, - 48, 49, 49, 136, 136, 135, 135, 135, 134, 134, - 52, 52, 52, 54, 53, 53, 53, 53, 55, 55, - 57, 57, 56, 56, 58, 60, 60, 60, 60, 60, - 61, 61, 41, 41, 41, 41, 41, 41, 41, 110, - 110, 63, 63, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 74, 74, 74, 74, 74, 74, 64, - 64, 64, 64, 64, 64, 64, 35, 35, 75, 75, - 75, 81, 76, 76, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 71, 71, 71, 71, + 1, 1, 1, 1, 1, 1, 192, 192, 192, 2, + 2, 2, 7, 3, 4, 4, 5, 5, 8, 8, + 31, 31, 9, 10, 10, 10, 10, 203, 203, 52, + 52, 53, 53, 99, 99, 11, 12, 12, 108, 108, + 107, 107, 107, 109, 109, 109, 109, 142, 142, 13, + 13, 13, 13, 13, 13, 13, 194, 194, 193, 191, + 191, 190, 190, 189, 19, 174, 176, 176, 175, 175, + 175, 175, 166, 145, 145, 145, 145, 148, 148, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, + 147, 147, 147, 149, 149, 149, 149, 149, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, + 151, 165, 165, 152, 152, 160, 160, 161, 161, 161, + 158, 158, 159, 159, 162, 162, 162, 154, 154, 155, + 155, 163, 163, 156, 156, 156, 157, 157, 157, 164, + 164, 164, 164, 164, 153, 153, 167, 167, 184, 184, + 183, 183, 183, 173, 173, 180, 180, 180, 180, 180, + 170, 170, 170, 171, 171, 169, 169, 172, 172, 182, + 182, 181, 168, 168, 185, 185, 185, 185, 197, 198, + 196, 196, 196, 196, 196, 177, 177, 177, 178, 178, + 178, 179, 179, 179, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 188, 186, 186, 187, 187, + 15, 20, 20, 16, 16, 16, 16, 16, 17, 17, + 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 115, 115, + 117, 117, 113, 113, 116, 116, 114, 114, 114, 118, + 118, 118, 119, 119, 143, 143, 143, 23, 23, 25, + 25, 26, 27, 32, 32, 32, 32, 6, 6, 6, + 6, 24, 24, 24, 24, 24, 24, 24, 18, 204, + 28, 29, 29, 30, 30, 30, 34, 34, 34, 33, + 33, 33, 39, 39, 41, 41, 41, 41, 41, 42, + 42, 42, 42, 42, 42, 38, 38, 40, 40, 40, + 40, 131, 131, 131, 130, 130, 44, 44, 45, 45, + 46, 46, 47, 47, 47, 47, 61, 61, 98, 98, + 100, 100, 48, 48, 48, 48, 49, 49, 50, 50, + 51, 51, 138, 138, 137, 137, 137, 136, 136, 54, + 54, 54, 56, 55, 55, 55, 55, 57, 57, 59, + 59, 58, 58, 60, 62, 62, 62, 62, 62, 63, + 63, 43, 43, 43, 43, 43, 43, 43, 112, 112, + 65, 65, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 76, 76, 76, 76, 76, 76, 66, 66, + 66, 66, 66, 66, 66, 37, 37, 77, 77, 77, + 83, 78, 78, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 203, - 203, 73, 72, 72, 72, 72, 72, 72, 72, 33, - 33, 33, 33, 33, 139, 139, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 85, - 85, 34, 34, 83, 83, 84, 86, 86, 82, 82, - 82, 66, 66, 66, 66, 66, 66, 66, 66, 68, - 68, 68, 87, 87, 88, 88, 89, 89, 90, 90, - 91, 92, 92, 92, 93, 93, 93, 93, 94, 94, - 94, 65, 65, 65, 65, 65, 65, 95, 95, 95, - 95, 99, 99, 77, 77, 79, 79, 78, 80, 100, - 100, 103, 101, 101, 101, 104, 104, 104, 104, 102, - 102, 102, 131, 131, 131, 108, 108, 118, 118, 119, - 119, 109, 109, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 121, 121, 121, 122, 122, 123, 123, - 123, 130, 130, 126, 126, 127, 127, 132, 132, 133, - 133, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 199, 200, 137, 138, 138, 138, + 69, 69, 69, 69, 69, 73, 73, 73, 73, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 205, 205, + 75, 74, 74, 74, 74, 74, 74, 74, 35, 35, + 35, 35, 35, 141, 141, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 87, 87, + 36, 36, 85, 85, 86, 88, 88, 84, 84, 84, + 68, 68, 68, 68, 68, 68, 68, 68, 70, 70, + 70, 89, 89, 90, 90, 91, 91, 92, 92, 93, + 94, 94, 94, 95, 95, 95, 95, 96, 96, 96, + 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, + 101, 101, 79, 79, 81, 81, 80, 82, 102, 102, + 105, 103, 103, 103, 106, 106, 106, 106, 104, 104, + 104, 133, 133, 133, 110, 110, 120, 120, 121, 121, + 111, 111, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 123, 123, 123, 124, 124, 125, 125, 125, + 132, 132, 128, 128, 129, 129, 134, 134, 135, 135, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 201, + 202, 139, 140, 140, 140, } var yyR2 = [...]int{ 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 4, 6, - 7, 5, 8, 1, 3, 1, 3, 7, 8, 1, - 1, 9, 8, 7, 6, 6, 1, 1, 1, 3, - 1, 3, 0, 4, 3, 5, 4, 1, 3, 3, - 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, - 8, 4, 6, 5, 5, 0, 2, 1, 0, 2, - 1, 3, 3, 4, 4, 2, 4, 1, 3, 3, - 3, 8, 3, 1, 1, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 1, 2, 2, 2, 1, 4, 4, 2, - 2, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 0, 3, 0, 5, 0, 3, 5, 0, - 1, 0, 1, 0, 1, 2, 0, 2, 0, 3, - 0, 1, 0, 3, 3, 0, 2, 2, 0, 2, - 1, 2, 1, 0, 2, 5, 4, 1, 2, 2, - 3, 2, 0, 1, 2, 3, 3, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, - 2, 3, 1, 10, 11, 11, 12, 3, 3, 1, - 1, 2, 2, 2, 0, 1, 3, 1, 2, 3, - 1, 1, 1, 6, 7, 7, 7, 7, 4, 5, - 4, 4, 7, 5, 5, 5, 12, 7, 5, 9, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 7, 1, 3, 8, 8, 3, - 3, 5, 4, 6, 5, 4, 4, 3, 2, 3, - 4, 4, 3, 4, 4, 4, 4, 4, 4, 3, - 2, 7, 2, 3, 4, 3, 7, 5, 4, 2, - 4, 4, 3, 3, 5, 2, 3, 1, 1, 0, - 1, 0, 1, 1, 1, 0, 2, 2, 0, 2, - 2, 0, 2, 0, 1, 1, 2, 1, 1, 2, - 1, 1, 2, 2, 2, 2, 2, 3, 3, 2, - 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, - 0, 1, 1, 0, 1, 0, 1, 2, 3, 4, - 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, - 3, 5, 0, 1, 2, 1, 1, 0, 2, 1, - 3, 1, 1, 1, 3, 1, 3, 3, 7, 1, - 3, 1, 3, 4, 4, 4, 3, 2, 4, 0, - 1, 0, 2, 0, 1, 0, 1, 2, 1, 1, - 1, 2, 2, 1, 2, 3, 2, 3, 2, 2, - 2, 1, 1, 3, 3, 0, 5, 4, 5, 5, - 0, 2, 1, 3, 3, 2, 3, 1, 2, 0, - 3, 1, 1, 3, 3, 4, 4, 5, 3, 4, - 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, - 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 4, + 6, 7, 5, 8, 1, 3, 1, 3, 7, 8, + 1, 1, 9, 8, 7, 6, 6, 1, 1, 1, + 3, 1, 3, 0, 4, 3, 5, 4, 1, 3, + 3, 2, 2, 2, 2, 2, 1, 1, 1, 2, + 2, 8, 4, 6, 5, 5, 0, 2, 1, 0, + 2, 1, 3, 3, 4, 4, 2, 4, 1, 3, + 3, 3, 8, 3, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 1, 2, 2, 2, 1, 4, 4, + 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, + 1, 6, 6, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 0, 3, 0, 5, 0, 3, 5, + 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, + 3, 0, 1, 0, 3, 3, 0, 2, 2, 0, + 2, 1, 2, 1, 0, 2, 5, 4, 1, 2, + 2, 3, 2, 0, 1, 2, 3, 3, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 3, 2, 3, 1, 10, 11, 11, 12, 3, 3, + 1, 1, 2, 2, 2, 0, 1, 3, 1, 2, + 3, 1, 1, 1, 6, 7, 7, 7, 7, 4, + 5, 4, 4, 7, 5, 5, 5, 12, 7, 5, + 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 7, 1, 3, 8, 8, + 3, 3, 5, 4, 6, 5, 4, 4, 3, 2, + 3, 4, 4, 3, 4, 4, 4, 4, 4, 4, + 3, 2, 7, 2, 3, 4, 3, 7, 5, 4, + 2, 4, 4, 3, 3, 5, 2, 3, 1, 1, + 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, + 2, 2, 0, 2, 0, 1, 1, 2, 1, 1, + 2, 1, 1, 0, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 2, 2, 2, 3, 3, 2, 0, + 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, + 1, 1, 0, 1, 0, 1, 2, 3, 4, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, + 5, 0, 1, 2, 1, 1, 0, 2, 1, 3, + 1, 1, 1, 3, 1, 3, 3, 7, 1, 3, + 1, 3, 4, 4, 4, 3, 2, 4, 0, 1, + 0, 2, 0, 1, 0, 1, 2, 1, 1, 1, + 2, 2, 1, 2, 3, 2, 3, 2, 2, 2, + 1, 1, 3, 3, 0, 5, 4, 5, 5, 0, + 2, 1, 3, 3, 2, 3, 1, 2, 0, 3, + 1, 1, 3, 3, 4, 4, 5, 3, 4, 5, + 6, 2, 1, 2, 1, 2, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, + 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, - 2, 3, 1, 1, 1, 1, 4, 5, 5, 6, - 4, 4, 6, 6, 6, 8, 8, 8, 8, 9, - 8, 5, 4, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 8, 8, 0, - 2, 3, 4, 4, 4, 4, 4, 4, 4, 0, - 3, 4, 7, 3, 1, 1, 2, 3, 3, 1, - 2, 2, 1, 2, 1, 2, 2, 1, 2, 0, - 1, 0, 2, 1, 2, 4, 0, 2, 1, 3, - 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 0, 3, 0, 2, 0, 3, 1, 3, - 2, 0, 1, 1, 0, 2, 4, 4, 0, 2, - 4, 2, 1, 3, 5, 4, 6, 1, 3, 3, - 5, 0, 5, 1, 3, 1, 2, 3, 1, 1, - 3, 3, 1, 2, 3, 3, 3, 3, 3, 1, - 2, 1, 1, 1, 1, 1, 1, 0, 2, 0, - 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, - 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 3, 1, 1, 1, 1, 4, 5, 5, 6, 4, + 4, 6, 6, 6, 8, 8, 8, 8, 9, 8, + 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 8, 8, 0, 2, + 3, 4, 4, 4, 4, 4, 4, 4, 0, 3, + 4, 7, 3, 1, 1, 2, 3, 3, 1, 2, + 2, 1, 2, 1, 2, 2, 1, 2, 0, 1, + 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 0, 3, 0, 2, 0, 3, 1, 3, 2, + 0, 1, 1, 0, 2, 4, 4, 0, 2, 4, + 2, 1, 3, 5, 4, 6, 1, 3, 3, 5, + 0, 5, 1, 3, 1, 2, 3, 1, 1, 3, + 3, 1, 2, 3, 3, 3, 3, 3, 1, 2, + 1, 1, 1, 1, 1, 1, 0, 2, 0, 3, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, + 0, 2, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2918,325 +2937,329 @@ var yyR2 = [...]int{ 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, 1, - 1, 1, 0, 0, 1, 1, + 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -197, -1, -2, -6, -7, -8, -9, -10, -11, - -12, -13, -14, -15, -16, -20, -21, -22, -24, -25, - -26, -23, -17, -3, -4, 6, 7, -30, 9, 10, - 30, -18, 119, 120, 122, 121, 155, 123, 148, 52, - 169, 170, 172, 173, 25, 149, 150, 153, 154, 31, - 32, 125, -199, 8, 255, 56, -198, 353, -89, 15, - -29, 5, -27, -202, -27, -27, -27, -27, -27, -172, - -174, 56, 94, -123, 129, 76, 247, 126, 127, 133, - -126, -190, -125, 59, 60, 61, 265, 141, 297, 298, - 169, 180, 174, 201, 193, 266, 299, 142, 191, 194, - 234, 139, 300, 221, 228, 70, 172, 243, 301, 151, - 189, 185, 302, 274, 183, 27, 303, 230, 206, 304, - 270, 232, 184, 229, 125, 305, 144, 137, 306, 207, - 211, 307, 235, 308, 309, 310, 178, 179, 311, 140, - 237, 205, 138, 33, 267, 36, 159, 238, 209, 312, - 204, 200, 313, 314, 315, 316, 203, 177, 199, 40, - 213, 212, 214, 233, 196, 317, 318, 319, 145, 320, - 186, 18, 321, 322, 323, 324, 325, 241, 154, 326, - 157, 327, 328, 329, 330, 331, 332, 231, 208, 210, - 134, 161, 269, 333, 239, 182, 334, 146, 158, 153, - 242, 147, 335, 336, 337, 338, 339, 340, 341, 173, - 342, 343, 344, 345, 168, 236, 245, 39, 218, 346, - 176, 136, 347, 170, 165, 223, 197, 160, 348, 349, - 187, 188, 202, 175, 198, 171, 162, 155, 350, 244, - 219, 271, 195, 192, 166, 351, 163, 164, 352, 224, - 225, 167, 268, 240, 190, 220, -109, 129, 247, 126, - 225, 131, 127, 127, 128, 129, 247, 126, 127, -56, - -132, -190, -125, 129, 127, 112, 194, 234, 119, 222, - 230, -115, 231, 161, -141, 127, -111, 221, 224, 225, - 167, -190, 232, 236, 235, 226, -132, 171, -137, -137, - -137, -137, -137, 223, 223, -137, -2, -93, 17, 16, - -5, -3, -199, 6, 20, 21, -32, -39, 41, 42, - -40, 21, 34, 45, 43, -28, -38, 103, -41, -132, - -62, 78, -67, 29, -190, -125, 23, -66, -63, -82, - -80, -81, 112, 113, 114, 101, 102, 109, 79, 115, - -71, -69, -70, -72, 63, 62, 71, 64, 65, 66, - 67, 72, 73, 74, -126, -78, -199, 46, 47, 256, - 257, 258, 259, 264, 260, 81, 35, 246, 254, 253, - 252, 250, 251, 248, 249, 262, 263, 132, 247, 126, - 107, 255, -109, -109, 11, -50, -51, -56, -58, -132, - -101, -140, 171, -104, 236, 235, -127, -102, -126, -124, - 234, 194, 233, 124, 272, 77, 22, 24, 216, 80, - 112, 16, 81, 111, 256, 119, 50, 273, 248, 249, - 246, 258, 259, 247, 222, 29, 10, 275, 25, 149, - 21, 34, 105, 121, 84, 85, 152, 23, 150, 74, - 278, 19, 53, 11, 13, 279, 280, 14, 132, 131, - 96, 128, 48, 8, 115, 26, 93, 44, 281, 28, - 282, 283, 284, 285, 46, 94, 17, 250, 251, 31, - 286, 264, 156, 107, 51, 37, 78, 287, 288, 72, - 289, 75, 54, 76, 15, 49, 290, 291, 292, 293, - 95, 122, 255, 47, 294, 126, 6, 261, 30, 148, - 45, 295, 127, 83, 262, 263, 130, 73, 5, 133, - 32, 9, 52, 55, 252, 253, 254, 35, 82, 12, - 296, -173, 94, -164, -190, -56, 128, -56, 255, -119, - 132, -119, -119, 127, -56, -190, -190, 119, 121, 124, - 54, -19, -56, -118, 132, -190, -118, -118, -118, -56, - 116, -56, -190, 30, -116, 94, 12, 247, -190, 161, - 127, 162, 129, -138, -199, -127, -168, 128, 33, 140, - -138, 165, 166, -138, -114, -113, 228, 229, 223, 227, - 12, 166, 223, 164, -138, -137, -137, -200, 58, -94, - 19, 31, -41, -132, -90, -91, -41, -89, -2, -27, - 37, -36, -38, -40, 41, 42, 69, 11, -129, 77, - 76, 93, -128, 22, -126, 63, 116, -41, -64, 96, - 78, 94, 95, 80, 98, 97, 108, 101, 102, 103, - 104, 105, 106, 107, 99, 100, 111, 86, 87, 88, - 89, 90, 91, 92, -110, -199, -81, -199, 117, 118, - -67, -67, -67, -67, -67, -67, -67, -67, -199, -2, - -76, -41, -199, -199, -199, -199, -199, -199, -199, -199, - -199, -85, -41, -199, -203, -73, -199, -203, -73, -203, - -73, -203, -199, -203, -73, -203, -73, -203, -203, -73, - -199, -199, -199, -199, -199, -199, -199, -57, 26, -56, - -43, -44, -45, -46, -59, -81, -199, -56, -56, -50, - -201, 57, 11, 55, -201, 57, 116, 57, 171, -104, - -106, -105, 237, 239, 86, -131, -126, 63, 29, 30, - 58, 57, -56, -143, -146, -148, -147, -149, -144, -145, - 191, 192, 112, 195, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 30, 151, 187, 188, 189, 190, - 207, 208, 209, 210, 211, 212, 213, 214, 174, 193, - 266, 175, 176, 177, 178, 179, 180, 182, 183, 184, - 185, 186, -190, -138, 129, -190, 78, -190, -56, -56, - -138, -138, -138, 163, 163, 127, 127, 168, -56, 57, - 130, -50, 23, 54, -56, -190, -190, -133, -132, -124, - -138, -116, 63, -41, -138, -138, -138, -56, -138, -138, - -169, 11, 96, -138, -138, 11, -112, 11, 96, -41, - -117, 94, 54, 9, 96, 57, 18, 116, 57, -92, - 24, 25, -93, -200, -68, -126, 64, 67, -42, 57, - 11, -40, -56, -41, -41, -74, 72, 78, 73, 74, - -128, 103, -133, -127, -124, -67, -75, -78, -81, 68, - 96, 94, 95, 80, -67, -67, -67, -67, -67, -67, - -67, -67, -67, -67, -67, -67, -67, -67, -67, -139, - -190, 63, -190, -66, -66, -126, -37, 21, 34, -36, - -200, 57, -200, -2, -36, -36, -41, -41, -82, 63, - -36, -82, 63, -36, -36, -31, 21, 34, -83, -84, - 82, -82, -126, -132, -200, -67, -126, -126, -36, -37, - -37, -36, -36, -97, 157, -56, 30, 57, -52, -54, - -53, -55, 44, 48, 50, 45, 46, 47, 51, -136, - 22, -43, -199, -135, 157, -134, 22, -132, 63, -97, - 55, -43, -56, -43, -58, -132, 103, -104, -106, 57, - 238, 240, 241, 54, 75, -41, -155, 111, -175, -176, - -177, -127, 63, 64, -164, -165, -166, -178, 143, -183, - 134, 136, 133, -167, 144, 128, 28, 58, -160, 72, - 78, -156, 219, -150, 56, -150, -150, -150, -150, -154, - 194, -154, -154, -154, 56, 56, -150, -150, -150, -158, - 56, -158, -158, -159, 56, -159, -130, 55, -56, -138, - 23, -138, -120, 124, 121, 122, -186, 120, 216, 194, - 70, 29, 15, 256, 157, 271, -190, 158, -56, -56, - -56, -56, -56, 124, 121, -56, -56, -56, -138, -56, - -56, -116, -132, -132, 63, -56, 39, -41, -41, -133, - -91, -94, -108, 19, 11, 35, 35, -61, 12, -38, - -43, -40, 72, 73, 74, 116, -199, -75, -67, -67, - -67, -35, 152, 77, -200, -200, -36, -36, -41, -200, - -200, -200, 57, 55, 22, 11, 11, -200, 11, 11, - -200, -200, -36, -86, -84, 84, -41, -200, 116, -200, - 57, 57, -200, -200, -200, -200, -200, -65, 30, 35, - -2, -199, -199, -100, -103, -82, -44, -45, -45, -44, - -45, 44, 44, 44, 49, 44, 49, 44, -53, -132, - -200, -60, 52, 131, 53, -199, -134, -61, -43, -61, - -61, 116, -105, -107, 242, 239, 245, -190, 63, 57, - -177, 86, 56, -190, 28, -167, -167, -170, -190, -170, - 28, -152, 29, 72, -157, 220, 64, -154, -154, -155, - 30, -155, -155, -155, -163, 63, -163, 64, 64, 54, - -126, -138, -137, -193, 139, 135, 143, 144, 137, 59, - 60, 61, 128, 28, 134, 136, 157, 133, -193, -121, - -122, 130, 22, 128, 28, 157, -192, 55, 163, 216, - 163, 130, -138, -112, -112, 40, 116, -56, -87, 13, - -41, 103, -127, -37, -35, 77, -67, -67, -200, -200, - -142, 112, 191, 151, 189, 185, 205, 196, 218, 187, - 219, -139, -142, -67, -67, -67, -67, 265, -89, 85, - -41, 83, -127, -67, -67, -99, 54, -100, -77, -79, - -78, -199, -2, -95, -126, -98, -126, -61, 57, 86, - -48, -47, 54, 55, -49, 54, -47, 44, 44, 128, - 128, 128, -98, -89, -61, 239, 243, 244, -176, -177, - -180, -179, -126, -183, -170, -170, 56, -153, 54, -67, - 58, -155, -155, -190, 112, 58, 57, 58, 57, 58, - 57, -56, -137, -137, -56, -137, -126, -189, 268, -191, - -190, -126, -126, -126, -56, -116, -116, -88, 14, 16, - -200, -67, -200, -150, -150, -150, -159, -150, 179, -150, - 179, -200, -200, 19, 19, 19, 19, -199, -34, 261, - -41, 57, 57, 27, -99, 57, -200, -200, -200, 57, - 116, -200, 57, -89, -103, -41, -41, 56, -41, -199, - -199, -199, -200, -93, 58, 57, -150, -96, -126, -161, - 216, 9, -154, 63, -154, 64, 64, -138, 26, -188, - -187, -127, 56, 55, -41, -76, -154, -190, -67, -67, - -67, -67, -67, -93, 63, -67, -67, 28, -79, 35, - -2, -199, -126, -126, -126, -93, -96, -96, -200, -96, - -96, -135, -182, -181, 55, 138, 70, -179, 58, 57, - -162, 134, 28, 133, -70, -155, -155, 58, 58, -199, - 57, 86, -96, -56, -200, -200, -200, -200, -33, 96, - 268, -200, -200, -200, 9, -77, -2, 116, 58, -200, - -200, -200, -60, -181, -190, -171, 86, 63, 146, -126, - -151, 70, 28, 28, -184, -185, 157, -187, -177, 58, - -200, 266, 51, 269, -100, -200, -126, 64, -56, 63, - -200, 57, -126, -192, 40, 267, 270, 56, -185, 35, - -189, 40, -96, 159, 268, 58, 160, 269, -195, -196, - 54, -199, 270, -196, 54, 10, 9, -67, 156, -194, - 147, 142, 145, 30, -194, -200, -200, 141, 29, 72, + -1000, -199, -1, -2, -7, -8, -9, -10, -11, -12, + -13, -14, -15, -16, -17, -21, -22, -23, -25, -26, + -27, -6, -24, -18, -3, -4, 6, 7, -31, 9, + 10, 30, -19, 119, 120, 122, 121, 155, 123, 148, + 52, 169, 170, 172, 173, 150, 25, 149, 153, 154, + 31, 32, 125, -201, 8, 255, 56, -200, 356, -91, + 15, -30, 5, -28, -204, -28, -28, -28, -28, -28, + -174, -176, 56, 94, -125, 129, 76, 247, 126, 127, + 133, -128, -192, -127, 59, 60, 61, 265, 141, 297, + 298, 169, 180, 174, 201, 193, 266, 299, 142, 191, + 194, 234, 139, 300, 221, 228, 70, 172, 243, 301, + 151, 189, 185, 302, 274, 183, 27, 303, 230, 206, + 304, 270, 232, 184, 229, 125, 305, 144, 137, 306, + 207, 211, 307, 235, 308, 309, 310, 178, 179, 311, + 140, 237, 205, 138, 33, 267, 36, 159, 238, 209, + 312, 204, 200, 313, 314, 315, 316, 203, 177, 199, + 40, 213, 212, 214, 233, 196, 317, 318, 319, 145, + 320, 186, 18, 321, 322, 323, 324, 325, 241, 154, + 326, 157, 327, 328, 329, 330, 331, 332, 231, 208, + 210, 134, 161, 269, 333, 239, 182, 334, 146, 158, + 153, 242, 147, 335, 336, 337, 338, 339, 340, 341, + 173, 342, 343, 344, 345, 168, 236, 245, 39, 218, + 346, 176, 136, 347, 170, 165, 223, 197, 160, 348, + 349, 187, 188, 202, 175, 198, 171, 162, 155, 350, + 244, 219, 271, 195, 192, 166, 351, 163, 164, 352, + 224, 225, 167, 268, 240, 190, 220, -111, 129, 247, + 126, 225, 131, 127, 127, 128, 129, 247, 126, 127, + -58, -134, -192, -127, 129, 127, 112, 194, 234, 119, + 222, 230, -117, 231, 161, -143, 127, -113, 221, 224, + 225, 167, -192, 232, 236, 235, 226, -134, 171, -32, + -139, 353, -139, -139, -139, -139, 223, 223, -139, -2, + -95, 17, 16, -5, -3, -201, 6, 20, 21, -34, + -41, 41, 42, -42, 21, 34, 45, 43, -29, -40, + 103, -43, -134, -64, 78, -69, 29, -192, -127, 23, + -68, -65, -84, -82, -83, 112, 113, 114, 101, 102, + 109, 79, 115, -73, -71, -72, -74, 63, 62, 71, + 64, 65, 66, 67, 72, 73, 74, -128, -80, -201, + 46, 47, 256, 257, 258, 259, 264, 260, 81, 35, + 246, 254, 253, 252, 250, 251, 248, 249, 262, 263, + 132, 247, 126, 107, 255, -111, -111, 11, -52, -53, + -58, -60, -134, -103, -142, 171, -106, 236, 235, -129, + -104, -128, -126, 234, 194, 233, 124, 272, 77, 22, + 24, 216, 80, 112, 16, 81, 111, 256, 119, 50, + 273, 248, 249, 246, 258, 259, 247, 222, 29, 10, + 275, 25, 149, 21, 34, 105, 121, 84, 85, 152, + 23, 150, 74, 278, 19, 53, 11, 13, 279, 280, + 14, 132, 131, 96, 128, 48, 8, 115, 26, 93, + 44, 281, 28, 282, 283, 284, 285, 46, 94, 17, + 250, 251, 31, 286, 264, 156, 107, 51, 37, 78, + 287, 288, 72, 289, 75, 54, 76, 15, 49, 290, + 291, 292, 293, 95, 122, 255, 47, 294, 126, 6, + 261, 30, 148, 45, 295, 127, 83, 262, 263, 130, + 73, 5, 133, 32, 9, 52, 55, 252, 253, 254, + 35, 82, 12, 296, -175, 94, -166, -192, -58, 128, + -58, 255, -121, 132, -121, -121, 127, -58, -192, -192, + 119, 121, 124, 54, -20, -58, -120, 132, -192, -120, + -120, -120, -58, 116, -58, -192, 30, -118, 94, 12, + 247, -192, 161, 127, 162, 129, -140, -201, -129, -170, + 128, 33, 140, -140, 165, 166, -140, -116, -115, 228, + 229, 223, 227, 12, 166, 223, 164, -140, -2, -9, + -8, -10, 86, -139, -139, -202, 58, -96, 19, 31, + -43, -134, -92, -93, -43, -91, -2, -28, 37, -38, + -40, -42, 41, 42, 69, 11, -131, 77, 76, 93, + -130, 22, -128, 63, 116, -43, -66, 96, 78, 94, + 95, 80, 98, 97, 108, 101, 102, 103, 104, 105, + 106, 107, 99, 100, 111, 86, 87, 88, 89, 90, + 91, 92, -112, -201, -83, -201, 117, 118, -69, -69, + -69, -69, -69, -69, -69, -69, -201, -2, -78, -43, + -201, -201, -201, -201, -201, -201, -201, -201, -201, -87, + -43, -201, -205, -75, -201, -205, -75, -205, -75, -205, + -201, -205, -75, -205, -75, -205, -205, -75, -201, -201, + -201, -201, -201, -201, -201, -59, 26, -58, -45, -46, + -47, -48, -61, -83, -201, -58, -58, -52, -203, 57, + 11, 55, -203, 57, 116, 57, 171, -106, -108, -107, + 237, 239, 86, -133, -128, 63, 29, 30, 58, 57, + -58, -145, -148, -150, -149, -151, -146, -147, 191, 192, + 112, 195, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 30, 151, 187, 188, 189, 190, 207, 208, + 209, 210, 211, 212, 213, 214, 174, 193, 266, 175, + 176, 177, 178, 179, 180, 182, 183, 184, 185, 186, + -192, -140, 129, -192, 78, -192, -58, -58, -140, -140, + -140, 163, 163, 127, 127, 168, -58, 57, 130, -52, + 23, 54, -58, -192, -192, -135, -134, -126, -140, -118, + 63, -43, -140, -140, -140, -58, -140, -140, -171, 11, + 96, -140, -140, 11, -114, 11, 96, -43, -119, 94, + 54, 205, 354, 355, 9, 96, 57, 18, 116, 57, + -94, 24, 25, -95, -202, -70, -128, 64, 67, -44, + 57, 11, -42, -58, -43, -43, -76, 72, 78, 73, + 74, -130, 103, -135, -129, -126, -69, -77, -80, -83, + 68, 96, 94, 95, 80, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -141, -192, 63, -192, -68, -68, -128, -39, 21, 34, + -38, -202, 57, -202, -2, -38, -38, -43, -43, -84, + 63, -38, -84, 63, -38, -38, -33, 21, 34, -85, + -86, 82, -84, -128, -134, -202, -69, -128, -128, -38, + -39, -39, -38, -38, -99, 157, -58, 30, 57, -54, + -56, -55, -57, 44, 48, 50, 45, 46, 47, 51, + -138, 22, -45, -201, -137, 157, -136, 22, -134, 63, + -99, 55, -45, -58, -45, -60, -134, 103, -106, -108, + 57, 238, 240, 241, 54, 75, -43, -157, 111, -177, + -178, -179, -129, 63, 64, -166, -167, -168, -180, 143, + -185, 134, 136, 133, -169, 144, 128, 28, 58, -162, + 72, 78, -158, 219, -152, 56, -152, -152, -152, -152, + -156, 194, -156, -156, -156, 56, 56, -152, -152, -152, + -160, 56, -160, -160, -161, 56, -161, -132, 55, -58, + -140, 23, -140, -122, 124, 121, 122, -188, 120, 216, + 194, 70, 29, 15, 256, 157, 271, -192, 158, -58, + -58, -58, -58, -58, 124, 121, -58, -58, -58, -140, + -58, -58, -118, -134, -134, 63, -58, 39, -43, -43, + -135, -93, -96, -110, 19, 11, 35, 35, -63, 12, + -40, -45, -42, 72, 73, 74, 116, -201, -77, -69, + -69, -69, -37, 152, 77, -202, -202, -38, -38, -43, + -202, -202, -202, 57, 55, 22, 11, 11, -202, 11, + 11, -202, -202, -38, -88, -86, 84, -43, -202, 116, + -202, 57, 57, -202, -202, -202, -202, -202, -67, 30, + 35, -2, -201, -201, -102, -105, -84, -46, -47, -47, + -46, -47, 44, 44, 44, 49, 44, 49, 44, -55, + -134, -202, -62, 52, 131, 53, -201, -136, -63, -45, + -63, -63, 116, -107, -109, 242, 239, 245, -192, 63, + 57, -179, 86, 56, -192, 28, -169, -169, -172, -192, + -172, 28, -154, 29, 72, -159, 220, 64, -156, -156, + -157, 30, -157, -157, -157, -165, 63, -165, 64, 64, + 54, -128, -140, -139, -195, 139, 135, 143, 144, 137, + 59, 60, 61, 128, 28, 134, 136, 157, 133, -195, + -123, -124, 130, 22, 128, 28, 157, -194, 55, 163, + 216, 163, 130, -140, -114, -114, 40, 116, -58, -89, + 13, -43, 103, -129, -39, -37, 77, -69, -69, -202, + -202, -144, 112, 191, 151, 189, 185, 205, 196, 218, + 187, 219, -141, -144, -69, -69, -69, -69, 265, -91, + 85, -43, 83, -129, -69, -69, -101, 54, -102, -79, + -81, -80, -201, -2, -97, -128, -100, -128, -63, 57, + 86, -50, -49, 54, 55, -51, 54, -49, 44, 44, + 128, 128, 128, -100, -91, -63, 239, 243, 244, -178, + -179, -182, -181, -128, -185, -172, -172, 56, -155, 54, + -69, 58, -157, -157, -192, 112, 58, 57, 58, 57, + 58, 57, -58, -139, -139, -58, -139, -128, -191, 268, + -193, -192, -128, -128, -128, -58, -118, -118, -90, 14, + 16, -202, -69, -202, -152, -152, -152, -161, -152, 179, + -152, 179, -202, -202, 19, 19, 19, 19, -201, -36, + 261, -43, 57, 57, 27, -101, 57, -202, -202, -202, + 57, 116, -202, 57, -91, -105, -43, -43, 56, -43, + -201, -201, -201, -202, -95, 58, 57, -152, -98, -128, + -163, 216, 9, -156, 63, -156, 64, 64, -140, 26, + -190, -189, -129, 56, 55, -43, -78, -156, -192, -69, + -69, -69, -69, -69, -95, 63, -69, -69, 28, -81, + 35, -2, -201, -128, -128, -128, -95, -98, -98, -202, + -98, -98, -137, -184, -183, 55, 138, 70, -181, 58, + 57, -164, 134, 28, 133, -72, -157, -157, 58, 58, + -201, 57, 86, -98, -58, -202, -202, -202, -202, -35, + 96, 268, -202, -202, -202, 9, -79, -2, 116, 58, + -202, -202, -202, -62, -183, -192, -173, 86, 63, 146, + -128, -153, 70, 28, 28, -186, -187, 157, -189, -179, + 58, -202, 266, 51, 269, -102, -202, -128, 64, -58, + 63, -202, 57, -128, -194, 40, 267, 270, 56, -187, + 35, -191, 40, -98, 159, 268, 58, 160, 269, -197, + -198, 54, -201, 270, -198, 54, 10, 9, -69, 156, + -196, 147, 142, 145, 30, -196, -202, -202, 141, 29, + 72, } var yyDef = [...]int{ - 24, -2, 2, -2, 5, 6, 7, 8, 9, 10, + 25, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 586, 0, 330, 330, 330, 330, 330, - 330, 0, 658, 641, 0, 0, 0, 0, -2, 317, - 318, 0, 320, 321, 962, 962, 962, 962, 962, 0, - 0, 962, 0, 39, 40, 960, 1, 3, 594, 0, - 0, 334, -2, 332, 0, 641, 641, 0, 0, 68, - 69, 0, 0, 0, 949, 0, 639, 639, 639, 659, - 660, 663, 664, 25, 26, 27, 789, 790, 791, 792, - 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, - 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, - 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, - 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, - 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, - 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, - 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, - 943, 944, 945, 946, 947, 948, 950, 951, 952, 953, - 954, 955, 956, 957, 958, 959, 0, 0, 0, 0, - 0, 642, 0, 637, 0, 637, 637, 637, 0, 268, - 412, 667, 668, 949, 0, 0, 0, 308, 0, 963, - 280, 0, 282, 963, 0, 963, 0, 289, 0, 0, - 295, 963, 300, 314, 315, 302, 316, 319, 322, 323, - 324, 325, 326, 962, 962, 329, 33, 598, 0, 0, - 586, 35, 0, 330, 335, 336, 0, 0, -2, -2, - 346, 352, 353, 354, 355, 331, 0, 358, 362, 0, - 422, 0, 427, 429, -2, -2, 0, 464, 465, 466, - 467, 468, 0, 0, 0, 0, 0, 0, 0, 0, - 492, 493, 494, 495, 571, 572, 573, 574, 575, 576, - 577, 578, 431, 432, 568, 618, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 559, 0, 529, 529, 529, - 529, 529, 529, 529, 529, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 48, 50, 412, - 54, 0, 938, 622, -2, -2, 0, 0, 665, 666, - -2, 802, -2, 671, 672, 673, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, - 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, - 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, - 788, 0, 0, 87, 0, 85, 0, 963, 0, 0, - 0, 0, 0, 0, 963, 963, 963, 0, 0, 0, - 0, 259, 0, 0, 0, 0, 0, 0, 0, 267, - 0, 269, 963, 308, 272, 0, 0, 963, 963, 963, - 0, 963, 963, 279, 964, 965, 0, 189, 190, 191, - 283, 963, 963, 285, 0, 305, 303, 304, 297, 298, - 0, 311, 292, 293, 296, 327, 328, 34, 961, 28, - 0, 0, 595, 0, 587, 588, 591, 594, 33, 345, - 0, 367, 356, 347, 350, 351, 333, 0, 359, 0, - 0, 0, 363, 0, 365, 366, 0, 425, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 449, 450, 451, - 452, 453, 454, 455, 428, 0, 442, 0, 0, 0, - 484, 485, 486, 487, 488, 489, 490, 0, 343, 33, - 0, 462, 0, 0, 0, 0, 0, 0, 0, 0, - 340, 0, 560, 0, 513, 521, 0, 514, 522, 515, - 523, 516, 0, 517, 524, 518, 525, 519, 520, 526, - 0, 0, 0, 343, 343, 0, 0, 52, 0, 411, - 0, 369, 371, 372, 373, -2, 0, 395, -2, 0, - 0, 0, 46, 47, 0, 0, 0, 0, 938, 623, - 56, 57, 0, 0, 0, 165, 632, 633, 634, 630, - 214, 0, 0, 153, 149, 93, 94, 95, 142, 97, - 142, 142, 142, 142, 162, 162, 162, 162, 125, 126, - 127, 128, 129, 0, 0, 112, 142, 142, 142, 116, - 132, 133, 134, 135, 136, 137, 138, 139, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 144, 144, 144, - 146, 146, 661, 71, 0, 963, 0, 963, 83, 0, - 228, 230, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 262, 638, 0, 963, 265, 266, 413, 669, 670, - 270, 271, 309, 310, 273, 274, 275, 276, 277, 278, - 0, 192, 193, 284, 288, 0, 308, 0, 0, 290, - 291, 0, 0, 599, 0, 0, 0, 0, 0, 590, - 592, 593, 598, 36, 0, 579, 0, 0, 420, 0, - 0, 348, 31, 423, 424, 426, 443, 0, 445, 447, - 364, 360, 0, 569, -2, 433, 434, 458, 459, 460, - 0, 0, 0, 0, 456, 438, 0, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 483, - 544, 545, 0, 481, 482, 491, 0, 0, 0, 344, - 461, 0, 617, 33, 0, 0, 0, 0, 466, 571, - 0, 466, 571, 0, 0, 0, 341, 342, 566, 563, - 0, 0, 568, 0, 530, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 410, 0, 0, 0, 0, - 0, 0, 400, 0, 0, 403, 0, 0, 0, 0, - 394, 0, 0, 415, 883, 396, 0, 398, 399, 420, - 0, 420, 49, 420, 51, 0, 414, 624, 55, 0, - 0, 60, 61, 625, 626, 627, 628, 0, 84, 215, - 217, 220, 221, 222, 88, 89, 90, 0, 0, 202, - 0, 0, 196, 196, 0, 194, 195, 86, 156, 154, - 0, 151, 150, 96, 0, 162, 162, 119, 120, 165, - 0, 165, 165, 165, 0, 0, 113, 114, 115, 107, - 0, 108, 109, 110, 0, 111, 0, 0, 963, 73, - 640, 74, 962, 0, 0, 653, 229, 643, 644, 645, - 646, 647, 648, 649, 650, 651, 652, 0, 75, 233, - 235, 234, 238, 0, 0, 0, 260, 963, 264, 305, - 305, 287, 306, 307, 312, 294, 0, 596, 597, 0, - 589, 29, 0, 635, 636, 580, 581, 582, 0, 357, - 368, 349, 444, 446, 448, 0, 343, 435, 456, 439, - 0, 436, 0, 0, 430, 496, 0, 0, 463, -2, - 500, 501, 0, 0, 0, 0, 0, 537, 0, 0, - 538, 0, 586, 0, 564, 0, 0, 512, 0, 531, - 0, 0, 532, 533, 534, 535, 536, 611, 0, 0, - -2, 0, 0, 420, 619, 0, 370, 389, 391, 0, - 386, 401, 402, 404, 0, 406, 0, 408, 409, 374, - 376, 377, 0, 0, 0, 0, 397, 586, 420, 44, - 45, 0, 58, 59, 0, 0, 65, 166, 167, 0, - 218, 0, 0, 0, 184, 196, 196, 187, 197, 188, - 0, 158, 0, 155, 92, 152, 0, 165, 165, 121, - 0, 122, 123, 124, 0, 140, 0, 0, 0, 0, - 662, 72, 223, 962, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 962, 0, - 962, 654, 655, 656, 657, 0, 78, 0, 0, 0, - 0, 0, 263, 308, 308, 600, 0, 30, 584, 0, - 421, 361, 570, 0, 437, 0, 457, 440, 497, 498, - 0, 142, 142, 549, 142, 146, 552, 142, 554, 142, - 557, 0, 0, 0, 0, 0, 0, 0, 561, 511, - 567, 0, 569, 0, 0, 37, 0, 611, 601, 613, - 615, 0, 33, 0, 607, 0, 381, 586, 0, 0, - 383, 390, 0, 0, 384, 0, 385, 405, 407, 0, - 0, 0, 0, 594, 43, 62, 63, 64, 216, 219, - 0, 198, 142, 201, 185, 186, 0, 160, 0, 157, - 143, 117, 118, 163, 164, 162, 0, 162, 0, 147, - 0, 963, 224, 225, 226, 227, 0, 232, 0, 76, - 77, 0, 0, 237, 261, 281, 286, 32, 0, 0, - 499, 441, 502, 546, 162, 550, 551, 553, 555, 556, - 558, 504, 503, 0, 0, 0, 0, 0, 594, 0, - 565, 0, 0, 0, 38, 0, 616, -2, 0, 0, - 0, 53, 0, 594, 620, 621, 387, 0, 392, 0, - 0, 0, 395, 42, 176, 0, 200, 0, 379, 168, - 161, 0, 165, 141, 165, 0, 0, 70, 0, 79, - 80, 0, 0, 0, 585, 583, 547, 548, 0, 0, - 0, 0, 539, 0, 562, 0, 0, 0, 614, 0, - -2, 0, 609, 608, 382, 41, 0, 0, 417, 0, - 0, 415, 175, 177, 0, 182, 0, 199, 0, 0, - 173, 0, 170, 172, 159, 130, 131, 145, 148, 0, - 0, 0, 0, 239, 505, 507, 506, 508, 0, 0, - 0, 510, 527, 528, 0, 604, 33, 0, 388, 416, - 418, 419, 378, 178, 179, 0, 183, 181, 0, 380, - 91, 0, 169, 171, 0, 255, 0, 81, 82, 75, - 509, 0, 0, 0, 612, -2, 610, 180, 0, 174, - 254, 0, 0, 78, 540, 0, 543, 0, 256, 0, - 236, 541, 0, 0, 0, 203, 0, 0, 204, 205, - 0, 0, 542, 206, 0, 0, 0, 0, 0, 207, - 209, 210, 0, 0, 208, 257, 258, 211, 212, 213, + 21, 22, 23, 24, 595, 0, 339, 339, 339, 339, + 339, 339, 0, 667, 650, 0, 0, 0, 0, -2, + 318, 319, 0, 321, 322, -2, 971, 971, 971, 971, + 0, 0, 971, 0, 40, 41, 969, 1, 3, 603, + 0, 0, 343, -2, 341, 0, 650, 650, 0, 0, + 69, 70, 0, 0, 0, 958, 0, 648, 648, 648, + 668, 669, 672, 673, 26, 27, 28, 798, 799, 800, + 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, + 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, + 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, + 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, + 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, + 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, + 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, + 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, + 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, + 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, + 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, + 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, + 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, + 951, 952, 953, 954, 955, 956, 957, 959, 960, 961, + 962, 963, 964, 965, 966, 967, 968, 0, 0, 0, + 0, 0, 651, 0, 646, 0, 646, 646, 646, 0, + 269, 421, 676, 677, 958, 0, 0, 0, 309, 0, + 972, 281, 0, 283, 972, 0, 972, 0, 290, 0, + 0, 296, 972, 301, 315, 316, 303, 317, 320, 0, + 333, 0, 331, 332, 334, 335, 971, 971, 338, 34, + 607, 0, 0, 595, 36, 0, 339, 344, 345, 0, + 0, -2, -2, 355, 361, 362, 363, 364, 340, 0, + 367, 371, 0, 431, 0, 436, 438, -2, -2, 0, + 473, 474, 475, 476, 477, 0, 0, 0, 0, 0, + 0, 0, 0, 501, 502, 503, 504, 580, 581, 582, + 583, 584, 585, 586, 587, 440, 441, 577, 627, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 568, 0, + 538, 538, 538, 538, 538, 538, 538, 538, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 51, 421, 55, 0, 947, 631, -2, -2, 0, + 0, 674, 675, -2, 811, -2, 680, 681, 682, 683, + 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, + 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, + 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, + 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, + 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, + 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, + 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, + 794, 795, 796, 797, 0, 0, 88, 0, 86, 0, + 972, 0, 0, 0, 0, 0, 0, 972, 972, 972, + 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, + 0, 0, 268, 0, 270, 972, 309, 273, 0, 0, + 972, 972, 972, 0, 972, 972, 280, 973, 974, 0, + 190, 191, 192, 284, 972, 972, 286, 0, 306, 304, + 305, 298, 299, 0, 312, 293, 294, 297, -2, 328, + 329, 330, 0, 336, 337, 35, 970, 29, 0, 0, + 604, 0, 596, 597, 600, 603, 34, 354, 0, 376, + 365, 356, 359, 360, 342, 0, 368, 0, 0, 0, + 372, 0, 374, 375, 0, 434, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 458, 459, 460, 461, 462, + 463, 464, 437, 0, 451, 0, 0, 0, 493, 494, + 495, 496, 497, 498, 499, 0, 352, 34, 0, 471, + 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, + 569, 0, 522, 530, 0, 523, 531, 524, 532, 525, + 0, 526, 533, 527, 534, 528, 529, 535, 0, 0, + 0, 352, 352, 0, 0, 53, 0, 420, 0, 378, + 380, 381, 382, -2, 0, 404, -2, 0, 0, 0, + 47, 48, 0, 0, 0, 0, 947, 632, 57, 58, + 0, 0, 0, 166, 641, 642, 643, 639, 215, 0, + 0, 154, 150, 94, 95, 96, 143, 98, 143, 143, + 143, 143, 163, 163, 163, 163, 126, 127, 128, 129, + 130, 0, 0, 113, 143, 143, 143, 117, 133, 134, + 135, 136, 137, 138, 139, 140, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 145, 145, 145, 147, 147, + 670, 72, 0, 972, 0, 972, 84, 0, 229, 231, + 232, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 647, 0, 972, 266, 267, 422, 678, 679, 271, 272, + 310, 311, 274, 275, 276, 277, 278, 279, 0, 193, + 194, 285, 289, 0, 309, 0, 0, 291, 292, 0, + 0, 324, 325, 326, 608, 0, 0, 0, 0, 0, + 599, 601, 602, 607, 37, 0, 588, 0, 0, 429, + 0, 0, 357, 32, 432, 433, 435, 452, 0, 454, + 456, 373, 369, 0, 578, -2, 442, 443, 467, 468, + 469, 0, 0, 0, 0, 465, 447, 0, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 492, 553, 554, 0, 490, 491, 500, 0, 0, 0, + 353, 470, 0, 626, 34, 0, 0, 0, 0, 475, + 580, 0, 475, 580, 0, 0, 0, 350, 351, 575, + 572, 0, 0, 577, 0, 539, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 419, 0, 0, 0, + 0, 0, 0, 409, 0, 0, 412, 0, 0, 0, + 0, 403, 0, 0, 424, 892, 405, 0, 407, 408, + 429, 0, 429, 50, 429, 52, 0, 423, 633, 56, + 0, 0, 61, 62, 634, 635, 636, 637, 0, 85, + 216, 218, 221, 222, 223, 89, 90, 91, 0, 0, + 203, 0, 0, 197, 197, 0, 195, 196, 87, 157, + 155, 0, 152, 151, 97, 0, 163, 163, 120, 121, + 166, 0, 166, 166, 166, 0, 0, 114, 115, 116, + 108, 0, 109, 110, 111, 0, 112, 0, 0, 972, + 74, 649, 75, 971, 0, 0, 662, 230, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 0, 76, + 234, 236, 235, 239, 0, 0, 0, 261, 972, 265, + 306, 306, 288, 307, 308, 313, 295, 0, 605, 606, + 0, 598, 30, 0, 644, 645, 589, 590, 591, 0, + 366, 377, 358, 453, 455, 457, 0, 352, 444, 465, + 448, 0, 445, 0, 0, 439, 505, 0, 0, 472, + -2, 509, 510, 0, 0, 0, 0, 0, 546, 0, + 0, 547, 0, 595, 0, 573, 0, 0, 521, 0, + 540, 0, 0, 541, 542, 543, 544, 545, 620, 0, + 0, -2, 0, 0, 429, 628, 0, 379, 398, 400, + 0, 395, 410, 411, 413, 0, 415, 0, 417, 418, + 383, 385, 386, 0, 0, 0, 0, 406, 595, 429, + 45, 46, 0, 59, 60, 0, 0, 66, 167, 168, + 0, 219, 0, 0, 0, 185, 197, 197, 188, 198, + 189, 0, 159, 0, 156, 93, 153, 0, 166, 166, + 122, 0, 123, 124, 125, 0, 141, 0, 0, 0, + 0, 671, 73, 224, 971, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 971, + 0, 971, 663, 664, 665, 666, 0, 79, 0, 0, + 0, 0, 0, 264, 309, 309, 609, 0, 31, 593, + 0, 430, 370, 579, 0, 446, 0, 466, 449, 506, + 507, 0, 143, 143, 558, 143, 147, 561, 143, 563, + 143, 566, 0, 0, 0, 0, 0, 0, 0, 570, + 520, 576, 0, 578, 0, 0, 38, 0, 620, 610, + 622, 624, 0, 34, 0, 616, 0, 390, 595, 0, + 0, 392, 399, 0, 0, 393, 0, 394, 414, 416, + 0, 0, 0, 0, 603, 44, 63, 64, 65, 217, + 220, 0, 199, 143, 202, 186, 187, 0, 161, 0, + 158, 144, 118, 119, 164, 165, 163, 0, 163, 0, + 148, 0, 972, 225, 226, 227, 228, 0, 233, 0, + 77, 78, 0, 0, 238, 262, 282, 287, 33, 0, + 0, 508, 450, 511, 555, 163, 559, 560, 562, 564, + 565, 567, 513, 512, 0, 0, 0, 0, 0, 603, + 0, 574, 0, 0, 0, 39, 0, 625, -2, 0, + 0, 0, 54, 0, 603, 629, 630, 396, 0, 401, + 0, 0, 0, 404, 43, 177, 0, 201, 0, 388, + 169, 162, 0, 166, 142, 166, 0, 0, 71, 0, + 80, 81, 0, 0, 0, 594, 592, 556, 557, 0, + 0, 0, 0, 548, 0, 571, 0, 0, 0, 623, + 0, -2, 0, 618, 617, 391, 42, 0, 0, 426, + 0, 0, 424, 176, 178, 0, 183, 0, 200, 0, + 0, 174, 0, 171, 173, 160, 131, 132, 146, 149, + 0, 0, 0, 0, 240, 514, 516, 515, 517, 0, + 0, 0, 519, 536, 537, 0, 613, 34, 0, 397, + 425, 427, 428, 387, 179, 180, 0, 184, 182, 0, + 389, 92, 0, 170, 172, 0, 256, 0, 82, 83, + 76, 518, 0, 0, 0, 621, -2, 619, 181, 0, + 175, 255, 0, 0, 79, 549, 0, 552, 0, 257, + 0, 237, 550, 0, 0, 0, 204, 0, 0, 205, + 206, 0, 0, 551, 207, 0, 0, 0, 0, 0, + 208, 210, 211, 0, 0, 209, 258, 259, 212, 213, + 214, } var yyTok1 = [...]int{ @@ -3245,7 +3268,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 79, 3, 3, 3, 106, 98, 3, 56, 58, 103, 101, 57, 102, 116, 104, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 353, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 356, 87, 86, 88, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -3299,7 +3322,8 @@ var yyTok3 = [...]int{ 57660, 335, 57661, 336, 57662, 337, 57663, 338, 57664, 339, 57665, 340, 57666, 341, 57667, 342, 57668, 343, 57669, 344, 57670, 345, 57671, 346, 57672, 347, 57673, 348, 57674, 349, - 57675, 350, 57676, 351, 57677, 352, 0, + 57675, 350, 57676, 351, 57677, 352, 57678, 353, 57679, 354, + 57680, 355, 0, } var yyErrorMessages = [...]struct { @@ -3641,53 +3665,53 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:331 +//line sql.y:335 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:336 +//line sql.y:340 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:337 +//line sql.y:341 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:341 +//line sql.y:345 { yyVAL.statement = yyDollar[1].selStmt } - case 24: + case 25: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:364 +//line sql.y:369 { setParseTree(yylex, nil) } - case 25: + case 26: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:370 +//line sql.y:375 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), NoAt) } - case 26: + case 27: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:374 +//line sql.y:379 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), SingleAt) } - case 27: + case 28: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:378 +//line sql.y:383 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), DoubleAt) } - case 28: + case 29: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:384 +//line sql.y:389 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -3695,57 +3719,57 @@ yydefault: sel.Lock = yyDollar[4].str yyVAL.selStmt = sel } - case 29: + case 30: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:392 +//line sql.y:397 { yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str} } - case 30: + case 31: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:396 +//line sql.y:401 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), SelectExprs{Nextval{Expr: yyDollar[5].expr}}, []string{yyDollar[3].str} /*options*/, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/) } - case 31: + case 32: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:402 +//line sql.y:407 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } - case 32: + case 33: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:410 +//line sql.y:415 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), yyDollar[4].selectExprs /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].tableExprs /*from*/, NewWhere(WhereStr, yyDollar[6].expr), GroupBy(yyDollar[7].exprs), NewWhere(HavingStr, yyDollar[8].expr)) } - case 33: + case 34: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:416 +//line sql.y:421 { yyVAL.selStmt = yyDollar[1].selStmt } - case 34: + case 35: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:420 +//line sql.y:425 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } - case 35: + case 36: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:426 +//line sql.y:431 { yyVAL.selStmt = yyDollar[1].selStmt } - case 36: + case 37: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:430 +//line sql.y:435 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } - case 37: + case 38: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:437 +//line sql.y:442 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -3757,9 +3781,9 @@ yydefault: ins.OnDup = OnDup(yyDollar[7].updateExprs) yyVAL.statement = ins } - case 38: + case 39: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:449 +//line sql.y:454 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -3769,328 +3793,328 @@ yydefault: } yyVAL.statement = &Insert{Action: yyDollar[1].str, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[4].tableName, Partitions: yyDollar[5].partitions, Columns: cols, Rows: Values{vals}, OnDup: OnDup(yyDollar[8].updateExprs)} } - case 39: + case 40: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:461 +//line sql.y:466 { yyVAL.str = InsertStr } - case 40: + case 41: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:465 +//line sql.y:470 { yyVAL.str = ReplaceStr } - case 41: + case 42: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:471 +//line sql.y:476 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, TableExprs: yyDollar[4].tableExprs, Exprs: yyDollar[6].updateExprs, Where: NewWhere(WhereStr, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit} } - case 42: + case 43: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:477 +//line sql.y:482 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } - case 43: + case 44: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:481 +//line sql.y:486 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} } - case 44: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:485 - { - yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} - } case 45: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:489 +//line sql.y:490 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 46: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:494 { + yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 47: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:495 +//line sql.y:499 { } case 48: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:499 +//line sql.y:500 { - yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 49: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:504 + { + yyVAL.tableNames = TableNames{yyDollar[1].tableName} + } + case 50: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:503 +//line sql.y:508 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } - case 50: + case 51: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:509 +//line sql.y:514 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } - case 51: + case 52: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:513 +//line sql.y:518 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } - case 52: + case 53: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:518 +//line sql.y:523 { yyVAL.partitions = nil } - case 53: + case 54: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:522 +//line sql.y:527 { yyVAL.partitions = yyDollar[3].partitions } - case 54: + case 55: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:528 +//line sql.y:533 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } - case 55: + case 56: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:534 +//line sql.y:539 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Characteristics: yyDollar[5].characteristics} } - case 56: + case 57: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:538 +//line sql.y:543 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Characteristics: yyDollar[4].characteristics} } - case 57: + case 58: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:544 +//line sql.y:549 { yyVAL.characteristics = []Characteristic{yyDollar[1].characteristic} } - case 58: + case 59: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:548 +//line sql.y:553 { yyVAL.characteristics = append(yyVAL.characteristics, yyDollar[3].characteristic) } - case 59: + case 60: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:554 +//line sql.y:559 { yyVAL.characteristic = &IsolationLevel{Level: string(yyDollar[3].str)} } - case 60: + case 61: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:558 +//line sql.y:563 { yyVAL.characteristic = &AccessMode{Mode: TxReadWrite} } - case 61: + case 62: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:562 +//line sql.y:567 { yyVAL.characteristic = &AccessMode{Mode: TxReadOnly} } - case 62: + case 63: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:568 +//line sql.y:573 { yyVAL.str = RepeatableRead } - case 63: + case 64: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:572 +//line sql.y:577 { yyVAL.str = ReadCommitted } - case 64: + case 65: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:576 +//line sql.y:581 { yyVAL.str = ReadUncommitted } - case 65: + case 66: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:580 +//line sql.y:585 { yyVAL.str = Serializable } - case 66: + case 67: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:586 +//line sql.y:591 { yyVAL.str = SessionStr } - case 67: + case 68: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:590 +//line sql.y:595 { yyVAL.str = GlobalStr } - case 68: + case 69: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:596 +//line sql.y:601 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } - case 69: + case 70: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:601 +//line sql.y:606 { // Create table [name] like [name] yyDollar[1].ddl.OptLike = yyDollar[2].optLike yyVAL.statement = yyDollar[1].ddl } - case 70: + case 71: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:607 +//line sql.y:612 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName} } - case 71: + case 72: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:612 +//line sql.y:617 { yyVAL.statement = &DDL{Action: CreateStr, Table: yyDollar[3].tableName.ToViewName()} } - case 72: + case 73: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:616 +//line sql.y:621 { yyVAL.statement = &DDL{Action: CreateStr, Table: yyDollar[5].tableName.ToViewName()} } - case 73: + case 74: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:620 +//line sql.y:625 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].colIdent.String())} } - case 74: + case 75: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:624 +//line sql.y:629 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].colIdent.String())} } - case 75: + case 76: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:629 +//line sql.y:634 { yyVAL.colIdent = NewColIdent("") } - case 76: + case 77: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:633 +//line sql.y:638 { yyVAL.colIdent = yyDollar[2].colIdent } - case 77: + case 78: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:639 +//line sql.y:644 { yyVAL.colIdent = yyDollar[1].colIdent } - case 78: + case 79: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:644 +//line sql.y:649 { var v []VindexParam yyVAL.vindexParams = v } - case 79: + case 80: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:649 +//line sql.y:654 { yyVAL.vindexParams = yyDollar[2].vindexParams } - case 80: + case 81: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:655 +//line sql.y:660 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } - case 81: + case 82: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:660 +//line sql.y:665 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } - case 82: + case 83: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:666 +//line sql.y:671 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } - case 83: + case 84: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:672 +//line sql.y:677 { yyVAL.ddl = &DDL{Action: CreateStr, Table: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } - case 84: + case 85: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:679 +//line sql.y:684 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } - case 85: + case 86: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:686 +//line sql.y:691 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} } - case 86: + case 87: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:690 +//line sql.y:695 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} } - case 87: + case 88: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:696 +//line sql.y:701 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } - case 88: + case 89: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:701 +//line sql.y:706 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } - case 89: + case 90: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:705 +//line sql.y:710 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } - case 90: + case 91: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:709 +//line sql.y:714 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } - case 91: + case 92: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:715 +//line sql.y:720 { yyDollar[2].columnType.NotNull = yyDollar[3].boolVal yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -4100,92 +4124,84 @@ yydefault: yyDollar[2].columnType.Comment = yyDollar[8].sqlVal yyVAL.columnDefinition = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType} } - case 92: + case 93: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:726 +//line sql.y:731 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolVal yyVAL.columnType.Zerofill = yyDollar[3].boolVal } - case 96: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:737 - { - yyVAL.columnType = yyDollar[1].columnType - yyVAL.columnType.Length = yyDollar[2].sqlVal - } case 97: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:742 { yyVAL.columnType = yyDollar[1].columnType + yyVAL.columnType.Length = yyDollar[2].sqlVal } case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:748 +//line sql.y:747 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = yyDollar[1].columnType } case 99: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:752 +//line sql.y:753 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 100: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:756 +//line sql.y:757 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 101: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:760 +//line sql.y:761 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 102: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:764 +//line sql.y:765 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 103: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:768 +//line sql.y:769 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 104: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:772 +//line sql.y:773 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 105: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:776 +//line sql.y:777 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 106: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:780 +//line sql.y:781 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 107: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:786 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:785 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 108: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:792 +//line sql.y:791 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4193,7 +4209,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:798 +//line sql.y:797 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4201,7 +4217,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:804 +//line sql.y:803 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4209,125 +4225,127 @@ yydefault: } case 111: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:810 +//line sql.y:809 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 112: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:818 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:815 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 113: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:822 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:823 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 114: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:826 +//line sql.y:827 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 115: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:830 +//line sql.y:831 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 116: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:835 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + } + case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:834 +//line sql.y:839 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 117: + case 118: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:840 +//line sql.y:845 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 118: + case 119: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:844 +//line sql.y:849 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 119: + case 120: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:848 +//line sql.y:853 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 120: + case 121: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:852 +//line sql.y:857 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 121: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:856 - { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} - } case 122: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:860 +//line sql.y:861 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 123: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:864 +//line sql.y:865 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 124: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:868 +//line sql.y:869 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 125: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:872 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:873 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 126: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:876 +//line sql.y:877 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 127: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:880 +//line sql.y:881 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 128: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:884 +//line sql.y:885 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 129: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:888 +//line sql.y:889 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 130: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:892 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:893 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 131: yyDollar = yyS[yypt-6 : yypt+1] @@ -4336,620 +4354,626 @@ yydefault: yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 132: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:903 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:902 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 133: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:907 +//line sql.y:908 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 134: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:911 +//line sql.y:912 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 135: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:915 +//line sql.y:916 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 136: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:919 +//line sql.y:920 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 137: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:923 +//line sql.y:924 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 138: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:927 +//line sql.y:928 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 139: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:931 +//line sql.y:932 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:937 +//line sql.y:936 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + } + case 141: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:942 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 141: + case 142: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:942 +//line sql.y:947 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 142: + case 143: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:947 +//line sql.y:952 { yyVAL.sqlVal = nil } - case 143: + case 144: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:951 +//line sql.y:956 { yyVAL.sqlVal = NewIntVal(yyDollar[2].bytes) } - case 144: + case 145: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:956 +//line sql.y:961 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 145: + case 146: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:960 +//line sql.y:965 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 146: + case 147: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:968 +//line sql.y:973 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 147: + case 148: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:972 +//line sql.y:977 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), } } - case 148: + case 149: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:978 +//line sql.y:983 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 149: + case 150: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:986 +//line sql.y:991 { yyVAL.boolVal = BoolVal(false) } - case 150: + case 151: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:990 +//line sql.y:995 { yyVAL.boolVal = BoolVal(true) } - case 151: + case 152: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:995 +//line sql.y:1000 { yyVAL.boolVal = BoolVal(false) } - case 152: + case 153: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:999 +//line sql.y:1004 { yyVAL.boolVal = BoolVal(true) } - case 153: + case 154: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1005 +//line sql.y:1010 { yyVAL.boolVal = BoolVal(false) } - case 154: + case 155: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1009 +//line sql.y:1014 { yyVAL.boolVal = BoolVal(false) } - case 155: + case 156: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1013 +//line sql.y:1018 { yyVAL.boolVal = BoolVal(true) } - case 156: + case 157: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1018 +//line sql.y:1023 { yyVAL.optVal = nil } - case 157: + case 158: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1022 +//line sql.y:1027 { yyVAL.optVal = yyDollar[2].expr } - case 158: + case 159: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1027 +//line sql.y:1032 { yyVAL.optVal = nil } - case 159: + case 160: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1031 +//line sql.y:1036 { yyVAL.optVal = yyDollar[3].expr } - case 160: + case 161: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1036 +//line sql.y:1041 { yyVAL.boolVal = BoolVal(false) } - case 161: + case 162: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1040 +//line sql.y:1045 { yyVAL.boolVal = BoolVal(true) } - case 162: + case 163: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1045 +//line sql.y:1050 { yyVAL.str = "" } - case 163: + case 164: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1049 +//line sql.y:1054 { yyVAL.str = string(yyDollar[3].colIdent.String()) } - case 164: + case 165: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1053 +//line sql.y:1058 { yyVAL.str = string(yyDollar[3].bytes) } - case 165: + case 166: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1058 +//line sql.y:1063 { yyVAL.str = "" } - case 166: + case 167: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1062 +//line sql.y:1067 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 167: + case 168: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1066 +//line sql.y:1071 { yyVAL.str = string(yyDollar[2].bytes) } - case 168: + case 169: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1071 +//line sql.y:1076 { yyVAL.colKeyOpt = colKeyNone } - case 169: + case 170: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1075 +//line sql.y:1080 { yyVAL.colKeyOpt = colKeyPrimary } - case 170: + case 171: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1079 +//line sql.y:1084 { yyVAL.colKeyOpt = colKey } - case 171: + case 172: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1083 +//line sql.y:1088 { yyVAL.colKeyOpt = colKeyUniqueKey } - case 172: + case 173: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1087 +//line sql.y:1092 { yyVAL.colKeyOpt = colKeyUnique } - case 173: + case 174: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1092 +//line sql.y:1097 { yyVAL.sqlVal = nil } - case 174: + case 175: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1096 +//line sql.y:1101 { yyVAL.sqlVal = NewStrVal(yyDollar[2].bytes) } - case 175: + case 176: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1102 +//line sql.y:1107 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 176: + case 177: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1106 +//line sql.y:1111 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } - case 177: + case 178: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1112 +//line sql.y:1117 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 178: + case 179: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1116 +//line sql.y:1121 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 179: + case 180: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1122 +//line sql.y:1127 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].colIdent.String())} } - case 180: + case 181: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1126 +//line sql.y:1131 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } - case 181: + case 182: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1131 +//line sql.y:1136 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } - case 182: + case 183: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1137 +//line sql.y:1142 { yyVAL.str = "" } - case 183: + case 184: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1141 +//line sql.y:1146 { yyVAL.str = string(yyDollar[1].bytes) } - case 184: + case 185: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1147 +//line sql.y:1152 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } - case 185: + case 186: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1151 +//line sql.y:1156 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } - case 186: + case 187: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1155 +//line sql.y:1160 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } - case 187: + case 188: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1159 +//line sql.y:1164 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } - case 188: + case 189: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1163 +//line sql.y:1168 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } - case 189: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1169 - { - yyVAL.str = string(yyDollar[1].bytes) - } case 190: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1173 +//line sql.y:1174 { yyVAL.str = string(yyDollar[1].bytes) } case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1177 +//line sql.y:1178 { yyVAL.str = string(yyDollar[1].bytes) } case 192: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1184 +//line sql.y:1182 { yyVAL.str = string(yyDollar[1].bytes) } case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1188 +//line sql.y:1189 { yyVAL.str = string(yyDollar[1].bytes) } case 194: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1194 +//line sql.y:1193 { yyVAL.str = string(yyDollar[1].bytes) } case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1198 +//line sql.y:1199 { yyVAL.str = string(yyDollar[1].bytes) } case 196: - yyDollar = yyS[yypt-0 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1203 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[1].bytes) } case 197: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1208 + { + yyVAL.str = "" + } + case 198: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1207 +//line sql.y:1212 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 198: + case 199: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1213 +//line sql.y:1218 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 199: + case 200: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1217 +//line sql.y:1222 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 200: + case 201: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1223 +//line sql.y:1228 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].sqlVal} } - case 201: + case 202: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1229 +//line sql.y:1234 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 202: + case 203: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1233 +//line sql.y:1238 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 203: + case 204: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1240 +//line sql.y:1245 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } - case 204: + case 205: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1244 +//line sql.y:1249 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } - case 205: + case 206: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1248 +//line sql.y:1253 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } - case 206: + case 207: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1252 +//line sql.y:1257 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } - case 207: + case 208: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1258 +//line sql.y:1263 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 208: + case 209: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1264 +//line sql.y:1269 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 209: + case 210: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1270 +//line sql.y:1275 { yyVAL.ReferenceAction = Restrict } - case 210: + case 211: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1274 +//line sql.y:1279 { yyVAL.ReferenceAction = Cascade } - case 211: + case 212: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1278 +//line sql.y:1283 { yyVAL.ReferenceAction = NoAction } - case 212: + case 213: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1282 +//line sql.y:1287 { yyVAL.ReferenceAction = SetDefault } - case 213: + case 214: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1286 +//line sql.y:1291 { yyVAL.ReferenceAction = SetNull } - case 214: + case 215: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1291 +//line sql.y:1296 { yyVAL.str = "" } - case 215: + case 216: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1295 +//line sql.y:1300 { yyVAL.str = " " + string(yyDollar[1].str) } - case 216: + case 217: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1299 +//line sql.y:1304 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } - case 217: + case 218: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1307 +//line sql.y:1312 { yyVAL.str = yyDollar[1].str } - case 218: + case 219: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1311 +//line sql.y:1316 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } - case 219: + case 220: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1315 +//line sql.y:1320 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } - case 220: + case 221: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1321 +//line sql.y:1326 { yyVAL.str = yyDollar[1].colIdent.String() } - case 221: + case 222: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1325 +//line sql.y:1330 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 222: + case 223: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1329 +//line sql.y:1334 { yyVAL.str = string(yyDollar[1].bytes) } - case 223: + case 224: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1335 +//line sql.y:1340 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } - case 224: + case 225: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1339 +//line sql.y:1344 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } - case 225: + case 226: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1343 +//line sql.y:1348 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } - case 226: + case 227: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1347 +//line sql.y:1352 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} } - case 227: + case 228: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1352 +//line sql.y:1357 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } - case 228: + case 229: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1357 +//line sql.y:1362 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName()} } - case 229: + case 230: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1361 +//line sql.y:1366 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } - case 230: + case 231: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1365 +//line sql.y:1370 { yyVAL.statement = &DBDDL{Action: AlterStr, DBName: string(yyDollar[3].colIdent.String())} } - case 231: + case 232: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1369 +//line sql.y:1374 { yyVAL.statement = &DBDDL{Action: AlterStr, DBName: string(yyDollar[3].colIdent.String())} } - case 232: + case 233: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1373 +//line sql.y:1378 { yyVAL.statement = &DDL{ Action: CreateVindexStr, @@ -4961,9 +4985,9 @@ yydefault: }, } } - case 233: + case 234: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1385 +//line sql.y:1390 { yyVAL.statement = &DDL{ Action: DropVindexStr, @@ -4973,21 +4997,21 @@ yydefault: }, } } - case 234: + case 235: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1395 +//line sql.y:1400 { yyVAL.statement = &DDL{Action: AddVschemaTableStr, Table: yyDollar[5].tableName} } - case 235: + case 236: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1399 +//line sql.y:1404 { yyVAL.statement = &DDL{Action: DropVschemaTableStr, Table: yyDollar[5].tableName} } - case 236: + case 237: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1403 +//line sql.y:1408 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -5000,9 +5024,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 237: + case 238: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1416 +//line sql.y:1421 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -5012,15 +5036,15 @@ yydefault: }, } } - case 238: + case 239: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1426 +//line sql.y:1431 { yyVAL.statement = &DDL{Action: AddSequenceStr, Table: yyDollar[5].tableName} } - case 239: + case 240: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:1430 +//line sql.y:1435 { yyVAL.statement = &DDL{ Action: AddAutoIncStr, @@ -5031,59 +5055,59 @@ yydefault: }, } } - case 254: + case 255: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1459 +//line sql.y:1464 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 255: + case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1465 +//line sql.y:1470 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 256: + case 257: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1469 +//line sql.y:1474 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 257: + case 258: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1475 +//line sql.y:1480 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 258: + case 259: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1479 +//line sql.y:1484 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 259: + case 260: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1485 +//line sql.y:1490 { yyVAL.statement = yyDollar[3].ddl } - case 260: + case 261: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1491 +//line sql.y:1496 { yyVAL.ddl = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } - case 261: + case 262: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1495 +//line sql.y:1500 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) yyVAL.ddl.ToTables = append(yyVAL.ddl.ToTables, yyDollar[5].tableName) } - case 262: + case 263: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1503 +//line sql.y:1508 { var exists bool if yyDollar[3].byt != 0 { @@ -5091,16 +5115,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, FromTables: yyDollar[4].tableNames, IfExists: exists} } - case 263: + case 264: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1511 +//line sql.y:1516 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName} } - case 264: + case 265: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1516 +//line sql.y:1521 { var exists bool if yyDollar[3].byt != 0 { @@ -5108,145 +5132,145 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: exists} } - case 265: + case 266: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1524 +//line sql.y:1529 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].colIdent.String())} } - case 266: + case 267: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1528 +//line sql.y:1533 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].colIdent.String())} } - case 267: + case 268: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1534 +//line sql.y:1539 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 268: + case 269: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1538 +//line sql.y:1543 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 269: + case 270: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1543 +//line sql.y:1548 { yyVAL.statement = &OtherRead{} } - case 270: + case 271: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1549 +//line sql.y:1554 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String())} } - case 271: + case 272: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1554 +//line sql.y:1559 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Type: CharsetStr, ShowTablesOpt: showTablesOpt} } - case 272: + case 273: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1559 +//line sql.y:1564 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt} } - case 273: + case 274: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1564 +//line sql.y:1569 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 274: + case 275: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1569 +//line sql.y:1574 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String())} } - case 275: + case 276: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1573 +//line sql.y:1578 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 276: + case 277: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1577 +//line sql.y:1582 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName} } - case 277: + case 278: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1581 +//line sql.y:1586 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 278: + case 279: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1585 +//line sql.y:1590 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 279: + case 280: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1589 +//line sql.y:1594 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 280: + case 281: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1593 +//line sql.y:1598 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 281: + case 282: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1597 +//line sql.y:1602 { showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } - case 282: + case 283: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1603 +//line sql.y:1608 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 283: + case 284: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1607 +//line sql.y:1612 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 284: + case 285: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1611 +//line sql.y:1616 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 285: + case 286: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1615 +//line sql.y:1620 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 286: + case 287: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1619 +//line sql.y:1624 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } - case 287: + case 288: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1624 +//line sql.y:1629 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5256,715 +5280,763 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt} } } - case 288: + case 289: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1634 +//line sql.y:1639 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 289: + case 290: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1638 +//line sql.y:1643 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 290: + case 291: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1642 +//line sql.y:1647 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr} } - case 291: + case 292: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1646 +//line sql.y:1651 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Scope: string(yyDollar[2].bytes), Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt} } - case 292: + case 293: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1651 +//line sql.y:1656 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 293: + case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1655 +//line sql.y:1660 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 294: + case 295: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1659 +//line sql.y:1664 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName} } - case 295: + case 296: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1663 +//line sql.y:1668 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 296: + case 297: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1677 +//line sql.y:1682 { yyVAL.statement = &Show{Type: string(yyDollar[2].colIdent.String())} } - case 297: + case 298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1683 +//line sql.y:1688 { yyVAL.str = string(yyDollar[1].bytes) } - case 298: + case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1687 +//line sql.y:1692 { yyVAL.str = string(yyDollar[1].bytes) } - case 299: + case 300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1693 +//line sql.y:1698 { yyVAL.str = "" } - case 300: + case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1697 +//line sql.y:1702 { yyVAL.str = "extended " } - case 301: + case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1703 +//line sql.y:1708 { yyVAL.str = "" } - case 302: + case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1707 +//line sql.y:1712 { yyVAL.str = "full " } - case 303: + case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1713 +//line sql.y:1718 { yyVAL.str = string(yyDollar[1].bytes) } - case 304: + case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1717 +//line sql.y:1722 { yyVAL.str = string(yyDollar[1].bytes) } - case 305: + case 306: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1723 +//line sql.y:1728 { yyVAL.str = "" } - case 306: + case 307: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1727 +//line sql.y:1732 { yyVAL.str = yyDollar[2].tableIdent.v } - case 307: + case 308: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1731 +//line sql.y:1736 { yyVAL.str = yyDollar[2].tableIdent.v } - case 308: + case 309: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1737 +//line sql.y:1742 { yyVAL.showFilter = nil } - case 309: + case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1741 +//line sql.y:1746 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 310: + case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1745 +//line sql.y:1750 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 311: + case 312: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1751 +//line sql.y:1756 { yyVAL.showFilter = nil } - case 312: + case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1755 +//line sql.y:1760 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 313: + case 314: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1761 +//line sql.y:1766 { yyVAL.str = "" } - case 314: + case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1765 +//line sql.y:1770 { yyVAL.str = SessionStr } - case 315: + case 316: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1769 +//line sql.y:1774 { yyVAL.str = GlobalStr } - case 316: + case 317: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1775 +//line sql.y:1780 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 317: + case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1779 +//line sql.y:1784 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 318: + case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1785 +//line sql.y:1790 { yyVAL.statement = &Begin{} } - case 319: + case 320: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1789 +//line sql.y:1794 { yyVAL.statement = &Begin{} } - case 320: + case 321: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1795 +//line sql.y:1800 { yyVAL.statement = &Commit{} } - case 321: + case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1801 +//line sql.y:1806 { yyVAL.statement = &Rollback{} } - case 322: + case 323: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1811 + { + yyVAL.str = "" + } + case 324: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1815 + { + yyVAL.str = JSONStr + } + case 325: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1819 + { + yyVAL.str = TreeStr + } + case 326: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1823 + { + yyVAL.str = VitessStr + } + case 327: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1829 + { + yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].selStmt} + } + case 328: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1833 + { + yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} + } + case 329: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1837 + { + yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} + } + case 330: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1841 + { + yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} + } + case 331: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1807 +//line sql.y:1847 { yyVAL.statement = &OtherRead{} } - case 323: + case 332: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1811 +//line sql.y:1851 { yyVAL.statement = &OtherRead{} } - case 324: + case 333: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1815 +//line sql.y:1855 { yyVAL.statement = &OtherRead{} } - case 325: + case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1819 +//line sql.y:1859 { yyVAL.statement = &OtherAdmin{} } - case 326: + case 335: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1823 +//line sql.y:1863 { yyVAL.statement = &OtherAdmin{} } - case 327: + case 336: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1827 +//line sql.y:1867 { yyVAL.statement = &OtherAdmin{} } - case 328: + case 337: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1831 +//line sql.y:1871 { yyVAL.statement = &OtherAdmin{} } - case 329: + case 338: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1837 +//line sql.y:1877 { yyVAL.statement = &DDL{Action: FlushStr} } - case 330: + case 339: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1841 +//line sql.y:1881 { setAllowComments(yylex, true) } - case 331: + case 340: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1845 +//line sql.y:1885 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 332: + case 341: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1851 +//line sql.y:1891 { yyVAL.bytes2 = nil } - case 333: + case 342: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1855 +//line sql.y:1895 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 334: + case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1861 +//line sql.y:1901 { yyVAL.str = UnionStr } - case 335: + case 344: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1865 +//line sql.y:1905 { yyVAL.str = UnionAllStr } - case 336: + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1869 +//line sql.y:1909 { yyVAL.str = UnionDistinctStr } - case 337: + case 346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1874 +//line sql.y:1914 { yyVAL.str = "" } - case 338: + case 347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1878 +//line sql.y:1918 { yyVAL.str = SQLNoCacheStr } - case 339: + case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1882 +//line sql.y:1922 { yyVAL.str = SQLCacheStr } - case 340: + case 349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1887 +//line sql.y:1927 { yyVAL.str = "" } - case 341: + case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1891 +//line sql.y:1931 { yyVAL.str = DistinctStr } - case 342: + case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1895 +//line sql.y:1935 { yyVAL.str = DistinctStr } - case 343: + case 352: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1900 +//line sql.y:1940 { yyVAL.selectExprs = nil } - case 344: + case 353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1904 +//line sql.y:1944 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 345: + case 354: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1909 +//line sql.y:1949 { yyVAL.strs = nil } - case 346: + case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1913 +//line sql.y:1953 { yyVAL.strs = []string{yyDollar[1].str} } - case 347: + case 356: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1917 +//line sql.y:1957 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 348: + case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1921 +//line sql.y:1961 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 349: + case 358: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1925 +//line sql.y:1965 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 350: + case 359: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1931 +//line sql.y:1971 { yyVAL.str = SQLNoCacheStr } - case 351: + case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1935 +//line sql.y:1975 { yyVAL.str = SQLCacheStr } - case 352: + case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1939 +//line sql.y:1979 { yyVAL.str = DistinctStr } - case 353: + case 362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1943 +//line sql.y:1983 { yyVAL.str = DistinctStr } - case 354: + case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1947 +//line sql.y:1987 { yyVAL.str = StraightJoinHint } - case 355: + case 364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1951 +//line sql.y:1991 { yyVAL.str = SQLCalcFoundRowsStr } - case 356: + case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1957 +//line sql.y:1997 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 357: + case 366: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1961 +//line sql.y:2001 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 358: + case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1967 +//line sql.y:2007 { yyVAL.selectExpr = &StarExpr{} } - case 359: + case 368: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1971 +//line sql.y:2011 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 360: + case 369: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1975 +//line sql.y:2015 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 361: + case 370: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1979 +//line sql.y:2019 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 362: + case 371: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1984 +//line sql.y:2024 { yyVAL.colIdent = ColIdent{} } - case 363: + case 372: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1988 +//line sql.y:2028 { yyVAL.colIdent = yyDollar[1].colIdent } - case 364: + case 373: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1992 +//line sql.y:2032 { yyVAL.colIdent = yyDollar[2].colIdent } - case 366: + case 375: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1999 +//line sql.y:2039 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 367: + case 376: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2004 +//line sql.y:2044 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 368: + case 377: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2008 +//line sql.y:2048 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 369: + case 378: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2014 +//line sql.y:2054 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 370: + case 379: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2018 +//line sql.y:2058 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 373: + case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2028 +//line sql.y:2068 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 374: + case 383: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2032 +//line sql.y:2072 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 375: + case 384: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2036 +//line sql.y:2076 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") return 1 } - case 376: + case 385: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2042 +//line sql.y:2082 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 377: + case 386: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2048 +//line sql.y:2088 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 378: + case 387: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2052 +//line sql.y:2092 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 379: + case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2058 +//line sql.y:2098 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 380: + case 389: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2062 +//line sql.y:2102 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 381: + case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2068 +//line sql.y:2108 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 382: + case 391: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2072 +//line sql.y:2112 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 383: + case 392: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2085 +//line sql.y:2125 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 384: + case 393: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2089 +//line sql.y:2129 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 385: + case 394: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2093 +//line sql.y:2133 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 386: + case 395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2097 +//line sql.y:2137 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 387: + case 396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2103 +//line sql.y:2143 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 388: + case 397: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2105 +//line sql.y:2145 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 389: + case 398: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2109 +//line sql.y:2149 { yyVAL.joinCondition = JoinCondition{} } - case 390: + case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2111 +//line sql.y:2151 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 391: + case 400: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2115 +//line sql.y:2155 { yyVAL.joinCondition = JoinCondition{} } - case 392: + case 401: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2117 +//line sql.y:2157 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 393: + case 402: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2120 +//line sql.y:2160 { yyVAL.empty = struct{}{} } - case 394: + case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2122 +//line sql.y:2162 { yyVAL.empty = struct{}{} } - case 395: + case 404: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2125 +//line sql.y:2165 { yyVAL.tableIdent = NewTableIdent("") } - case 396: + case 405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2129 +//line sql.y:2169 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 397: + case 406: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2133 +//line sql.y:2173 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 399: + case 408: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2140 +//line sql.y:2180 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 400: + case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2146 +//line sql.y:2186 { yyVAL.str = JoinStr } - case 401: + case 410: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2150 +//line sql.y:2190 { yyVAL.str = JoinStr } - case 402: + case 411: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2154 +//line sql.y:2194 { yyVAL.str = JoinStr } - case 403: + case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2160 +//line sql.y:2200 { yyVAL.str = StraightJoinStr } - case 404: + case 413: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2166 +//line sql.y:2206 { yyVAL.str = LeftJoinStr } - case 405: + case 414: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2170 +//line sql.y:2210 { yyVAL.str = LeftJoinStr } - case 406: + case 415: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2174 +//line sql.y:2214 { yyVAL.str = RightJoinStr } - case 407: + case 416: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2178 +//line sql.y:2218 { yyVAL.str = RightJoinStr } - case 408: + case 417: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2184 +//line sql.y:2224 { yyVAL.str = NaturalJoinStr } - case 409: + case 418: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2188 +//line sql.y:2228 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -5972,471 +6044,471 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 410: + case 419: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2198 +//line sql.y:2238 { yyVAL.tableName = yyDollar[2].tableName } - case 411: + case 420: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2202 +//line sql.y:2242 { yyVAL.tableName = yyDollar[1].tableName } - case 412: + case 421: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2208 +//line sql.y:2248 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 413: + case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2212 +//line sql.y:2252 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 414: + case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2218 +//line sql.y:2258 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 415: + case 424: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2223 +//line sql.y:2263 { yyVAL.indexHints = nil } - case 416: + case 425: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2227 +//line sql.y:2267 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 417: + case 426: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2231 +//line sql.y:2271 { yyVAL.indexHints = &IndexHints{Type: UseStr} } - case 418: + case 427: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2235 +//line sql.y:2275 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 419: + case 428: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2239 +//line sql.y:2279 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 420: + case 429: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2244 +//line sql.y:2284 { yyVAL.expr = nil } - case 421: + case 430: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2248 +//line sql.y:2288 { yyVAL.expr = yyDollar[2].expr } - case 422: + case 431: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2254 +//line sql.y:2294 { yyVAL.expr = yyDollar[1].expr } - case 423: + case 432: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2258 +//line sql.y:2298 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 424: + case 433: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2262 +//line sql.y:2302 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 425: + case 434: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2266 +//line sql.y:2306 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 426: + case 435: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2270 +//line sql.y:2310 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 427: + case 436: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2274 +//line sql.y:2314 { yyVAL.expr = yyDollar[1].expr } - case 428: + case 437: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2278 +//line sql.y:2318 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 429: + case 438: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2284 +//line sql.y:2324 { yyVAL.str = "" } - case 430: + case 439: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2288 +//line sql.y:2328 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 431: + case 440: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2294 +//line sql.y:2334 { yyVAL.boolVal = BoolVal(true) } - case 432: + case 441: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2298 +//line sql.y:2338 { yyVAL.boolVal = BoolVal(false) } - case 433: + case 442: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2304 +//line sql.y:2344 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 434: + case 443: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2308 +//line sql.y:2348 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 435: + case 444: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2312 +//line sql.y:2352 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 436: + case 445: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2316 +//line sql.y:2356 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 437: + case 446: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2320 +//line sql.y:2360 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 438: + case 447: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2324 +//line sql.y:2364 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 439: + case 448: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2328 +//line sql.y:2368 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 440: + case 449: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2332 +//line sql.y:2372 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 441: + case 450: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2336 +//line sql.y:2376 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 442: + case 451: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2340 +//line sql.y:2380 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 443: + case 452: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2346 +//line sql.y:2386 { yyVAL.str = IsNullStr } - case 444: + case 453: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2350 +//line sql.y:2390 { yyVAL.str = IsNotNullStr } - case 445: + case 454: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2354 +//line sql.y:2394 { yyVAL.str = IsTrueStr } - case 446: + case 455: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2358 +//line sql.y:2398 { yyVAL.str = IsNotTrueStr } - case 447: + case 456: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2362 +//line sql.y:2402 { yyVAL.str = IsFalseStr } - case 448: + case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2366 +//line sql.y:2406 { yyVAL.str = IsNotFalseStr } - case 449: + case 458: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2372 +//line sql.y:2412 { yyVAL.str = EqualStr } - case 450: + case 459: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2376 +//line sql.y:2416 { yyVAL.str = LessThanStr } - case 451: + case 460: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2380 +//line sql.y:2420 { yyVAL.str = GreaterThanStr } - case 452: + case 461: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2384 +//line sql.y:2424 { yyVAL.str = LessEqualStr } - case 453: + case 462: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2388 +//line sql.y:2428 { yyVAL.str = GreaterEqualStr } - case 454: + case 463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2392 +//line sql.y:2432 { yyVAL.str = NotEqualStr } - case 455: + case 464: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2396 +//line sql.y:2436 { yyVAL.str = NullSafeEqualStr } - case 456: + case 465: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2401 +//line sql.y:2441 { yyVAL.expr = nil } - case 457: + case 466: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2405 +//line sql.y:2445 { yyVAL.expr = yyDollar[2].expr } - case 458: + case 467: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2411 +//line sql.y:2451 { yyVAL.colTuple = yyDollar[1].valTuple } - case 459: + case 468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2415 +//line sql.y:2455 { yyVAL.colTuple = yyDollar[1].subquery } - case 460: + case 469: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2419 +//line sql.y:2459 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 461: + case 470: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2425 +//line sql.y:2465 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 462: + case 471: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2431 +//line sql.y:2471 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 463: + case 472: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2435 +//line sql.y:2475 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 464: + case 473: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2441 +//line sql.y:2481 { yyVAL.expr = yyDollar[1].expr } - case 465: + case 474: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2445 +//line sql.y:2485 { yyVAL.expr = yyDollar[1].boolVal } - case 466: + case 475: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2449 +//line sql.y:2489 { yyVAL.expr = yyDollar[1].colName } - case 467: + case 476: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2453 +//line sql.y:2493 { yyVAL.expr = yyDollar[1].expr } - case 468: + case 477: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2457 +//line sql.y:2497 { yyVAL.expr = yyDollar[1].subquery } - case 469: + case 478: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2461 +//line sql.y:2501 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 470: + case 479: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2465 +//line sql.y:2505 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 471: + case 480: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2469 +//line sql.y:2509 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 472: + case 481: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2473 +//line sql.y:2513 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 473: + case 482: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2477 +//line sql.y:2517 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 474: + case 483: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2481 +//line sql.y:2521 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 475: + case 484: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2485 +//line sql.y:2525 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 476: + case 485: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2489 +//line sql.y:2529 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 477: + case 486: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2493 +//line sql.y:2533 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 478: + case 487: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2497 +//line sql.y:2537 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 479: + case 488: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2501 +//line sql.y:2541 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 480: + case 489: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2505 +//line sql.y:2545 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 481: + case 490: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2509 +//line sql.y:2549 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 482: + case 491: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2513 +//line sql.y:2553 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 483: + case 492: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2517 +//line sql.y:2557 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 484: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2521 +//line sql.y:2561 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 485: + case 494: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2525 +//line sql.y:2565 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 486: + case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2529 +//line sql.y:2569 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} } - case 487: + case 496: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2533 +//line sql.y:2573 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -6444,9 +6516,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 488: + case 497: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2541 +//line sql.y:2581 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -6460,21 +6532,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 489: + case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2555 +//line sql.y:2595 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 490: + case 499: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2559 +//line sql.y:2599 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 491: + case 500: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2563 +//line sql.y:2603 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -6482,497 +6554,497 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 496: + case 505: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2581 +//line sql.y:2621 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 497: + case 506: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2585 +//line sql.y:2625 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 498: + case 507: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2589 +//line sql.y:2629 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 499: + case 508: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2593 +//line sql.y:2633 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 500: + case 509: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2603 +//line sql.y:2643 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 501: + case 510: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2607 +//line sql.y:2647 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 502: + case 511: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2611 +//line sql.y:2651 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 503: + case 512: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2615 +//line sql.y:2655 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 504: + case 513: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2619 +//line sql.y:2659 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 505: + case 514: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2623 +//line sql.y:2663 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 506: + case 515: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2627 +//line sql.y:2667 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 507: + case 516: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2631 +//line sql.y:2671 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 508: + case 517: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2635 +//line sql.y:2675 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 509: + case 518: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2639 +//line sql.y:2679 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 510: + case 519: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2643 +//line sql.y:2683 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } - case 511: + case 520: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2647 +//line sql.y:2687 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 512: + case 521: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2651 +//line sql.y:2691 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 513: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2661 +//line sql.y:2701 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 514: + case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2665 +//line sql.y:2705 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 515: + case 524: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2669 +//line sql.y:2709 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 516: + case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2674 +//line sql.y:2714 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 517: + case 526: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2679 +//line sql.y:2719 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 518: + case 527: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2684 +//line sql.y:2724 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 519: + case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2690 +//line sql.y:2730 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 520: + case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2695 +//line sql.y:2735 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 521: + case 530: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2700 +//line sql.y:2740 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } - case 522: + case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2704 +//line sql.y:2744 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } - case 523: + case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2708 +//line sql.y:2748 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } - case 524: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2713 +//line sql.y:2753 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } - case 525: + case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2718 +//line sql.y:2758 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } - case 526: + case 535: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2723 +//line sql.y:2763 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } - case 527: + case 536: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2727 +//line sql.y:2767 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 528: + case 537: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2731 +//line sql.y:2771 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 531: + case 540: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2741 +//line sql.y:2781 { yyVAL.expr = yyDollar[2].expr } - case 532: + case 541: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2751 +//line sql.y:2791 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 533: + case 542: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2755 +//line sql.y:2795 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 534: + case 543: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2759 +//line sql.y:2799 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } - case 535: + case 544: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2763 +//line sql.y:2803 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 536: + case 545: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2767 +//line sql.y:2807 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 537: + case 546: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2771 +//line sql.y:2811 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 538: + case 547: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2775 +//line sql.y:2815 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 539: + case 548: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2781 +//line sql.y:2821 { yyVAL.str = "" } - case 540: + case 549: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2785 +//line sql.y:2825 { yyVAL.str = BooleanModeStr } - case 541: + case 550: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2789 +//line sql.y:2829 { yyVAL.str = NaturalLanguageModeStr } - case 542: + case 551: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2793 +//line sql.y:2833 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 543: + case 552: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2797 +//line sql.y:2837 { yyVAL.str = QueryExpansionStr } - case 544: + case 553: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2803 +//line sql.y:2843 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 545: + case 554: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2807 +//line sql.y:2847 { yyVAL.str = string(yyDollar[1].bytes) } - case 546: + case 555: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2813 +//line sql.y:2853 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 547: + case 556: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2817 +//line sql.y:2857 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 548: + case 557: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2821 +//line sql.y:2861 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].colIdent.String())} } - case 549: + case 558: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2825 +//line sql.y:2865 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 550: + case 559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2829 +//line sql.y:2869 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 551: + case 560: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2833 +//line sql.y:2873 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 552: + case 561: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2839 +//line sql.y:2879 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 553: + case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2843 +//line sql.y:2883 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 554: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2847 +//line sql.y:2887 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 555: + case 564: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2851 +//line sql.y:2891 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 556: + case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2855 +//line sql.y:2895 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 557: + case 566: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2859 +//line sql.y:2899 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 558: + case 567: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2863 +//line sql.y:2903 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 559: + case 568: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2868 +//line sql.y:2908 { yyVAL.expr = nil } - case 560: + case 569: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2872 +//line sql.y:2912 { yyVAL.expr = yyDollar[1].expr } - case 561: + case 570: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2877 +//line sql.y:2917 { yyVAL.str = string("") } - case 562: + case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2881 +//line sql.y:2921 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 563: + case 572: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2887 +//line sql.y:2927 { yyVAL.whens = []*When{yyDollar[1].when} } - case 564: + case 573: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2891 +//line sql.y:2931 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 565: + case 574: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2897 +//line sql.y:2937 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 566: + case 575: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2902 +//line sql.y:2942 { yyVAL.expr = nil } - case 567: + case 576: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2906 +//line sql.y:2946 { yyVAL.expr = yyDollar[2].expr } - case 568: + case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2912 +//line sql.y:2952 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 569: + case 578: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2916 +//line sql.y:2956 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 570: + case 579: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2920 +//line sql.y:2960 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 571: + case 580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2926 +//line sql.y:2966 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 572: + case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2930 +//line sql.y:2970 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 573: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2934 +//line sql.y:2974 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 574: + case 583: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2938 +//line sql.y:2978 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 575: + case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2942 +//line sql.y:2982 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 576: + case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2946 +//line sql.y:2986 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 577: + case 586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2950 +//line sql.y:2990 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 578: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2954 +//line sql.y:2994 { yyVAL.expr = &NullVal{} } - case 579: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2960 +//line sql.y:3000 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -6981,239 +7053,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 580: + case 589: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2969 +//line sql.y:3009 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 581: + case 590: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2973 +//line sql.y:3013 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 582: + case 591: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2978 +//line sql.y:3018 { yyVAL.exprs = nil } - case 583: + case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2982 +//line sql.y:3022 { yyVAL.exprs = yyDollar[3].exprs } - case 584: + case 593: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2987 +//line sql.y:3027 { yyVAL.expr = nil } - case 585: + case 594: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2991 +//line sql.y:3031 { yyVAL.expr = yyDollar[2].expr } - case 586: + case 595: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2996 +//line sql.y:3036 { yyVAL.orderBy = nil } - case 587: + case 596: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3000 +//line sql.y:3040 { yyVAL.orderBy = yyDollar[3].orderBy } - case 588: + case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3006 +//line sql.y:3046 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 589: + case 598: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3010 +//line sql.y:3050 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 590: + case 599: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3016 +//line sql.y:3056 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 591: + case 600: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3021 +//line sql.y:3061 { yyVAL.str = AscScr } - case 592: + case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3025 +//line sql.y:3065 { yyVAL.str = AscScr } - case 593: + case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3029 +//line sql.y:3069 { yyVAL.str = DescScr } - case 594: + case 603: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3034 +//line sql.y:3074 { yyVAL.limit = nil } - case 595: + case 604: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3038 +//line sql.y:3078 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 596: + case 605: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3042 +//line sql.y:3082 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 597: + case 606: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3046 +//line sql.y:3086 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 598: + case 607: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3051 +//line sql.y:3091 { yyVAL.str = "" } - case 599: + case 608: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3055 +//line sql.y:3095 { yyVAL.str = ForUpdateStr } - case 600: + case 609: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3059 +//line sql.y:3099 { yyVAL.str = ShareModeStr } - case 601: + case 610: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3072 +//line sql.y:3112 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 602: + case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3076 +//line sql.y:3116 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 603: + case 612: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3080 +//line sql.y:3120 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 604: + case 613: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3085 +//line sql.y:3125 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 605: + case 614: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3089 +//line sql.y:3129 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 606: + case 615: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3093 +//line sql.y:3133 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 607: + case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3100 +//line sql.y:3140 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 608: + case 617: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3104 +//line sql.y:3144 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 609: + case 618: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3108 +//line sql.y:3148 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 610: + case 619: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3112 +//line sql.y:3152 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 611: + case 620: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3117 +//line sql.y:3157 { yyVAL.updateExprs = nil } - case 612: + case 621: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3121 +//line sql.y:3161 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 613: + case 622: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3127 +//line sql.y:3167 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 614: + case 623: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3131 +//line sql.y:3171 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 615: + case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3137 +//line sql.y:3177 { yyVAL.valTuple = yyDollar[1].valTuple } - case 616: + case 625: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3141 +//line sql.y:3181 { yyVAL.valTuple = ValTuple{} } - case 617: + case 626: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3147 +//line sql.y:3187 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 618: + case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3153 +//line sql.y:3193 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -7221,319 +7293,319 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 619: + case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3163 +//line sql.y:3203 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 620: + case 629: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3167 +//line sql.y:3207 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 621: + case 630: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3173 +//line sql.y:3213 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 622: + case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3179 +//line sql.y:3219 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 623: + case 632: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3183 +//line sql.y:3223 { yyDollar[2].setExpr.Scope = yyDollar[1].str yyVAL.setExprs = SetExprs{yyDollar[2].setExpr} } - case 624: + case 633: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3188 +//line sql.y:3228 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 625: + case 634: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3194 +//line sql.y:3234 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 626: + case 635: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3198 +//line sql.y:3238 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } - case 627: + case 636: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3202 +//line sql.y:3242 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 628: + case 637: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3206 +//line sql.y:3246 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 630: + case 639: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3213 +//line sql.y:3253 { yyVAL.bytes = []byte("charset") } - case 632: + case 641: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3220 +//line sql.y:3260 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 633: + case 642: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3224 +//line sql.y:3264 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 634: + case 643: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3228 +//line sql.y:3268 { yyVAL.expr = &Default{} } - case 637: + case 646: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3237 +//line sql.y:3277 { yyVAL.byt = 0 } - case 638: + case 647: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3239 +//line sql.y:3279 { yyVAL.byt = 1 } - case 639: + case 648: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3242 +//line sql.y:3282 { yyVAL.empty = struct{}{} } - case 640: + case 649: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3244 +//line sql.y:3284 { yyVAL.empty = struct{}{} } - case 641: + case 650: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3247 +//line sql.y:3287 { yyVAL.str = "" } - case 642: + case 651: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3249 +//line sql.y:3289 { yyVAL.str = IgnoreStr } - case 643: + case 652: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3253 +//line sql.y:3293 { yyVAL.empty = struct{}{} } - case 644: + case 653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3255 +//line sql.y:3295 { yyVAL.empty = struct{}{} } - case 645: + case 654: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3257 +//line sql.y:3297 { yyVAL.empty = struct{}{} } - case 646: + case 655: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3259 +//line sql.y:3299 { yyVAL.empty = struct{}{} } - case 647: + case 656: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3261 +//line sql.y:3301 { yyVAL.empty = struct{}{} } - case 648: + case 657: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3263 +//line sql.y:3303 { yyVAL.empty = struct{}{} } - case 649: + case 658: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3265 +//line sql.y:3305 { yyVAL.empty = struct{}{} } - case 650: + case 659: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3267 +//line sql.y:3307 { yyVAL.empty = struct{}{} } - case 651: + case 660: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3269 +//line sql.y:3309 { yyVAL.empty = struct{}{} } - case 652: + case 661: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3271 +//line sql.y:3311 { yyVAL.empty = struct{}{} } - case 653: + case 662: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3274 +//line sql.y:3314 { yyVAL.empty = struct{}{} } - case 654: + case 663: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3276 +//line sql.y:3316 { yyVAL.empty = struct{}{} } - case 655: + case 664: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3278 +//line sql.y:3318 { yyVAL.empty = struct{}{} } - case 656: + case 665: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3282 +//line sql.y:3322 { yyVAL.empty = struct{}{} } - case 657: + case 666: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3284 +//line sql.y:3324 { yyVAL.empty = struct{}{} } - case 658: + case 667: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3287 +//line sql.y:3327 { yyVAL.empty = struct{}{} } - case 659: + case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3289 +//line sql.y:3329 { yyVAL.empty = struct{}{} } - case 660: + case 669: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3291 +//line sql.y:3331 { yyVAL.empty = struct{}{} } - case 661: + case 670: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3294 +//line sql.y:3334 { yyVAL.colIdent = ColIdent{} } - case 662: + case 671: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3296 +//line sql.y:3336 { yyVAL.colIdent = yyDollar[2].colIdent } - case 663: + case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3300 +//line sql.y:3340 { yyVAL.colIdent = yyDollar[1].colIdent } - case 664: + case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3304 +//line sql.y:3344 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 666: + case 675: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3311 +//line sql.y:3351 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 667: + case 676: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3317 +//line sql.y:3357 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 668: + case 677: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3321 +//line sql.y:3361 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 670: + case 679: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3328 +//line sql.y:3368 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 960: + case 969: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3643 +//line sql.y:3683 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 961: + case 970: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3652 +//line sql.y:3692 { decNesting(yylex) } - case 962: + case 971: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3657 +//line sql.y:3697 { skipToEnd(yylex) } - case 963: + case 972: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3662 +//line sql.y:3702 { skipToEnd(yylex) } - case 964: + case 973: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3666 +//line sql.y:3706 { skipToEnd(yylex) } - case 965: + case 974: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3670 +//line sql.y:3710 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 2da730bbba4..088617e8ce4 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -213,15 +213,19 @@ func skipToEnd(yylex interface{}) { %token RANDOM REFERENCE REQUIRE_ROW_FORMAT RESOURCE RESPECT RESTART RETAIN REUSE ROLE SECONDARY SECONDARY_ENGINE SECONDARY_LOAD SECONDARY_UNLOAD SKIP SRID %token THREAD_PRIORITY TIES UNBOUNDED VCPU VISIBLE +// Explain tokens +%token FORMAT TREE VITESS + %type command %type select_statement base_select union_lhs union_rhs +%type explain_statement %type stream_statement insert_statement update_statement delete_statement set_statement set_transaction_statement %type create_statement alter_statement rename_statement drop_statement truncate_statement flush_statement %type create_table_prefix rename_list %type analyze_statement show_statement use_statement other_statement %type begin_statement commit_statement rollback_statement %type comment_opt comment_list -%type union_op insert_or_replace +%type union_op insert_or_replace explain_format_opt %type distinct_opt cache_opt match_option separator_opt %type like_escape_opt %type select_expression_list select_expression_list_opt @@ -358,6 +362,7 @@ command: | begin_statement | commit_statement | rollback_statement +| explain_statement | other_statement | flush_statement | /*empty*/ @@ -1688,15 +1693,15 @@ tables_or_processlist: $$ = string($1) } - extended_opt: - /* empty */ - { - $$ = "" - } +extended_opt: + /* empty */ + { + $$ = "" + } | EXTENDED - { - $$ = "extended " - } + { + $$ = "extended " + } full_opt: /* empty */ @@ -1802,6 +1807,41 @@ rollback_statement: $$ = &Rollback{} } +explain_format_opt: + { + $$ = "" + } +| FORMAT '=' JSON + { + $$ = JSONStr + } +| FORMAT '=' TREE + { + $$ = TreeStr + } +| FORMAT '=' VITESS + { + $$ = VitessStr + } + +explain_statement: + EXPLAIN explain_format_opt select_statement + { + $$ = &Explain{Fmt: $2, Statement: $3} + } +| EXPLAIN explain_format_opt update_statement + { + $$ = &Explain{Fmt: $2, Statement: $3} + } +| EXPLAIN explain_format_opt insert_statement + { + $$ = &Explain{Fmt: $2, Statement: $3} + } +| EXPLAIN explain_format_opt delete_statement + { + $$ = &Explain{Fmt: $2, Statement: $3} + } + other_statement: DESC skip_to_end { diff --git a/go/vt/sqlparser/token.go b/go/vt/sqlparser/token.go index 79f4e1607a9..1909ea43c19 100644 --- a/go/vt/sqlparser/token.go +++ b/go/vt/sqlparser/token.go @@ -184,6 +184,7 @@ var keywords = map[string]int{ "for": FOR, "force": FORCE, "foreign": FOREIGN, + "format": FORMAT, "from": FROM, "full": FULL, "fulltext": FULLTEXT, @@ -366,6 +367,7 @@ var keywords = map[string]int{ "to": TO, "trailing": UNUSED, "transaction": TRANSACTION, + "tree": TREE, "trigger": TRIGGER, "true": TRUE, "truncate": TRUNCATE, @@ -392,6 +394,7 @@ var keywords = map[string]int{ "vindex": VINDEX, "vindexes": VINDEXES, "view": VIEW, + "vitess": VITESS, "vitess_metadata": VITESS_METADATA, "vschema": VSCHEMA, "warnings": WARNINGS, diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 4f6e3ce4ae6..8bff436f9ee 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -301,7 +301,7 @@ func BuildFromStmt(query string, stmt sqlparser.Statement, vschema ContextVSchem } case *sqlparser.Use: instruction, err = buildUsePlan(stmt, vschema) - case *sqlparser.OtherRead, *sqlparser.OtherAdmin: + case *sqlparser.OtherRead, *sqlparser.OtherAdmin, *sqlparser.Explain: instruction, err = buildOtherReadAndAdmin(query, vschema) case *sqlparser.Set: instruction, err = buildSetPlan(stmt, vschema) diff --git a/go/vt/vttablet/tabletserver/planbuilder/permission.go b/go/vt/vttablet/tabletserver/planbuilder/permission.go index 5fe98438d95..593281874ef 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/permission.go +++ b/go/vt/vttablet/tabletserver/planbuilder/permission.go @@ -47,7 +47,7 @@ func BuildPermissions(stmt sqlparser.Statement) []Permission { case *sqlparser.Delete: permissions = buildTableExprsPermissions(node.TableExprs, tableacl.WRITER, permissions) permissions = buildSubqueryPermissions(node, tableacl.READER, permissions) - case *sqlparser.Set, *sqlparser.Show, *sqlparser.OtherRead: + case *sqlparser.Set, *sqlparser.Show, *sqlparser.OtherRead, *sqlparser.Explain: // no-op case *sqlparser.DDL: for _, t := range node.AffectedTables() { From a8fef70f095ab6a569f591845b0e0269c207572f Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Sat, 25 Apr 2020 14:21:23 +0200 Subject: [PATCH 02/12] Extract method that creates Instruction Signed-off-by: Andres Taylor --- go/vt/vtgate/planbuilder/builder.go | 66 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 35 deletions(-) diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 8bff436f9ee..98971ecaaac 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -275,61 +275,57 @@ func Build(query string, vschema ContextVSchema) (*engine.Plan, error) { var ErrPlanNotSupported = errors.New("plan building not supported") // BuildFromStmt builds a plan based on the AST provided. -// TODO(sougou): The query input is trusted as the source -// of the AST. Maybe this function just returns instructions -// and engine.Plan can be built by the caller. func BuildFromStmt(query string, stmt sqlparser.Statement, vschema ContextVSchema, bindVarNeeds sqlparser.BindVarNeeds) (*engine.Plan, error) { - var err error - var instruction engine.Primitive + instruction, err := createInstructionFor(query, stmt, vschema) + if err != nil { + return nil, err + } + plan := &engine.Plan{ + Type: sqlparser.ASTToStatementType(stmt), + Original: query, + Instructions: instruction, + BindVarNeeds: bindVarNeeds, + } + return plan, nil +} + +func buildRoutePlan(stmt sqlparser.Statement, vschema ContextVSchema, f func(statement sqlparser.Statement, schema ContextVSchema) (engine.Primitive, error)) (engine.Primitive, error) { + if vschema.Destination() != nil { + return buildPlanForBypass(stmt, vschema) + } + return f(stmt, vschema) +} +func createInstructionFor(query string, stmt sqlparser.Statement, vschema ContextVSchema) (engine.Primitive, error) { switch stmt := stmt.(type) { case *sqlparser.Select: - instruction, err = buildRoutePlan(stmt, vschema, buildSelectPlan) + return buildRoutePlan(stmt, vschema, buildSelectPlan) case *sqlparser.Insert: - instruction, err = buildRoutePlan(stmt, vschema, buildInsertPlan) + return buildRoutePlan(stmt, vschema, buildInsertPlan) case *sqlparser.Update: - instruction, err = buildRoutePlan(stmt, vschema, buildUpdatePlan) + return buildRoutePlan(stmt, vschema, buildUpdatePlan) case *sqlparser.Delete: - instruction, err = buildRoutePlan(stmt, vschema, buildDeletePlan) + return buildRoutePlan(stmt, vschema, buildDeletePlan) case *sqlparser.Union: - instruction, err = buildRoutePlan(stmt, vschema, buildUnionPlan) + return buildRoutePlan(stmt, vschema, buildUnionPlan) case *sqlparser.DDL: if sqlparser.IsVschemaDDL(stmt) { - instruction, err = buildVSchemaDDLPlan(stmt, vschema) - } else { - instruction, err = buildDDLPlan(query, stmt, vschema) + return buildVSchemaDDLPlan(stmt, vschema) } + return buildDDLPlan(query, stmt, vschema) case *sqlparser.Use: - instruction, err = buildUsePlan(stmt, vschema) + return buildUsePlan(stmt, vschema) case *sqlparser.OtherRead, *sqlparser.OtherAdmin, *sqlparser.Explain: - instruction, err = buildOtherReadAndAdmin(query, vschema) + return buildOtherReadAndAdmin(query, vschema) case *sqlparser.Set: - instruction, err = buildSetPlan(stmt, vschema) + return buildSetPlan(stmt, vschema) case *sqlparser.DBDDL: return nil, vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: Database DDL %v", sqlparser.String(stmt)) case *sqlparser.Show, *sqlparser.SetTransaction: return nil, ErrPlanNotSupported case *sqlparser.Begin, *sqlparser.Commit, *sqlparser.Rollback: // Empty by design. Not executed by a plan - default: - return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "BUG: unexpected statement type: %T", stmt) } - if err != nil { - return nil, err - } - plan := &engine.Plan{ - Type: sqlparser.ASTToStatementType(stmt), - Original: query, - Instructions: instruction, - BindVarNeeds: bindVarNeeds, - } - return plan, nil -} - -func buildRoutePlan(stmt sqlparser.Statement, vschema ContextVSchema, f func(statement sqlparser.Statement, schema ContextVSchema) (engine.Primitive, error)) (engine.Primitive, error) { - if vschema.Destination() != nil { - return buildPlanForBypass(stmt, vschema) - } - return f(stmt, vschema) + return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "BUG: unexpected statement type: %T", stmt) } From bdfcedfa3e6112c452a82c89e7c7813e38556cf2 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Sat, 25 Apr 2020 17:23:04 +0200 Subject: [PATCH 03/12] Added planbuilding for Explain FORMAT=VITESS Signed-off-by: Andres Taylor --- go/vt/vtgate/engine/rows.go | 86 +++++++++++++++++++ go/vt/vtgate/planbuilder/builder.go | 11 ++- go/vt/vtgate/planbuilder/explain.go | 51 +++++++++++ .../planbuilder/testdata/other_read_cases.txt | 10 +++ 4 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 go/vt/vtgate/engine/rows.go create mode 100644 go/vt/vtgate/planbuilder/explain.go diff --git a/go/vt/vtgate/engine/rows.go b/go/vt/vtgate/engine/rows.go new file mode 100644 index 00000000000..924d4104e1b --- /dev/null +++ b/go/vt/vtgate/engine/rows.go @@ -0,0 +1,86 @@ +/* +Copyright 2020 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package engine + +import ( + "vitess.io/vitess/go/sqltypes" + querypb "vitess.io/vitess/go/vt/proto/query" +) + +var _ Primitive = (*Rows)(nil) + +//Rows simply returns a number or rows +type Rows struct { + rows [][]sqltypes.Value + fields []*querypb.Field + + noInputs + noTxNeeded +} + +//NewRowsPrimitive returns a new Rows primitie +func NewRowsPrimitive(rows [][]sqltypes.Value, fields []*querypb.Field) *Rows { + return &Rows{rows: rows, fields: fields} +} + +//RouteType implements the Primitive interface +func (r *Rows) RouteType() string { + return "Rows" +} + +//GetKeyspaceName implements the Primitive interface +func (r *Rows) GetKeyspaceName() string { + return "" +} + +//GetTableName implements the Primitive interface +func (r *Rows) GetTableName() string { + return "" +} + +//Execute implements the Primitive interface +func (r *Rows) Execute(VCursor, map[string]*querypb.BindVariable, bool) (*sqltypes.Result, error) { + return &sqltypes.Result{ + Fields: r.fields, + RowsAffected: uint64(len(r.rows)), + InsertID: 0, + Rows: nil, + }, nil +} + +//StreamExecute implements the Primitive interface +func (r *Rows) StreamExecute(vcursor VCursor, bindVars map[string]*querypb.BindVariable, wantields bool, callback func(*sqltypes.Result) error) error { + result, err := r.Execute(vcursor, bindVars, wantields) + if err != nil { + return err + } + return callback(result) +} + +//GetFields implements the Primitive interface +func (r *Rows) GetFields(VCursor, map[string]*querypb.BindVariable) (*sqltypes.Result, error) { + return &sqltypes.Result{ + Fields: r.fields, + RowsAffected: uint64(len(r.rows)), + InsertID: 0, + Rows: nil, + }, nil +} + +func (r *Rows) description() PrimitiveDescription { + return PrimitiveDescription{OperatorType: "Rows"} +} diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 98971ecaaac..ab4c3fd0b48 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -315,7 +315,16 @@ func createInstructionFor(query string, stmt sqlparser.Statement, vschema Contex return buildDDLPlan(query, stmt, vschema) case *sqlparser.Use: return buildUsePlan(stmt, vschema) - case *sqlparser.OtherRead, *sqlparser.OtherAdmin, *sqlparser.Explain: + case *sqlparser.Explain: + if stmt.Fmt == sqlparser.VitessStr { + innerInstruction, err := createInstructionFor(query, stmt.Statement, vschema) + if err != nil { + return nil, err + } + return buildExplainPlan(innerInstruction) + } + return buildOtherReadAndAdmin(query, vschema) + case *sqlparser.OtherRead, *sqlparser.OtherAdmin: return buildOtherReadAndAdmin(query, vschema) case *sqlparser.Set: return buildSetPlan(stmt, vschema) diff --git a/go/vt/vtgate/planbuilder/explain.go b/go/vt/vtgate/planbuilder/explain.go new file mode 100644 index 00000000000..613a271afd3 --- /dev/null +++ b/go/vt/vtgate/planbuilder/explain.go @@ -0,0 +1,51 @@ +/* +Copyright 2020 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package planbuilder + +import ( + "encoding/json" + "strings" + + "vitess.io/vitess/go/sqltypes" + querypb "vitess.io/vitess/go/vt/proto/query" + "vitess.io/vitess/go/vt/vtgate/engine" +) + +// Builds an explain-plan for the given Primitive +func buildExplainPlan(input engine.Primitive) (engine.Primitive, error) { + description := engine.PrimitiveToPlanDescription(input) + + indent := " " + prefix := "" + jsonByt, err := json.MarshalIndent(description, prefix, indent) + if err != nil { + return nil, err + } + + lines := strings.Split(string(jsonByt), "/n") + var rows [][]sqltypes.Value + for _, line := range lines { + rows = append(rows, []sqltypes.Value{sqltypes.NewVarChar(line)}) + } + + fields := []*querypb.Field{{ + Name: "description", + Type: querypb.Type_VARCHAR, + }} + + return engine.NewRowsPrimitive(rows, fields), nil +} diff --git a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt index 7262d3d43f2..492ca915fd5 100644 --- a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt @@ -16,6 +16,16 @@ } } +# Explain Vitess statement +"explain format=vitess select * from user" +{ + "QueryType": "OTHER", + "Original": "explain format=vitess select * from user", + "Instructions": { + "OperatorType": "Rows" + } +} + # Analyze statement "analyze table t1" { From 140029955ef4949165c14fe3d8cf568ac7fb2c33 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Sun, 26 Apr 2020 11:37:42 +0200 Subject: [PATCH 04/12] Fix plan builder Signed-off-by: Andres Taylor --- go/vt/vtgate/executor_test.go | 2 +- go/vt/vtgate/plan_executor_test.go | 2 +- go/vt/vtgate/planbuilder/builder.go | 1 + go/vt/vtgate/planbuilder/explain_test.go | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 go/vt/vtgate/planbuilder/explain_test.go diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index 950712b508e..ad26a84f3c8 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -1126,7 +1126,7 @@ func TestExecutorOther(t *testing.T) { "show tables", "analyze table t1", "describe t1", - "explain t1", + "explain select * from t1", "repair table t1", "optimize table t1", } diff --git a/go/vt/vtgate/plan_executor_test.go b/go/vt/vtgate/plan_executor_test.go index 1cb2d64e91f..8f036879fe2 100644 --- a/go/vt/vtgate/plan_executor_test.go +++ b/go/vt/vtgate/plan_executor_test.go @@ -1090,7 +1090,7 @@ func TestPlanExecutorOtherRead(t *testing.T) { stmts := []string{ "analyze table t1", "describe t1", - "explain t1", + "explain select * from t1", } for _, stmt := range stmts { diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index ab4c3fd0b48..5ad23694a1f 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -334,6 +334,7 @@ func createInstructionFor(query string, stmt sqlparser.Statement, vschema Contex return nil, ErrPlanNotSupported case *sqlparser.Begin, *sqlparser.Commit, *sqlparser.Rollback: // Empty by design. Not executed by a plan + return nil, nil } return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "BUG: unexpected statement type: %T", stmt) diff --git a/go/vt/vtgate/planbuilder/explain_test.go b/go/vt/vtgate/planbuilder/explain_test.go new file mode 100644 index 00000000000..a000285216d --- /dev/null +++ b/go/vt/vtgate/planbuilder/explain_test.go @@ -0,0 +1 @@ +package planbuilder From a43344447889722221df2802287013a7fc073f6f Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Sun, 26 Apr 2020 11:41:03 +0200 Subject: [PATCH 05/12] Make the EXPLAIN output prettier Signed-off-by: Andres Taylor --- go/vt/vtgate/planbuilder/explain.go | 85 ++++++++++--- go/vt/vtgate/planbuilder/explain_test.go | 150 +++++++++++++++++++++++ 2 files changed, 220 insertions(+), 15 deletions(-) diff --git a/go/vt/vtgate/planbuilder/explain.go b/go/vt/vtgate/planbuilder/explain.go index 613a271afd3..64f11e9b080 100644 --- a/go/vt/vtgate/planbuilder/explain.go +++ b/go/vt/vtgate/planbuilder/explain.go @@ -17,7 +17,6 @@ limitations under the License. package planbuilder import ( - "encoding/json" "strings" "vitess.io/vitess/go/sqltypes" @@ -25,27 +24,83 @@ import ( "vitess.io/vitess/go/vt/vtgate/engine" ) +func extractQuery(m map[string]interface{}) string { + queryObj, ok := m["Query"] + if !ok { + return "" + } + query, ok := queryObj.(string) + if !ok { + return "" + } + + return query +} + // Builds an explain-plan for the given Primitive func buildExplainPlan(input engine.Primitive) (engine.Primitive, error) { - description := engine.PrimitiveToPlanDescription(input) + descriptions := treeLines(engine.PrimitiveToPlanDescription(input)) - indent := " " - prefix := "" - jsonByt, err := json.MarshalIndent(description, prefix, indent) - if err != nil { - return nil, err + var rows [][]sqltypes.Value + for _, line := range descriptions { + var targetDest string + if line.descr.TargetDestination != nil { + targetDest = line.descr.TargetDestination.String() + } + rows = append(rows, []sqltypes.Value{ + sqltypes.NewVarChar(line.header + line.descr.OperatorType), + sqltypes.NewVarChar(line.descr.Variant), + sqltypes.NewVarChar(line.descr.Keyspace.Name), + sqltypes.NewVarChar(targetDest), + sqltypes.NewVarChar(line.descr.TargetTabletType.String()), + sqltypes.NewVarChar(extractQuery(line.descr.Other)), + }) } - lines := strings.Split(string(jsonByt), "/n") - var rows [][]sqltypes.Value - for _, line := range lines { - rows = append(rows, []sqltypes.Value{sqltypes.NewVarChar(line)}) + fields := []*querypb.Field{ + {Name: "operator", Type: querypb.Type_VARCHAR}, + {Name: "variant", Type: querypb.Type_VARCHAR}, + {Name: "keyspace", Type: querypb.Type_VARCHAR}, + {Name: "destination", Type: querypb.Type_VARCHAR}, + {Name: "tabletType", Type: querypb.Type_VARCHAR}, + {Name: "query", Type: querypb.Type_VARCHAR}, } - fields := []*querypb.Field{{ - Name: "description", - Type: querypb.Type_VARCHAR, + return engine.NewRowsPrimitive(rows, fields), nil +} + +type description struct { + header string + descr engine.PrimitiveDescription +} + +func treeLines(root engine.PrimitiveDescription) []description { + l := len(root.Inputs) - 1 + output := []description{{ + header: "", + descr: root, }} + for i, child := range root.Inputs { + childLines := treeLines(child) + var header string + var lastHdr string + if i == l { + header = "└─" + " " + lastHdr = strings.Repeat(" ", 3) + } else { + header = "├─" + " " + lastHdr = "│" + strings.Repeat(" ", 2) + } - return engine.NewRowsPrimitive(rows, fields), nil + for x, childLine := range childLines { + if x == 0 { + childLine.header = header + childLine.header + } else { + childLine.header = lastHdr + childLine.header + } + + output = append(output, childLine) + } + } + return output } diff --git a/go/vt/vtgate/planbuilder/explain_test.go b/go/vt/vtgate/planbuilder/explain_test.go index a000285216d..b607e8975cd 100644 --- a/go/vt/vtgate/planbuilder/explain_test.go +++ b/go/vt/vtgate/planbuilder/explain_test.go @@ -1 +1,151 @@ +/* +Copyright 2020 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package planbuilder + +import ( + "strings" + "testing" + + "vitess.io/vitess/go/test/utils" + "vitess.io/vitess/go/vt/vtgate/engine" +) + +type Descr = engine.PrimitiveDescription + +func TestTreeStructure(t *testing.T) { + var classical, popRock Descr + { + n1, n2 := node("Light"), node("Heavy") + n3, n4 := node("Piano"), node("Orchestra", n1, n2) + n5, n6 := node("Male"), node("Female") + n7, n8 := node("Opera", n5, n6), node("Chorus") + n9, n10 := node("Instrumental", n3, n4), node("Vocal", n7, n8) + classical = node("Classical", n9, n10) + } + { + n3 := node("Heavy metal") + n4, n5 := node("Dancing"), node("Soft") + n6, n7 := node("Rock", n3), node("Country", n4, n5) + n8, n9 := node("Late pop"), node("Disco") + n10, n11 := node("Soft techno"), node("Hard techno") + n12, n13 := node("Pop", n8, n9), node("Techno", n10, n11) + n14, n15 := node("Organic", n6, n7), node("Electronic", n12, n13) + popRock = node("Pop/Rock", n14, n15) + } + music := node("Music", classical, popRock) + + descriptions := treeLines(music) + + output := "" + for _, d := range descriptions { + output += d.header + d.descr.OperatorType + "\n" + } + want := + `Music +├─ Classical +│ ├─ Instrumental +│ │ ├─ Piano +│ │ └─ Orchestra +│ │ ├─ Light +│ │ └─ Heavy +│ └─ Vocal +│ ├─ Opera +│ │ ├─ Male +│ │ └─ Female +│ └─ Chorus +└─ Pop/Rock + ├─ Organic + │ ├─ Rock + │ │ └─ Heavy metal + │ └─ Country + │ ├─ Dancing + │ └─ Soft + └─ Electronic + ├─ Pop + │ ├─ Late pop + │ └─ Disco + └─ Techno + ├─ Soft techno + └─ Hard techno +` + + utils.MustMatch(t, want, output, "") +} + +func node(name string, inputs ...Descr) Descr { + return Descr{ + OperatorType: name, + Inputs: inputs, + } +} + +func TestSingleNode(t *testing.T) { + single := node("single") + + output := toString(treeLines(single)) + + utils.MustMatch(t, "single", output, "") +} + +func TestTwoNodes(t *testing.T) { + root := node("parent", node("child1"), node("child2")) + + descriptions := treeLines(root) + output := toString(descriptions) + + want := + `parent +├─ child1 +└─ child2` + utils.MustMatch(t, want, output, "") +} + +func TestThreeNodes(t *testing.T) { + /* + Electronic + ├─ Pop + │ ├─ Late pop + │ └─ Disco + └─ Techno + ├─ Soft techno + └─ Hard techno + */ + + pop := node("pop", node("late pop"), node("disco")) + techno := node("techno", node("soft techno"), node("hard techno")) + electronic := node("electronic", pop, techno) + + descriptions := treeLines(electronic) + output := toString(descriptions) + want := + `electronic +├─ pop +│ ├─ late pop +│ └─ disco +└─ techno + ├─ soft techno + └─ hard techno` + utils.MustMatch(t, want, output, "") +} + +func toString(descriptions []description) string { + output := "" + for _, d := range descriptions { + output += d.header + d.descr.OperatorType + "\n" + } + return strings.Trim(output, " \n\t") +} From ec946698d4f3ac3217d475042f8ebb27073bf871 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Sun, 26 Apr 2020 12:05:07 +0200 Subject: [PATCH 06/12] Update parser to allow DESCRIBE and DESC as synonyms for EXPLAIN Signed-off-by: Andres Taylor --- go/vt/sqlparser/parse_test.go | 11 +- go/vt/sqlparser/sql.go | 6498 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 39 +- go/vt/vtgate/engine/rows.go | 2 +- 4 files changed, 3309 insertions(+), 3241 deletions(-) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 41889bff68d..cccd32db9c0 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1373,11 +1373,11 @@ var ( input: "use ks@replica", output: "use `ks@replica`", }, { - input: "describe foobar", - output: "otherread", + input: "describe select * from t", + output: "explain select * from t", }, { - input: "desc foobar", - output: "otherread", + input: "desc select * from t", + output: "explain select * from t", }, { input: "explain select * from t", }, { @@ -1386,6 +1386,9 @@ var ( input: "explain format = json select * from t", }, { input: "explain format = vitess select * from t", + }, { + input: "describe format = vitess select * from t", + output: "explain format = vitess select * from t", }, { input: "explain delete from t", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index a4bc92779dd..9ed0586b882 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -824,439 +824,456 @@ var yyExca = [...]int{ 165, 314, 166, 314, -2, 302, - -1, 45, - 1, 971, - 356, 971, - -2, 323, - -1, 63, - 37, 346, - -2, 354, - -1, 321, - 37, 347, - -2, 359, + -1, 46, + 1, 975, + 356, 975, + -2, 329, + -1, 47, + 1, 975, + 356, 975, + -2, 328, + -1, 48, + 1, 975, + 356, 975, + -2, 327, + -1, 64, + 37, 350, + -2, 358, -1, 322, - 37, 348, - -2, 360, - -1, 337, - 116, 676, - -2, 672, + 37, 351, + -2, 363, + -1, 323, + 37, 352, + -2, 364, -1, 338, - 116, 677, - -2, 673, - -1, 407, - 86, 927, - -2, 67, + 116, 680, + -2, 676, + -1, 339, + 116, 681, + -2, 677, -1, 408, - 86, 844, + 86, 931, + -2, 67, + -1, 409, + 86, 848, -2, 68, - -1, 413, - 86, 812, - -2, 638, - -1, 415, - 86, 875, - -2, 640, - -1, 598, + -1, 414, + 86, 816, + -2, 642, + -1, 416, + 86, 879, + -2, 644, + -1, 600, 5, 34, - -2, 327, - -1, 723, - 1, 384, - 5, 384, - 12, 384, - 13, 384, - 14, 384, - 15, 384, - 17, 384, - 19, 384, - 30, 384, - 31, 384, - 44, 384, - 45, 384, - 46, 384, - 47, 384, - 48, 384, - 50, 384, - 51, 384, - 54, 384, - 55, 384, - 57, 384, - 58, 384, - 356, 384, - -2, 402, - -1, 726, + -2, 330, + -1, 725, + 1, 388, + 5, 388, + 12, 388, + 13, 388, + 14, 388, + 15, 388, + 17, 388, + 19, 388, + 30, 388, + 31, 388, + 44, 388, + 45, 388, + 46, 388, + 47, 388, + 48, 388, + 50, 388, + 51, 388, + 54, 388, + 55, 388, + 57, 388, + 58, 388, + 356, 388, + -2, 406, + -1, 728, 55, 49, 57, 49, -2, 53, - -1, 885, - 116, 679, - -2, 675, - -1, 1120, + -1, 887, + 116, 683, + -2, 679, + -1, 1122, 5, 35, - -2, 470, - -1, 1151, + -2, 474, + -1, 1153, 5, 34, - -2, 611, - -1, 1398, + -2, 615, + -1, 1400, 5, 35, - -2, 612, - -1, 1451, + -2, 616, + -1, 1453, 5, 34, - -2, 614, - -1, 1526, + -2, 618, + -1, 1528, 5, 35, - -2, 615, + -2, 619, } const yyPrivate = 57344 -const yyLast = 16387 +const yyLast = 16508 var yyAct = [...]int{ - 337, 1560, 1358, 1550, 1247, 1516, 1431, 1299, 1464, 1418, - 1154, 1172, 342, 368, 355, 1332, 974, 1001, 310, 1300, - 678, 1044, 1296, 1010, 997, 1198, 677, 3, 567, 1155, - 1306, 1312, 59, 1000, 82, 825, 910, 1271, 272, 917, - 292, 272, 1112, 412, 1224, 844, 725, 1215, 300, 1014, - 1098, 739, 972, 961, 976, 940, 887, 323, 719, 607, - 620, 613, 738, 401, 406, 720, 954, 536, 630, 272, - 82, 728, 1040, 537, 272, 340, 272, 692, 398, 851, - 309, 58, 301, 7, 270, 6, 5, 1553, 1063, 1537, - 556, 1030, 693, 1548, 1524, 302, 303, 304, 305, 63, - 1545, 308, 1062, 1359, 1536, 1523, 1288, 1390, 541, 84, - 85, 86, 1327, 1328, 1326, 400, 268, 264, 265, 266, - 538, 26, 540, 54, 29, 30, 329, 65, 66, 67, - 68, 69, 84, 85, 86, 991, 84, 85, 86, 992, - 993, 596, 740, 1061, 741, 1490, 643, 642, 652, 653, - 645, 646, 647, 648, 649, 650, 651, 644, 307, 380, - 654, 386, 387, 384, 385, 383, 382, 381, 306, 260, - 1206, 56, 258, 1023, 262, 388, 389, 573, 1186, 575, - 1024, 1185, 591, 1249, 1187, 1421, 592, 589, 590, 276, - 1031, 1381, 920, 1058, 1055, 1056, 279, 1054, 576, 298, - 595, 84, 85, 86, 286, 1379, 814, 584, 585, 813, - 594, 572, 574, 1547, 1251, 811, 1544, 1517, 1246, 955, - 1509, 557, 1564, 543, 1015, 1568, 262, 1252, 852, 853, - 1065, 1068, 818, 581, 802, 1243, 1250, 267, 284, 1322, - 1465, 1245, 1473, 546, 291, 812, 1321, 815, 1173, 1175, - 1320, 539, 275, 263, 578, 1467, 666, 667, 987, 272, - 548, 549, 1498, 1401, 272, 1017, 558, 1060, 261, 1075, - 272, 277, 1074, 1129, 1257, 1182, 272, 565, 1139, 1106, - 571, 82, 858, 734, 634, 82, 563, 82, 644, 1059, - 259, 654, 998, 82, 1272, 654, 1126, 570, 288, 280, - 855, 289, 290, 296, 849, 547, 845, 281, 283, 293, - 555, 278, 295, 294, 839, 627, 562, 1491, 1234, 629, - 1522, 1017, 564, 1466, 409, 553, 598, 1174, 580, 1064, - 1017, 629, 82, 1274, 1562, 569, 1031, 1563, 1507, 1561, - 582, 1244, 616, 1242, 1066, 1482, 615, 1474, 1472, 1230, - 1231, 1232, 84, 85, 86, 603, 604, 559, 560, 561, - 1310, 84, 85, 86, 742, 1016, 72, 1276, 602, 1280, - 55, 1275, 1290, 1273, 941, 84, 85, 86, 1278, 666, - 667, 621, 941, 601, 1136, 599, 600, 1277, 861, 862, - 550, 846, 551, 894, 1204, 552, 272, 272, 272, 840, - 1279, 1281, 666, 667, 73, 82, 804, 892, 893, 891, - 1124, 82, 1123, 1125, 542, 1512, 617, 568, 1233, 624, - 1528, 1016, 1427, 1238, 1235, 1226, 1236, 1229, 1345, 1225, - 1016, 628, 627, 1227, 1228, 1013, 1011, 1020, 1012, 1569, - 628, 627, 717, 1021, 726, 1009, 1015, 1237, 629, 718, - 647, 648, 649, 650, 651, 644, 857, 629, 654, 695, - 697, 699, 701, 703, 705, 706, 1426, 628, 627, 737, - 1219, 732, 628, 627, 696, 698, 727, 702, 704, 606, - 707, 1218, 1570, 583, 629, 586, 877, 879, 880, 629, - 1207, 597, 878, 544, 545, 856, 643, 642, 652, 653, - 645, 646, 647, 648, 649, 650, 651, 644, 1530, 1508, - 654, 257, 1445, 619, 628, 627, 1424, 1216, 643, 642, - 652, 653, 645, 646, 647, 648, 649, 650, 651, 644, - 1085, 629, 654, 84, 85, 86, 272, 1103, 1104, 1105, - 800, 82, 830, 803, 56, 805, 272, 272, 82, 82, - 82, 1113, 628, 627, 272, 606, 890, 272, 1479, 1292, - 272, 823, 824, 24, 272, 1478, 82, 1297, 535, 629, - 1309, 82, 82, 82, 272, 82, 82, 1341, 395, 396, - 1470, 1546, 750, 1532, 606, 82, 82, 84, 85, 86, - 1018, 912, 806, 807, 1309, 829, 1393, 84, 85, 86, - 816, 1189, 1387, 400, 1470, 1520, 822, 827, 642, 652, - 653, 645, 646, 647, 648, 649, 650, 651, 644, 82, - 835, 654, 84, 85, 86, 314, 272, 1470, 606, 1470, - 1499, 957, 82, 60, 863, 819, 643, 642, 652, 653, - 645, 646, 647, 648, 649, 650, 651, 644, 1470, 1469, - 654, 888, 1416, 1415, 1396, 911, 1403, 606, 958, 409, - 1400, 606, 1351, 1350, 913, 1347, 1348, 1347, 1346, 981, - 883, 729, 873, 870, 606, 870, 82, 26, 885, 872, - 643, 642, 652, 653, 645, 646, 647, 648, 649, 650, - 651, 644, 958, 606, 654, 922, 606, 922, 929, 932, - 881, 1149, 749, 748, 942, 1481, 1150, 924, 1099, 82, - 82, 358, 357, 360, 361, 362, 363, 272, 26, 1349, - 359, 364, 1099, 958, 1190, 272, 272, 56, 56, 272, - 272, 730, 990, 272, 272, 272, 82, 1142, 1141, 801, - 871, 870, 914, 915, 730, 729, 808, 809, 810, 82, - 537, 950, 951, 958, 859, 963, 966, 967, 968, 964, - 338, 965, 969, 956, 828, 1313, 1314, 1309, 56, 832, - 833, 834, 817, 836, 837, 731, 983, 733, 827, 735, - 1538, 982, 316, 841, 842, 984, 870, 1433, 731, 1248, - 729, 26, 1025, 980, 83, 1408, 1045, 985, 273, 989, - 988, 273, 1337, 272, 82, 1193, 82, 1041, 1067, 1313, - 1314, 344, 272, 272, 272, 272, 272, 1005, 272, 272, - 1450, 1046, 272, 82, 1036, 1035, 1434, 1048, 1555, 273, - 83, 1551, 56, 1339, 273, 1316, 273, 1297, 1220, 272, - 850, 56, 821, 1166, 272, 1164, 272, 272, 1167, 1049, - 1165, 272, 1319, 1318, 1163, 1032, 1033, 1034, 1069, 1070, - 1071, 1072, 1073, 1162, 1076, 1077, 1542, 1535, 1078, 1042, - 1043, 324, 272, 1082, 925, 926, 1256, 1087, 931, 934, - 935, 618, 1540, 1097, 325, 1080, 1096, 937, 1266, 884, - 1081, 622, 623, 327, 1090, 326, 1168, 1086, 967, 968, - 938, 1211, 885, 949, 747, 888, 952, 953, 643, 642, - 652, 653, 645, 646, 647, 648, 649, 650, 651, 644, - 608, 1091, 654, 1092, 1101, 566, 1203, 1051, 1514, 1394, - 1102, 1100, 609, 1513, 1448, 1201, 1195, 1429, 820, 1026, - 1027, 1028, 1029, 963, 966, 967, 968, 964, 1108, 965, - 969, 971, 317, 318, 311, 1037, 1038, 1039, 1095, 272, - 272, 272, 272, 272, 324, 1370, 1094, 312, 60, 1369, - 1156, 272, 1260, 1099, 272, 593, 1130, 325, 272, 1127, - 843, 1151, 272, 625, 321, 322, 327, 1557, 326, 1495, - 409, 1557, 1556, 1422, 854, 1135, 62, 64, 57, 1188, - 924, 82, 1050, 1002, 1052, 1, 1549, 1360, 1430, 1057, - 1194, 1515, 1463, 1331, 1199, 1199, 1008, 1157, 1191, 273, - 1160, 1079, 999, 1169, 273, 1158, 1159, 1392, 1161, 71, - 273, 1178, 1177, 1180, 1179, 1181, 273, 534, 70, 1506, - 1200, 83, 1183, 838, 579, 83, 1007, 83, 1006, 82, - 82, 1471, 1420, 83, 1019, 1210, 1205, 1212, 1213, 1214, - 1022, 1338, 1196, 1197, 1202, 1511, 755, 643, 642, 652, - 653, 645, 646, 647, 648, 649, 650, 651, 644, 82, - 753, 654, 754, 752, 1217, 757, 756, 751, 285, 404, - 970, 743, 83, 1047, 272, 626, 74, 1241, 1240, 1053, - 1239, 848, 1223, 282, 587, 588, 287, 82, 662, 1093, - 1184, 1117, 1118, 884, 410, 403, 1304, 860, 1208, 1209, - 612, 1368, 1259, 1134, 689, 911, 1254, 1255, 939, 1133, - 652, 653, 645, 646, 647, 648, 649, 650, 651, 644, - 1258, 343, 654, 876, 356, 353, 354, 1264, 865, 1148, - 636, 664, 1265, 82, 82, 341, 273, 273, 273, 333, - 1298, 1282, 1156, 1283, 1301, 83, 1289, 722, 715, 962, - 960, 83, 959, 399, 1315, 1090, 1311, 82, 721, 1303, - 869, 320, 1389, 885, 1489, 319, 936, 299, 28, 61, - 328, 82, 1317, 82, 82, 20, 19, 1199, 1199, 18, - 22, 17, 16, 15, 554, 1308, 32, 1323, 723, 23, - 1330, 1324, 1344, 14, 13, 12, 11, 10, 1334, 9, - 8, 272, 1335, 1336, 1329, 4, 21, 313, 25, 2, - 1325, 0, 0, 1342, 1343, 0, 0, 0, 0, 0, - 0, 272, 0, 0, 0, 335, 0, 82, 1222, 1361, - 82, 82, 82, 272, 0, 1002, 0, 0, 82, 0, - 0, 0, 0, 0, 0, 369, 53, 1352, 0, 0, - 0, 0, 0, 1353, 0, 0, 0, 1253, 0, 0, - 0, 0, 0, 1366, 1367, 1386, 0, 1355, 1354, 0, - 1356, 0, 0, 0, 0, 0, 273, 0, 1377, 1365, - 0, 83, 0, 0, 0, 0, 273, 273, 83, 83, - 83, 0, 0, 0, 273, 0, 0, 273, 0, 53, - 273, 1395, 1156, 0, 273, 0, 83, 315, 0, 0, - 82, 83, 83, 83, 273, 83, 83, 0, 82, 1405, - 0, 1404, 0, 1414, 0, 83, 83, 1191, 0, 0, - 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, - 82, 1263, 0, 643, 642, 652, 653, 645, 646, 647, - 648, 649, 650, 651, 644, 945, 1438, 654, 0, 83, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 1436, 83, 0, 1293, 0, 0, 0, 0, 0, - 0, 82, 82, 0, 82, 0, 0, 0, 1444, 82, - 1301, 82, 82, 82, 272, 0, 1449, 82, 1457, 0, - 1458, 1460, 1461, 1456, 0, 0, 1451, 0, 0, 0, - 1462, 0, 1468, 0, 82, 272, 83, 1475, 1423, 0, - 1425, 0, 0, 1483, 0, 1002, 0, 1002, 1476, 889, - 1477, 0, 0, 1374, 1375, 0, 1376, 0, 1496, 1378, - 0, 1380, 0, 0, 1301, 0, 1505, 1437, 0, 83, - 83, 82, 1504, 367, 1503, 0, 0, 273, 0, 1497, - 0, 1484, 82, 82, 0, 273, 273, 0, 1518, 273, - 273, 0, 0, 273, 273, 273, 83, 0, 0, 82, - 1519, 0, 0, 0, 0, 0, 1525, 81, 1156, 83, - 272, 0, 1263, 0, 1417, 0, 0, 0, 82, 0, - 0, 0, 0, 0, 0, 1534, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 723, 1541, 1539, 82, - 723, 0, 1385, 411, 723, 0, 577, 0, 1543, 0, - 577, 1428, 577, 1554, 0, 0, 1529, 0, 577, 1565, - 0, 0, 0, 273, 83, 53, 83, 0, 0, 0, - 0, 0, 273, 273, 273, 273, 273, 0, 273, 273, - 0, 53, 273, 83, 1002, 1384, 0, 0, 0, 0, - 0, 668, 669, 670, 671, 672, 673, 674, 675, 273, - 0, 0, 663, 0, 273, 665, 273, 273, 0, 0, - 0, 273, 0, 0, 1432, 0, 0, 0, 0, 0, - 643, 642, 652, 653, 645, 646, 647, 648, 649, 650, - 651, 644, 273, 676, 654, 680, 681, 682, 683, 684, - 685, 686, 687, 688, 0, 691, 694, 694, 694, 700, - 694, 694, 700, 694, 708, 709, 710, 711, 712, 713, - 714, 0, 724, 643, 642, 652, 653, 645, 646, 647, - 648, 649, 650, 651, 644, 0, 0, 654, 0, 0, - 0, 0, 0, 723, 0, 605, 643, 642, 652, 653, - 645, 646, 647, 648, 649, 650, 651, 644, 0, 0, - 654, 0, 0, 889, 645, 646, 647, 648, 649, 650, - 651, 644, 331, 0, 654, 0, 0, 0, 0, 273, - 273, 273, 273, 273, 0, 0, 0, 0, 0, 0, - 0, 273, 0, 0, 273, 0, 1432, 1002, 273, 0, - 0, 0, 273, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 411, 0, 0, 0, 411, 0, - 411, 83, 0, 0, 0, 0, 411, 0, 0, 0, - 723, 723, 723, 723, 723, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 723, 0, 0, 0, 0, - 0, 0, 0, 723, 0, 0, 1114, 0, 0, 0, - 0, 0, 0, 0, 0, 632, 577, 0, 0, 83, - 83, 0, 0, 577, 577, 577, 643, 642, 652, 653, - 645, 646, 647, 648, 649, 650, 651, 644, 0, 0, - 654, 577, 0, 0, 0, 0, 577, 577, 577, 83, - 577, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 577, 577, 0, 0, 273, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 411, 0, - 0, 0, 886, 0, 744, 895, 896, 897, 898, 899, - 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 83, 83, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 0, 0, 0, 83, 0, 0, - 946, 0, 0, 0, 0, 0, 680, 638, 0, 641, - 0, 83, 0, 83, 83, 655, 656, 657, 658, 659, - 660, 661, 0, 639, 640, 637, 643, 642, 652, 653, - 645, 646, 647, 648, 649, 650, 651, 644, 0, 0, - 654, 273, 0, 0, 0, 0, 0, 0, 0, 0, - 973, 0, 864, 0, 724, 0, 0, 0, 724, 0, - 0, 273, 0, 0, 0, 0, 0, 83, 0, 0, - 83, 83, 83, 273, 411, 0, 0, 0, 83, 0, - 0, 411, 411, 411, 610, 614, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, - 0, 0, 0, 0, 411, 411, 411, 635, 411, 411, - 0, 0, 0, 921, 923, 0, 0, 0, 411, 411, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 577, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 679, 0, 0, 0, 0, 0, 577, 0, - 83, 690, 866, 0, 0, 0, 0, 0, 83, 0, - 0, 0, 0, 0, 0, 632, 0, 0, 411, 0, - 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, - 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 724, 1109, 1110, - 1111, 0, 0, 0, 0, 0, 0, 0, 0, 916, - 1107, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 83, 83, 0, 83, 943, 0, 0, 0, 83, - 0, 83, 83, 83, 273, 0, 0, 83, 0, 0, - 0, 0, 947, 948, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 273, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 411, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1152, 1153, 411, 0, 724, 724, 724, 724, 724, 0, - 0, 83, 0, 0, 0, 0, 0, 0, 0, 973, - 0, 1176, 83, 83, 0, 0, 0, 724, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 0, 0, 411, 83, 411, - 0, 0, 831, 0, 0, 0, 0, 0, 0, 1115, - 0, 0, 0, 1116, 0, 0, 411, 0, 0, 83, - 1120, 1121, 1122, 0, 0, 0, 847, 1128, 0, 0, - 1131, 1132, 0, 0, 0, 577, 0, 0, 1138, 0, - 0, 0, 1140, 0, 0, 1143, 1144, 1145, 1146, 1147, - 0, 0, 411, 0, 0, 0, 0, 0, 0, 0, - 874, 875, 0, 0, 577, 0, 0, 0, 1171, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1267, - 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1284, 1285, 0, 1286, 1287, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1294, 1295, 0, - 0, 0, 0, 679, 0, 0, 927, 928, 0, 0, - 26, 27, 54, 29, 30, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1302, 0, 53, 46, - 0, 0, 0, 0, 31, 50, 51, 0, 0, 0, - 0, 943, 611, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 0, 0, 1340, - 56, 0, 0, 0, 0, 996, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 271, 0, 0, 297, 411, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1269, 1270, 0, 0, 0, 332, 0, - 0, 402, 0, 0, 0, 0, 271, 0, 271, 0, - 0, 0, 1372, 33, 34, 36, 35, 38, 0, 52, - 0, 0, 1221, 411, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 39, 47, 45, 0, 0, 48, 49, 37, - 0, 0, 411, 0, 1388, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 42, 0, 43, 44, 0, 1088, - 1089, 0, 614, 0, 0, 0, 0, 0, 0, 0, - 411, 0, 0, 0, 0, 0, 1410, 1411, 1412, 772, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 411, 0, 0, 0, 0, 577, 0, - 0, 0, 0, 943, 0, 0, 1305, 1307, 0, 0, - 1439, 1440, 1441, 1442, 1443, 1119, 0, 0, 1446, 1447, - 1371, 0, 0, 0, 0, 0, 0, 1373, 0, 55, - 1307, 0, 0, 0, 1137, 0, 0, 0, 1382, 1383, - 0, 0, 1302, 0, 411, 1452, 411, 1333, 0, 0, - 0, 760, 0, 0, 0, 0, 0, 0, 1397, 1398, - 1399, 0, 1402, 0, 0, 0, 0, 0, 0, 0, - 0, 271, 0, 0, 0, 1480, 271, 0, 0, 1413, - 0, 0, 271, 0, 0, 0, 0, 0, 271, 0, - 773, 0, 0, 0, 0, 0, 1302, 0, 53, 0, - 1357, 0, 0, 1362, 1363, 1364, 0, 0, 0, 0, - 0, 411, 0, 786, 789, 790, 791, 792, 793, 794, - 0, 795, 796, 797, 798, 799, 774, 775, 776, 777, - 758, 759, 787, 332, 761, 0, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 778, 779, 780, 781, - 782, 783, 784, 785, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 943, 0, 0, 1459, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1558, 0, - 0, 0, 0, 411, 0, 0, 0, 0, 0, 0, - 0, 1419, 1261, 1552, 0, 1485, 1486, 1487, 1488, 0, - 1492, 0, 1493, 1494, 0, 788, 411, 0, 271, 271, - 271, 0, 0, 411, 1500, 0, 1501, 1502, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1291, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1521, 0, 0, 0, 0, - 0, 0, 0, 1526, 1453, 1454, 0, 1455, 0, 0, - 0, 0, 1419, 0, 1419, 1419, 1419, 0, 0, 0, - 1333, 1531, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1419, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 338, 1552, 1562, 1360, 1518, 1156, 1003, 343, 1433, 1249, + 1466, 579, 1174, 1420, 1301, 356, 1334, 1157, 1302, 369, + 680, 1298, 1200, 976, 1046, 999, 60, 1012, 1100, 568, + 1308, 1314, 1002, 413, 83, 1273, 1226, 912, 273, 827, + 293, 273, 919, 679, 3, 727, 1114, 846, 1217, 1016, + 741, 978, 963, 889, 311, 942, 922, 721, 324, 622, + 722, 609, 740, 302, 615, 407, 1026, 399, 1042, 974, + 273, 83, 632, 402, 538, 273, 730, 273, 956, 537, + 853, 59, 410, 271, 341, 301, 695, 7, 6, 5, + 1065, 1555, 1539, 557, 1550, 694, 1526, 1547, 310, 1361, + 64, 1538, 1525, 1290, 1064, 1392, 542, 269, 265, 266, + 267, 303, 304, 305, 306, 401, 1328, 309, 994, 995, + 539, 26, 541, 55, 29, 30, 330, 993, 66, 67, + 68, 69, 70, 597, 85, 86, 87, 1032, 1329, 1330, + 336, 85, 86, 87, 308, 1063, 1492, 645, 644, 654, + 655, 647, 648, 649, 650, 651, 652, 653, 646, 1208, + 381, 656, 387, 388, 385, 386, 384, 383, 382, 261, + 307, 57, 259, 1274, 263, 1188, 389, 390, 1187, 592, + 742, 1189, 743, 593, 590, 591, 1025, 1251, 1423, 85, + 86, 87, 596, 1033, 1383, 1060, 1057, 1058, 1381, 1056, + 299, 816, 585, 586, 595, 815, 1549, 1253, 813, 574, + 1519, 576, 1276, 1546, 1248, 957, 1511, 1017, 582, 1467, + 1566, 1570, 1175, 1177, 558, 544, 263, 1254, 268, 854, + 855, 820, 1067, 1070, 1469, 804, 1019, 1324, 1323, 1245, + 1252, 814, 817, 573, 575, 1247, 1278, 1322, 1282, 1475, + 1277, 540, 1275, 547, 276, 264, 554, 1280, 1500, 1131, + 273, 549, 550, 1403, 1019, 273, 1279, 559, 262, 1062, + 1077, 273, 1259, 1076, 85, 86, 87, 273, 566, 1281, + 1283, 572, 83, 668, 669, 1128, 83, 1184, 83, 1141, + 260, 1061, 1108, 860, 83, 85, 86, 87, 736, 636, + 564, 1176, 1468, 1000, 656, 548, 85, 86, 87, 646, + 556, 847, 656, 581, 989, 857, 563, 1524, 1493, 1236, + 841, 551, 565, 552, 1033, 583, 553, 277, 570, 571, + 1127, 1066, 1564, 83, 280, 1565, 1018, 1563, 851, 630, + 629, 617, 287, 631, 600, 1246, 1068, 1244, 1509, 1292, + 1232, 1233, 1234, 896, 1476, 1474, 631, 1484, 629, 1347, + 618, 560, 561, 562, 1018, 668, 669, 894, 895, 893, + 56, 605, 606, 1126, 631, 1125, 285, 73, 621, 85, + 86, 87, 292, 623, 630, 629, 630, 629, 603, 601, + 602, 668, 669, 1294, 630, 629, 848, 273, 273, 273, + 1019, 631, 806, 631, 1206, 842, 83, 943, 1312, 278, + 569, 631, 83, 744, 536, 74, 604, 410, 619, 1235, + 943, 1514, 1138, 543, 1240, 1237, 1228, 1238, 1231, 626, + 1227, 85, 86, 87, 1229, 1230, 289, 281, 1530, 290, + 291, 297, 719, 1571, 728, 282, 284, 294, 1239, 279, + 296, 295, 1429, 1428, 645, 644, 654, 655, 647, 648, + 649, 650, 651, 652, 653, 646, 729, 720, 656, 698, + 700, 739, 704, 706, 1221, 709, 1220, 734, 697, 699, + 701, 703, 705, 707, 708, 1209, 1572, 670, 671, 672, + 673, 674, 675, 676, 677, 1105, 1106, 1107, 1532, 1510, + 1018, 863, 864, 545, 546, 1015, 1013, 57, 1014, 1115, + 1447, 879, 881, 882, 1022, 1011, 1017, 880, 1426, 892, + 1023, 859, 258, 1218, 1087, 577, 644, 654, 655, 647, + 648, 649, 650, 651, 652, 653, 646, 273, 832, 656, + 608, 802, 83, 1481, 805, 1480, 807, 273, 273, 83, + 83, 83, 1343, 630, 629, 273, 1472, 1548, 273, 1020, + 858, 273, 825, 826, 24, 273, 1311, 83, 1299, 608, + 631, 1311, 83, 83, 83, 273, 83, 83, 1398, 630, + 629, 1101, 752, 85, 86, 87, 83, 83, 1534, 608, + 396, 397, 808, 809, 924, 1395, 631, 831, 829, 1483, + 818, 1472, 1522, 401, 57, 1389, 824, 1351, 645, 644, + 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, + 837, 83, 656, 1472, 608, 821, 960, 315, 273, 85, + 86, 87, 1101, 914, 83, 645, 644, 654, 655, 647, + 648, 649, 650, 651, 652, 653, 646, 960, 886, 656, + 649, 650, 651, 652, 653, 646, 1192, 913, 656, 890, + 85, 86, 87, 983, 1191, 731, 915, 1472, 1501, 992, + 887, 1144, 865, 875, 1472, 1471, 885, 1311, 83, 1418, + 1417, 1143, 874, 645, 644, 654, 655, 647, 648, 649, + 650, 651, 652, 653, 646, 931, 934, 656, 1405, 608, + 26, 944, 1402, 608, 1353, 1352, 883, 1349, 1350, 947, + 26, 83, 83, 359, 358, 361, 362, 363, 364, 273, + 1349, 1348, 360, 365, 872, 608, 926, 273, 273, 960, + 608, 273, 273, 61, 1151, 273, 273, 273, 83, 1152, + 927, 928, 924, 608, 933, 936, 937, 751, 750, 410, + 57, 83, 538, 916, 917, 872, 952, 953, 731, 861, + 57, 1540, 1004, 819, 958, 737, 1435, 1027, 1410, 951, + 829, 959, 954, 955, 1250, 872, 873, 985, 1047, 888, + 1339, 1195, 897, 898, 899, 900, 901, 902, 903, 904, + 905, 906, 907, 908, 909, 910, 911, 317, 960, 1043, + 984, 991, 1038, 990, 986, 273, 83, 982, 83, 987, + 1069, 584, 732, 587, 273, 273, 273, 273, 273, 598, + 273, 273, 872, 26, 273, 83, 1048, 1028, 1029, 1030, + 1031, 1007, 965, 968, 969, 970, 966, 948, 967, 971, + 1037, 273, 1436, 1039, 1040, 1041, 273, 57, 273, 273, + 1051, 732, 1452, 273, 1315, 1316, 733, 1050, 735, 1071, + 1072, 1073, 1074, 1075, 1557, 1078, 1079, 1044, 1045, 1080, + 1553, 1321, 886, 57, 273, 1341, 1084, 1318, 965, 968, + 969, 970, 966, 339, 967, 971, 1082, 1320, 1315, 1316, + 1299, 1083, 1222, 852, 887, 733, 823, 731, 1088, 1165, + 1092, 1168, 1166, 1034, 1035, 1036, 1169, 1167, 1170, 1164, + 969, 970, 1544, 890, 1537, 1258, 1089, 84, 620, 1542, + 1099, 274, 1098, 1213, 274, 749, 1093, 1094, 567, 939, + 1205, 1516, 1102, 1104, 647, 648, 649, 650, 651, 652, + 653, 646, 940, 1103, 656, 610, 1515, 1110, 1450, 1203, + 1197, 1396, 973, 274, 84, 1431, 1053, 611, 274, 822, + 274, 273, 273, 273, 273, 273, 325, 1158, 318, 319, + 312, 1372, 325, 273, 1097, 313, 273, 1119, 1120, 326, + 273, 61, 1096, 1371, 273, 326, 624, 625, 328, 1262, + 327, 1101, 322, 323, 328, 1135, 327, 1137, 594, 1132, + 1153, 1190, 1129, 83, 1559, 1558, 65, 845, 627, 1193, + 1559, 1180, 1196, 1182, 1004, 1183, 1201, 1201, 1159, 926, + 607, 1162, 1160, 1161, 1171, 1163, 1497, 1424, 856, 63, + 58, 1179, 1, 1551, 1362, 1111, 1112, 1113, 1432, 1202, + 1059, 1517, 1465, 1185, 1333, 1010, 1001, 72, 535, 71, + 1508, 83, 83, 1181, 840, 580, 1009, 1008, 1212, 1473, + 1214, 1215, 1216, 1422, 1198, 1199, 1021, 803, 1207, 1024, + 1340, 1204, 1513, 757, 810, 811, 812, 755, 756, 754, + 759, 83, 758, 753, 286, 405, 972, 1219, 745, 1049, + 628, 75, 830, 1243, 1241, 1242, 273, 834, 835, 836, + 1055, 838, 839, 850, 283, 588, 589, 288, 664, 83, + 1095, 843, 844, 1186, 411, 404, 1306, 862, 614, 1225, + 1265, 1370, 1261, 1136, 691, 941, 344, 913, 878, 357, + 1256, 1257, 354, 355, 867, 1150, 638, 342, 334, 724, + 717, 1260, 964, 274, 962, 961, 400, 1317, 274, 1313, + 723, 871, 1266, 1295, 274, 83, 83, 1300, 1267, 1158, + 274, 321, 1291, 1285, 1284, 84, 1210, 1211, 1391, 84, + 1491, 84, 1303, 320, 938, 887, 45, 84, 300, 83, + 28, 1092, 62, 329, 20, 1310, 19, 18, 22, 17, + 16, 15, 555, 83, 1319, 83, 83, 32, 1305, 1201, + 1201, 1332, 23, 14, 1004, 13, 1004, 1326, 12, 1325, + 1327, 11, 10, 9, 1346, 8, 84, 4, 599, 21, + 314, 1337, 1338, 273, 1336, 1331, 654, 655, 647, 648, + 649, 650, 651, 652, 653, 646, 1344, 1345, 656, 25, + 2, 0, 0, 273, 0, 0, 0, 0, 0, 83, + 0, 1363, 83, 83, 83, 273, 1269, 1270, 0, 0, + 83, 0, 0, 0, 0, 0, 0, 0, 1354, 1286, + 1287, 1265, 1288, 1289, 0, 0, 0, 0, 0, 0, + 274, 274, 274, 0, 1296, 1297, 1368, 1369, 1357, 84, + 1355, 0, 0, 0, 0, 84, 0, 0, 0, 0, + 1367, 0, 0, 1379, 0, 1356, 0, 1358, 0, 0, + 0, 0, 0, 0, 0, 0, 345, 0, 0, 1158, + 0, 0, 1397, 0, 0, 0, 0, 0, 866, 1407, + 0, 1052, 83, 1054, 0, 0, 0, 1406, 1193, 0, + 83, 1376, 1377, 1004, 1378, 0, 1342, 1380, 0, 1382, + 1081, 0, 0, 0, 0, 83, 0, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 332, 0, 0, 0, + 0, 0, 0, 1434, 0, 0, 0, 0, 1440, 0, + 0, 1416, 0, 0, 0, 0, 0, 0, 0, 923, + 925, 0, 0, 1438, 0, 0, 0, 0, 0, 0, + 0, 0, 1419, 83, 83, 0, 83, 0, 0, 1374, + 0, 83, 0, 83, 83, 83, 273, 1451, 1303, 83, + 274, 0, 0, 0, 1459, 84, 1460, 1462, 1463, 0, + 274, 274, 84, 84, 84, 1470, 83, 273, 274, 1464, + 1477, 274, 0, 0, 274, 1453, 1446, 0, 274, 1485, + 84, 1478, 0, 1479, 0, 84, 84, 84, 274, 84, + 84, 1458, 0, 0, 0, 0, 0, 1498, 1507, 84, + 84, 0, 1303, 83, 0, 0, 1506, 1505, 0, 0, + 0, 0, 1486, 0, 83, 83, 1425, 0, 1427, 0, + 0, 1521, 1520, 0, 0, 1434, 1004, 0, 1499, 0, + 0, 83, 0, 1527, 84, 1158, 0, 0, 0, 0, + 0, 274, 273, 0, 0, 1439, 0, 84, 0, 0, + 83, 0, 0, 370, 54, 1394, 0, 1441, 1442, 1443, + 1444, 1445, 1536, 0, 0, 1448, 1449, 0, 0, 1541, + 1543, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1556, 1545, 0, 0, 1531, 0, 0, + 0, 84, 1567, 0, 0, 645, 644, 654, 655, 647, + 648, 649, 650, 651, 652, 653, 646, 1224, 54, 656, + 0, 0, 0, 0, 0, 0, 316, 0, 0, 1388, + 0, 0, 0, 0, 84, 84, 0, 0, 0, 0, + 0, 0, 274, 0, 0, 0, 1255, 0, 0, 0, + 274, 274, 0, 0, 274, 274, 0, 0, 274, 274, + 274, 84, 0, 0, 0, 1117, 0, 0, 0, 1118, + 0, 0, 0, 0, 84, 0, 1122, 1123, 1124, 0, + 0, 0, 0, 1130, 0, 0, 1133, 1134, 0, 0, + 0, 0, 0, 0, 1140, 0, 0, 666, 1142, 0, + 0, 1145, 1146, 1147, 1148, 1149, 0, 645, 644, 654, + 655, 647, 648, 649, 650, 651, 652, 653, 646, 612, + 616, 656, 0, 0, 1173, 0, 0, 0, 274, 84, + 0, 84, 0, 0, 0, 1560, 0, 274, 274, 274, + 274, 274, 637, 274, 274, 1387, 0, 274, 84, 0, + 0, 0, 0, 0, 725, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 274, 0, 0, 0, 0, 274, + 0, 274, 274, 0, 0, 0, 274, 681, 0, 0, + 0, 0, 640, 0, 643, 0, 692, 0, 0, 0, + 657, 658, 659, 660, 661, 662, 663, 274, 641, 642, + 639, 645, 644, 654, 655, 647, 648, 649, 650, 651, + 652, 653, 646, 0, 0, 656, 0, 0, 0, 0, + 0, 0, 0, 645, 644, 654, 655, 647, 648, 649, + 650, 651, 652, 653, 646, 0, 0, 656, 0, 0, + 0, 0, 0, 0, 0, 578, 0, 0, 0, 578, + 0, 578, 0, 0, 0, 0, 0, 578, 0, 0, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 1271, + 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 0, 274, 274, 274, 274, 274, 0, + 0, 0, 0, 0, 0, 0, 274, 0, 0, 274, + 1386, 665, 0, 274, 667, 0, 0, 274, 645, 644, + 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, + 1430, 0, 656, 0, 0, 0, 84, 0, 0, 368, + 0, 0, 678, 0, 682, 683, 684, 685, 686, 687, + 688, 689, 690, 0, 693, 696, 696, 696, 702, 696, + 696, 702, 696, 710, 711, 712, 713, 714, 715, 716, + 0, 726, 0, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 84, 0, 833, 645, 644, + 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, + 0, 0, 656, 0, 0, 0, 891, 0, 0, 0, + 412, 849, 0, 0, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1373, 0, 1268, 274, + 0, 0, 0, 1375, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 0, 1384, 1385, 876, 877, 645, 644, + 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, + 0, 0, 656, 0, 1399, 1400, 1401, 0, 1404, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1415, 0, 0, 84, 84, + 0, 0, 0, 725, 0, 0, 0, 725, 0, 681, + 0, 725, 929, 930, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 0, 0, 578, 0, 0, 0, 0, + 0, 0, 578, 578, 578, 0, 84, 0, 84, 84, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 578, 0, 0, 0, 0, 578, 578, 578, 0, 578, + 578, 0, 0, 0, 0, 0, 274, 0, 0, 578, + 578, 998, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1461, 0, 0, 0, 274, 0, 0, 0, + 0, 0, 84, 0, 0, 84, 84, 84, 274, 0, + 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, + 0, 1487, 1488, 1489, 1490, 0, 1494, 0, 1495, 1496, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1502, 412, 1503, 1504, 0, 412, 0, 412, 0, 0, + 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, + 725, 54, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1523, 0, 0, 0, 0, 682, 0, 0, 1528, + 891, 0, 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 634, 84, 0, 1090, 1091, 1533, 616, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, + 975, 0, 0, 0, 726, 0, 0, 0, 726, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1568, 1569, 0, 0, 0, 0, 0, 725, 725, 725, + 725, 725, 0, 0, 0, 0, 84, 84, 0, 84, + 0, 1121, 725, 0, 84, 412, 84, 84, 84, 274, + 725, 746, 84, 0, 0, 0, 0, 0, 0, 0, + 1139, 0, 1116, 0, 0, 0, 0, 0, 0, 84, + 274, 0, 0, 0, 0, 0, 0, 0, 0, 578, + 0, 578, 645, 644, 654, 655, 647, 648, 649, 650, + 651, 652, 653, 646, 0, 0, 656, 0, 578, 0, + 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 84, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 274, 0, 726, 0, 0, + 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, + 1109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 0, 412, 0, 0, 0, 0, 0, 0, 412, 412, + 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, + 0, 412, 412, 412, 0, 412, 412, 0, 1263, 0, + 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, + 1154, 1155, 0, 0, 726, 726, 726, 726, 726, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, + 0, 1178, 0, 0, 0, 1293, 0, 726, 0, 0, + 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 634, 0, 0, 412, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 918, 0, 0, + 0, 0, 0, 0, 0, 578, 0, 0, 0, 0, + 0, 0, 0, 945, 0, 0, 0, 0, 0, 272, + 0, 0, 298, 0, 0, 0, 0, 0, 0, 774, + 949, 950, 0, 0, 578, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 0, + 0, 403, 0, 0, 0, 0, 272, 412, 272, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1393, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 681, 0, 0, 0, 0, 1304, 0, 54, 1408, + 0, 762, 1409, 0, 0, 1411, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 412, 0, 412, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, + 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1437, 681, + 0, 0, 0, 788, 791, 792, 793, 794, 795, 796, + 412, 797, 798, 799, 800, 801, 776, 777, 778, 779, + 760, 761, 789, 0, 763, 0, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 780, 781, 782, 783, + 784, 785, 786, 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1566, 1567, 0, 0, 0, 0, - 0, 0, 0, 0, 1510, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 411, 411, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 271, 943, - 0, 0, 1527, 0, 0, 0, 0, 0, 271, 271, - 0, 0, 0, 0, 0, 0, 271, 0, 0, 271, - 0, 1533, 271, 0, 0, 0, 826, 0, 0, 0, - 0, 0, 0, 0, 0, 1391, 271, 0, 0, 0, - 0, 0, 1419, 0, 0, 679, 0, 0, 0, 0, - 0, 0, 0, 1406, 0, 0, 1407, 0, 0, 1409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 272, 0, 0, 1390, 0, 272, 26, 27, 55, + 29, 30, 272, 0, 0, 0, 0, 0, 272, 0, + 0, 0, 0, 0, 0, 790, 46, 0, 0, 0, + 0, 31, 51, 52, 0, 0, 1412, 1413, 1414, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 271, 0, - 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, + 0, 0, 0, 40, 0, 0, 0, 57, 0, 0, + 0, 0, 0, 333, 0, 0, 0, 0, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1435, 679, 0, 0, 0, 0, 0, 0, + 0, 0, 412, 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, 332, - 0, 0, 0, 0, 332, 332, 0, 0, 332, 332, - 332, 0, 0, 0, 944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 332, 332, 332, 332, 0, 271, - 0, 0, 0, 0, 0, 0, 0, 271, 978, 0, - 0, 271, 271, 0, 0, 271, 986, 826, 0, 0, + 0, 0, 1304, 0, 0, 1454, 0, 0, 0, 0, + 33, 34, 36, 35, 38, 0, 53, 0, 0, 0, + 1223, 412, 0, 0, 0, 0, 0, 0, 272, 272, + 272, 0, 0, 0, 0, 1482, 0, 0, 0, 39, + 47, 48, 0, 0, 49, 50, 37, 0, 0, 0, + 412, 0, 0, 0, 0, 0, 1304, 0, 54, 0, + 41, 42, 0, 43, 44, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 412, 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, 412, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 945, 0, 0, 1307, 1309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 1309, 0, + 0, 0, 0, 1554, 0, 0, 0, 0, 0, 0, + 0, 0, 412, 0, 412, 1335, 0, 0, 272, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 272, 272, + 0, 0, 0, 0, 0, 0, 272, 0, 0, 272, + 0, 0, 272, 0, 0, 0, 828, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1359, 0, + 0, 1364, 1365, 1366, 0, 0, 0, 0, 0, 412, 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, 271, 0, 0, 0, 0, - 0, 0, 0, 0, 271, 271, 271, 271, 271, 0, - 271, 271, 0, 0, 271, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, + 0, 0, 0, 0, 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 271, 0, 0, 0, 0, 271, 0, 1083, 1084, - 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, - 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 271, 0, 0, 0, 0, 0, + 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 412, 0, 0, 0, 0, 0, 0, 0, 1421, + 333, 0, 0, 0, 0, 333, 333, 0, 0, 333, + 333, 333, 0, 0, 412, 946, 0, 0, 0, 0, + 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 333, 333, 333, 333, 0, + 272, 0, 0, 0, 0, 0, 0, 0, 272, 980, + 0, 0, 272, 272, 0, 0, 272, 988, 828, 0, + 0, 0, 1455, 1456, 0, 1457, 0, 0, 0, 0, + 1421, 0, 1421, 1421, 1421, 0, 0, 0, 1335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1421, 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, 332, 332, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, + 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, + 0, 0, 1512, 0, 0, 272, 272, 272, 272, 272, + 0, 272, 272, 412, 412, 272, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 945, 0, 0, + 1529, 0, 272, 0, 0, 0, 0, 272, 0, 1085, + 1086, 0, 0, 0, 272, 0, 0, 0, 0, 1535, + 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 272, 0, 0, 0, 0, + 1421, 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, - 944, 271, 271, 271, 271, 271, 0, 0, 0, 0, - 0, 0, 0, 1170, 0, 0, 271, 0, 0, 0, - 978, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 946, 272, 272, 272, 272, 272, 0, 0, 0, + 0, 0, 0, 0, 1172, 0, 0, 272, 0, 0, + 0, 980, 0, 0, 0, 272, 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, @@ -1264,1304 +1281,1308 @@ var yyAct = [...]int{ 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, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 332, 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, 826, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 944, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 333, 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, 828, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 946, 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, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 271, 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, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 272, 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, 944, 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, 946, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 521, 509, 0, 466, 524, 439, 456, 532, 457, - 460, 497, 424, 479, 172, 454, 978, 443, 419, 450, - 420, 441, 468, 116, 472, 438, 511, 482, 523, 144, - 444, 530, 146, 488, 0, 218, 160, 271, 0, 0, - 470, 513, 477, 506, 465, 498, 429, 487, 525, 455, - 495, 526, 0, 0, 0, 84, 85, 86, 0, 1003, - 1004, 0, 0, 0, 0, 0, 106, 0, 492, 520, - 452, 494, 496, 418, 489, 0, 422, 425, 531, 516, - 447, 448, 1192, 0, 0, 0, 0, 0, 0, 469, - 478, 503, 463, 0, 0, 0, 0, 0, 944, 0, - 0, 445, 0, 486, 0, 0, 0, 426, 423, 0, - 0, 467, 271, 0, 0, 428, 0, 446, 504, 0, - 416, 125, 508, 515, 464, 274, 519, 462, 461, 522, - 191, 0, 222, 128, 143, 102, 140, 88, 98, 0, - 127, 169, 198, 202, 512, 442, 451, 110, 449, 200, - 179, 238, 485, 181, 199, 147, 228, 192, 237, 247, - 248, 225, 245, 252, 215, 91, 224, 236, 107, 210, - 93, 234, 221, 158, 137, 138, 92, 0, 196, 115, - 123, 112, 171, 231, 232, 111, 255, 99, 244, 95, - 100, 243, 165, 227, 235, 159, 152, 94, 233, 157, - 151, 142, 119, 130, 189, 149, 190, 131, 162, 161, - 163, 0, 421, 0, 219, 241, 256, 104, 437, 226, - 250, 251, 0, 0, 105, 124, 118, 188, 122, 164, - 101, 133, 216, 141, 148, 195, 254, 178, 201, 108, - 240, 217, 433, 436, 431, 432, 480, 481, 527, 528, - 529, 505, 427, 0, 434, 435, 0, 510, 517, 518, - 484, 87, 96, 145, 253, 193, 121, 242, 417, 430, - 114, 440, 0, 0, 453, 458, 459, 471, 473, 474, - 475, 476, 483, 490, 491, 493, 499, 500, 501, 502, - 507, 514, 533, 89, 90, 97, 103, 109, 113, 117, - 120, 126, 129, 132, 134, 135, 136, 139, 150, 153, - 154, 155, 156, 166, 167, 168, 170, 173, 174, 175, - 176, 177, 180, 182, 183, 184, 185, 186, 187, 194, - 197, 203, 204, 205, 206, 207, 208, 209, 211, 212, - 213, 214, 220, 223, 229, 230, 239, 246, 249, 521, - 509, 0, 466, 524, 439, 456, 532, 457, 460, 497, - 424, 479, 172, 454, 0, 443, 419, 450, 420, 441, - 468, 116, 472, 438, 511, 482, 523, 144, 444, 530, - 146, 488, 0, 218, 160, 0, 0, 0, 470, 513, - 477, 506, 465, 498, 429, 487, 525, 455, 495, 526, - 0, 0, 0, 84, 85, 86, 0, 1003, 1004, 0, - 0, 0, 0, 0, 106, 0, 492, 520, 452, 494, - 496, 418, 489, 0, 422, 425, 531, 516, 447, 448, - 0, 0, 0, 0, 0, 0, 0, 469, 478, 503, - 463, 0, 0, 0, 0, 0, 0, 0, 0, 445, - 0, 486, 0, 0, 0, 426, 423, 0, 0, 467, - 0, 0, 0, 428, 0, 446, 504, 0, 416, 125, - 508, 515, 464, 274, 519, 462, 461, 522, 191, 0, - 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, - 198, 202, 512, 442, 451, 110, 449, 200, 179, 238, - 485, 181, 199, 147, 228, 192, 237, 247, 248, 225, - 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, - 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, - 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, - 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, - 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, - 421, 0, 219, 241, 256, 104, 437, 226, 250, 251, - 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, - 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, - 433, 436, 431, 432, 480, 481, 527, 528, 529, 505, - 427, 0, 434, 435, 0, 510, 517, 518, 484, 87, - 96, 145, 253, 193, 121, 242, 417, 430, 114, 440, - 0, 0, 453, 458, 459, 471, 473, 474, 475, 476, - 483, 490, 491, 493, 499, 500, 501, 502, 507, 514, - 533, 89, 90, 97, 103, 109, 113, 117, 120, 126, - 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, - 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, - 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, - 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, - 220, 223, 229, 230, 239, 246, 249, 521, 509, 0, - 466, 524, 439, 456, 532, 457, 460, 497, 424, 479, - 172, 454, 0, 443, 419, 450, 420, 441, 468, 116, - 472, 438, 511, 482, 523, 144, 444, 530, 146, 488, - 0, 218, 160, 0, 0, 0, 470, 513, 477, 506, - 465, 498, 429, 487, 525, 455, 495, 526, 56, 0, - 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 0, 492, 520, 452, 494, 496, 418, - 489, 0, 422, 425, 531, 516, 447, 448, 0, 0, - 0, 0, 0, 0, 0, 469, 478, 503, 463, 0, - 0, 0, 0, 0, 0, 0, 0, 445, 0, 486, - 0, 0, 0, 426, 423, 0, 0, 467, 0, 0, - 0, 428, 0, 446, 504, 0, 416, 125, 508, 515, - 464, 274, 519, 462, 461, 522, 191, 0, 222, 128, - 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, - 512, 442, 451, 110, 449, 200, 179, 238, 485, 181, - 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, - 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, - 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, - 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, - 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, - 189, 149, 190, 131, 162, 161, 163, 0, 421, 0, - 219, 241, 256, 104, 437, 226, 250, 251, 0, 0, - 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, - 148, 195, 254, 178, 201, 108, 240, 217, 433, 436, - 431, 432, 480, 481, 527, 528, 529, 505, 427, 0, - 434, 435, 0, 510, 517, 518, 484, 87, 96, 145, - 253, 193, 121, 242, 417, 430, 114, 440, 0, 0, - 453, 458, 459, 471, 473, 474, 475, 476, 483, 490, - 491, 493, 499, 500, 501, 502, 507, 514, 533, 89, - 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, - 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, - 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, - 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, - 229, 230, 239, 246, 249, 521, 509, 0, 466, 524, - 439, 456, 532, 457, 460, 497, 424, 479, 172, 454, - 0, 443, 419, 450, 420, 441, 468, 116, 472, 438, - 511, 482, 523, 144, 444, 530, 146, 488, 0, 218, - 160, 0, 0, 0, 470, 513, 477, 506, 465, 498, - 429, 487, 525, 455, 495, 526, 0, 0, 0, 84, - 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 492, 520, 452, 494, 496, 418, 489, 0, - 422, 425, 531, 516, 447, 448, 0, 0, 0, 0, - 0, 0, 0, 469, 478, 503, 463, 0, 0, 0, - 0, 0, 0, 1262, 0, 445, 0, 486, 0, 0, - 0, 426, 423, 0, 0, 467, 0, 0, 0, 428, - 0, 446, 504, 0, 416, 125, 508, 515, 464, 274, - 519, 462, 461, 522, 191, 0, 222, 128, 143, 102, - 140, 88, 98, 0, 127, 169, 198, 202, 512, 442, - 451, 110, 449, 200, 179, 238, 485, 181, 199, 147, - 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, - 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, - 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, - 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, - 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, - 190, 131, 162, 161, 163, 0, 421, 0, 219, 241, - 256, 104, 437, 226, 250, 251, 0, 0, 105, 124, - 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, - 254, 178, 201, 108, 240, 217, 433, 436, 431, 432, - 480, 481, 527, 528, 529, 505, 427, 0, 434, 435, - 0, 510, 517, 518, 484, 87, 96, 145, 253, 193, - 121, 242, 417, 430, 114, 440, 0, 0, 453, 458, - 459, 471, 473, 474, 475, 476, 483, 490, 491, 493, - 499, 500, 501, 502, 507, 514, 533, 89, 90, 97, - 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, - 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, - 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, - 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, - 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, - 239, 246, 249, 521, 509, 0, 466, 524, 439, 456, - 532, 457, 460, 497, 424, 479, 172, 454, 0, 443, - 419, 450, 420, 441, 468, 116, 472, 438, 511, 482, - 523, 144, 444, 530, 146, 488, 0, 218, 160, 0, - 0, 0, 470, 513, 477, 506, 465, 498, 429, 487, - 525, 455, 495, 526, 0, 0, 0, 84, 85, 86, - 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, - 492, 520, 452, 494, 496, 418, 489, 0, 422, 425, - 531, 516, 447, 448, 0, 0, 0, 0, 0, 0, - 0, 469, 478, 503, 463, 0, 0, 0, 0, 0, - 0, 987, 0, 445, 0, 486, 0, 0, 0, 426, - 423, 0, 0, 467, 0, 0, 0, 428, 0, 446, - 504, 0, 416, 125, 508, 515, 464, 274, 519, 462, - 461, 522, 191, 0, 222, 128, 143, 102, 140, 88, - 98, 0, 127, 169, 198, 202, 512, 442, 451, 110, - 449, 200, 179, 238, 485, 181, 199, 147, 228, 192, - 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, - 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, - 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, - 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, - 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, - 162, 161, 163, 0, 421, 0, 219, 241, 256, 104, - 437, 226, 250, 251, 0, 0, 105, 124, 118, 188, - 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, - 201, 108, 240, 217, 433, 436, 431, 432, 480, 481, - 527, 528, 529, 505, 427, 0, 434, 435, 0, 510, - 517, 518, 484, 87, 96, 145, 253, 193, 121, 242, - 417, 430, 114, 440, 0, 0, 453, 458, 459, 471, - 473, 474, 475, 476, 483, 490, 491, 493, 499, 500, - 501, 502, 507, 514, 533, 89, 90, 97, 103, 109, - 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, - 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, - 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, - 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, - 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, - 249, 521, 509, 0, 466, 524, 439, 456, 532, 457, - 460, 497, 424, 479, 172, 454, 0, 443, 419, 450, - 420, 441, 468, 116, 472, 438, 511, 482, 523, 144, - 444, 530, 146, 488, 0, 218, 160, 0, 0, 0, - 470, 513, 477, 506, 465, 498, 429, 487, 525, 455, - 495, 526, 0, 0, 0, 84, 85, 86, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 492, 520, - 452, 494, 496, 418, 489, 0, 422, 425, 531, 516, - 447, 448, 0, 0, 0, 0, 0, 0, 0, 469, - 478, 503, 463, 0, 0, 0, 0, 0, 0, 882, - 0, 445, 0, 486, 0, 0, 0, 426, 423, 0, - 0, 467, 0, 0, 0, 428, 0, 446, 504, 0, - 416, 125, 508, 515, 464, 274, 519, 462, 461, 522, - 191, 0, 222, 128, 143, 102, 140, 88, 98, 0, - 127, 169, 198, 202, 512, 442, 451, 110, 449, 200, - 179, 238, 485, 181, 199, 147, 228, 192, 237, 247, - 248, 225, 245, 252, 215, 91, 224, 236, 107, 210, - 93, 234, 221, 158, 137, 138, 92, 0, 196, 115, - 123, 112, 171, 231, 232, 111, 255, 99, 244, 95, - 100, 243, 165, 227, 235, 159, 152, 94, 233, 157, - 151, 142, 119, 130, 189, 149, 190, 131, 162, 161, - 163, 0, 421, 0, 219, 241, 256, 104, 437, 226, - 250, 251, 0, 0, 105, 124, 118, 188, 122, 164, - 101, 133, 216, 141, 148, 195, 254, 178, 201, 108, - 240, 217, 433, 436, 431, 432, 480, 481, 527, 528, - 529, 505, 427, 0, 434, 435, 0, 510, 517, 518, - 484, 87, 96, 145, 253, 193, 121, 242, 417, 430, - 114, 440, 0, 0, 453, 458, 459, 471, 473, 474, - 475, 476, 483, 490, 491, 493, 499, 500, 501, 502, - 507, 514, 533, 89, 90, 97, 103, 109, 113, 117, - 120, 126, 129, 132, 134, 135, 136, 139, 150, 153, - 154, 155, 156, 166, 167, 168, 170, 173, 174, 175, - 176, 177, 180, 182, 183, 184, 185, 186, 187, 194, - 197, 203, 204, 205, 206, 207, 208, 209, 211, 212, - 213, 214, 220, 223, 229, 230, 239, 246, 249, 521, - 509, 0, 466, 524, 439, 456, 532, 457, 460, 497, - 424, 479, 172, 454, 0, 443, 419, 450, 420, 441, - 468, 116, 472, 438, 511, 482, 523, 144, 444, 530, - 146, 488, 0, 218, 160, 0, 0, 0, 470, 513, - 477, 506, 465, 498, 429, 487, 525, 455, 495, 526, - 0, 0, 0, 84, 85, 86, 0, 0, 0, 0, - 0, 0, 0, 0, 106, 0, 492, 520, 452, 494, - 496, 418, 489, 0, 422, 425, 531, 516, 447, 448, - 0, 0, 0, 0, 0, 0, 0, 469, 478, 503, - 463, 0, 0, 0, 0, 0, 0, 0, 0, 445, - 0, 486, 0, 0, 0, 426, 423, 0, 0, 467, - 0, 0, 0, 428, 0, 446, 504, 0, 416, 125, - 508, 515, 464, 274, 519, 462, 461, 522, 191, 0, - 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, - 198, 202, 512, 442, 451, 110, 449, 200, 179, 238, - 485, 181, 199, 147, 228, 192, 237, 247, 248, 225, - 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, - 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, - 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, - 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, - 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, - 421, 0, 219, 241, 256, 104, 437, 226, 250, 251, - 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, - 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, - 433, 436, 431, 432, 480, 481, 527, 528, 529, 505, - 427, 0, 434, 435, 0, 510, 517, 518, 484, 87, - 96, 145, 253, 193, 121, 242, 417, 430, 114, 440, - 0, 0, 453, 458, 459, 471, 473, 474, 475, 476, - 483, 490, 491, 493, 499, 500, 501, 502, 507, 514, - 533, 89, 90, 97, 103, 109, 113, 117, 120, 126, - 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, - 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, - 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, - 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, - 220, 223, 229, 230, 239, 246, 249, 521, 509, 0, - 466, 524, 439, 456, 532, 457, 460, 497, 424, 479, - 172, 454, 0, 443, 419, 450, 420, 441, 468, 116, - 472, 438, 511, 482, 523, 144, 444, 530, 146, 488, - 0, 218, 160, 0, 0, 0, 470, 513, 477, 506, - 465, 498, 429, 487, 525, 455, 495, 526, 0, 0, - 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 0, 492, 520, 452, 494, 496, 418, - 489, 0, 422, 425, 531, 516, 447, 448, 0, 0, - 0, 0, 0, 0, 0, 469, 478, 503, 463, 0, - 0, 0, 0, 0, 0, 0, 0, 445, 0, 486, - 0, 0, 0, 426, 423, 0, 0, 467, 0, 0, - 0, 428, 0, 446, 504, 0, 416, 125, 508, 515, - 464, 274, 519, 462, 461, 522, 191, 0, 222, 128, - 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, - 512, 442, 451, 110, 449, 200, 179, 238, 485, 181, - 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, - 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, - 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, - 232, 111, 255, 99, 244, 95, 414, 243, 165, 227, - 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, - 189, 149, 190, 131, 162, 161, 163, 0, 421, 0, - 219, 241, 256, 104, 437, 226, 250, 251, 0, 0, - 105, 124, 118, 188, 122, 415, 413, 133, 216, 141, - 148, 195, 254, 178, 201, 108, 240, 217, 433, 436, - 431, 432, 480, 481, 527, 528, 529, 505, 427, 0, - 434, 435, 0, 510, 517, 518, 484, 87, 96, 145, - 253, 193, 121, 242, 417, 430, 114, 440, 0, 0, - 453, 458, 459, 471, 473, 474, 475, 476, 483, 490, - 491, 493, 499, 500, 501, 502, 507, 514, 533, 89, - 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, - 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, - 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, - 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, - 229, 230, 239, 246, 249, 521, 509, 0, 466, 524, - 439, 456, 532, 457, 460, 497, 424, 479, 172, 454, - 0, 443, 419, 450, 420, 441, 468, 116, 472, 438, - 511, 482, 523, 144, 444, 530, 146, 488, 0, 218, - 160, 0, 0, 0, 470, 513, 477, 506, 465, 498, - 429, 487, 525, 455, 495, 526, 0, 0, 0, 84, - 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 492, 520, 452, 494, 496, 418, 489, 0, - 422, 425, 531, 516, 447, 448, 0, 0, 0, 0, - 0, 0, 0, 469, 478, 503, 463, 0, 0, 0, - 0, 0, 0, 0, 0, 445, 0, 486, 0, 0, - 0, 426, 423, 0, 0, 467, 0, 0, 0, 428, - 0, 446, 504, 0, 416, 125, 508, 515, 464, 274, - 519, 462, 461, 522, 191, 0, 222, 128, 143, 102, - 140, 88, 98, 0, 127, 169, 198, 202, 512, 442, - 451, 110, 449, 200, 179, 238, 485, 181, 199, 147, - 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, - 224, 736, 107, 210, 93, 234, 221, 158, 137, 138, - 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, - 255, 99, 244, 95, 414, 243, 165, 227, 235, 159, - 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, - 190, 131, 162, 161, 163, 0, 421, 0, 219, 241, - 256, 104, 437, 226, 250, 251, 0, 0, 105, 124, - 118, 188, 122, 415, 413, 133, 216, 141, 148, 195, - 254, 178, 201, 108, 240, 217, 433, 436, 431, 432, - 480, 481, 527, 528, 529, 505, 427, 0, 434, 435, - 0, 510, 517, 518, 484, 87, 96, 145, 253, 193, - 121, 242, 417, 430, 114, 440, 0, 0, 453, 458, - 459, 471, 473, 474, 475, 476, 483, 490, 491, 493, - 499, 500, 501, 502, 507, 514, 533, 89, 90, 97, - 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, - 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, - 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, - 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, - 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, - 239, 246, 249, 521, 509, 0, 466, 524, 439, 456, - 532, 457, 460, 497, 424, 479, 172, 454, 0, 443, - 419, 450, 420, 441, 468, 116, 472, 438, 511, 482, - 523, 144, 444, 530, 146, 488, 0, 218, 160, 0, - 0, 0, 470, 513, 477, 506, 465, 498, 429, 487, - 525, 455, 495, 526, 0, 0, 0, 84, 85, 86, - 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, - 492, 520, 452, 494, 496, 418, 489, 0, 422, 425, - 531, 516, 447, 448, 0, 0, 0, 0, 0, 0, - 0, 469, 478, 503, 463, 0, 0, 0, 0, 0, - 0, 0, 0, 445, 0, 486, 0, 0, 0, 426, - 423, 0, 0, 467, 0, 0, 0, 428, 0, 446, - 504, 0, 416, 125, 508, 515, 464, 274, 519, 462, - 461, 522, 191, 0, 222, 128, 143, 102, 140, 88, - 98, 0, 127, 169, 198, 202, 512, 442, 451, 110, - 449, 200, 179, 238, 485, 181, 199, 147, 228, 192, - 237, 247, 248, 225, 245, 252, 215, 91, 224, 405, - 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, - 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, - 244, 95, 414, 243, 165, 227, 235, 159, 152, 94, - 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, - 162, 161, 163, 0, 421, 0, 219, 241, 256, 104, - 437, 226, 250, 251, 0, 0, 105, 124, 118, 188, - 122, 415, 413, 408, 407, 141, 148, 195, 254, 178, - 201, 108, 240, 217, 433, 436, 431, 432, 480, 481, - 527, 528, 529, 505, 427, 0, 434, 435, 0, 510, - 517, 518, 484, 87, 96, 145, 253, 193, 121, 242, - 417, 430, 114, 440, 0, 0, 453, 458, 459, 471, - 473, 474, 475, 476, 483, 490, 491, 493, 499, 500, - 501, 502, 507, 514, 533, 89, 90, 97, 103, 109, - 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, - 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, - 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, - 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, - 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, - 249, 172, 0, 0, 918, 0, 339, 0, 0, 0, - 116, 0, 336, 0, 0, 0, 144, 919, 379, 146, - 0, 0, 218, 160, 0, 0, 0, 0, 0, 370, - 371, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 0, 0, 84, 85, 86, 358, 357, 360, 361, 362, - 363, 0, 0, 106, 359, 364, 365, 366, 0, 0, - 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 349, 330, 0, 0, 0, - 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 125, 392, - 0, 0, 274, 0, 0, 390, 0, 191, 0, 222, - 128, 143, 102, 140, 88, 98, 0, 127, 169, 198, - 202, 0, 0, 0, 110, 0, 200, 179, 238, 0, - 181, 199, 147, 228, 192, 237, 247, 248, 225, 245, - 252, 215, 91, 224, 236, 107, 210, 93, 234, 221, - 158, 137, 138, 92, 0, 196, 115, 123, 112, 171, - 231, 232, 111, 255, 99, 244, 95, 100, 243, 165, - 227, 235, 159, 152, 94, 233, 157, 151, 142, 119, - 130, 189, 149, 190, 131, 162, 161, 163, 0, 0, - 0, 219, 241, 256, 104, 0, 226, 250, 251, 0, - 0, 105, 124, 118, 188, 122, 164, 101, 133, 216, - 141, 148, 195, 254, 178, 201, 108, 240, 217, 380, - 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, - 373, 374, 375, 377, 0, 388, 389, 376, 87, 96, - 145, 253, 193, 121, 242, 0, 0, 114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 97, 103, 109, 113, 117, 120, 126, 129, - 132, 134, 135, 136, 139, 150, 153, 154, 155, 156, - 166, 167, 168, 170, 173, 174, 175, 176, 177, 180, - 182, 183, 184, 185, 186, 187, 194, 197, 203, 204, - 205, 206, 207, 208, 209, 211, 212, 213, 214, 220, - 223, 229, 230, 239, 246, 249, 172, 0, 0, 0, - 0, 339, 0, 0, 0, 116, 0, 336, 0, 0, - 0, 144, 0, 379, 146, 0, 0, 218, 160, 0, - 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, - 0, 0, 994, 0, 56, 0, 0, 84, 85, 86, - 358, 357, 360, 361, 362, 363, 0, 0, 106, 359, - 364, 365, 366, 995, 0, 0, 334, 351, 0, 378, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 349, 0, 0, 0, 0, 393, 0, 350, 0, 0, - 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 125, 392, 0, 0, 274, 0, 0, - 390, 0, 191, 0, 222, 128, 143, 102, 140, 88, - 98, 0, 127, 169, 198, 202, 0, 0, 0, 110, - 0, 200, 179, 238, 0, 181, 199, 147, 228, 192, - 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, - 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, - 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, - 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, - 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, - 162, 161, 163, 0, 0, 0, 219, 241, 256, 104, - 0, 226, 250, 251, 0, 0, 105, 124, 118, 188, - 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, - 201, 108, 240, 217, 380, 391, 386, 387, 384, 385, - 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, - 388, 389, 376, 87, 96, 145, 253, 193, 121, 242, - 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 97, 103, 109, - 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, - 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, - 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, - 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, - 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, - 249, 172, 0, 0, 0, 0, 339, 0, 0, 0, - 116, 0, 336, 0, 0, 0, 144, 0, 379, 146, - 0, 0, 218, 160, 0, 0, 0, 0, 0, 370, - 371, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 0, 606, 84, 85, 86, 358, 357, 360, 361, 362, - 363, 0, 0, 106, 359, 364, 365, 366, 0, 0, - 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 349, 0, 0, 0, 0, - 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 125, 392, - 0, 0, 274, 0, 0, 390, 0, 191, 0, 222, - 128, 143, 102, 140, 88, 98, 0, 127, 169, 198, - 202, 0, 0, 0, 110, 0, 200, 179, 238, 0, - 181, 199, 147, 228, 192, 237, 247, 248, 225, 245, - 252, 215, 91, 224, 236, 107, 210, 93, 234, 221, - 158, 137, 138, 92, 0, 196, 115, 123, 112, 171, - 231, 232, 111, 255, 99, 244, 95, 100, 243, 165, - 227, 235, 159, 152, 94, 233, 157, 151, 142, 119, - 130, 189, 149, 190, 131, 162, 161, 163, 0, 0, - 0, 219, 241, 256, 104, 0, 226, 250, 251, 0, - 0, 105, 124, 118, 188, 122, 164, 101, 133, 216, - 141, 148, 195, 254, 178, 201, 108, 240, 217, 380, - 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, - 373, 374, 375, 377, 0, 388, 389, 376, 87, 96, - 145, 253, 193, 121, 242, 0, 0, 114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 97, 103, 109, 113, 117, 120, 126, 129, - 132, 134, 135, 136, 139, 150, 153, 154, 155, 156, - 166, 167, 168, 170, 173, 174, 175, 176, 177, 180, - 182, 183, 184, 185, 186, 187, 194, 197, 203, 204, - 205, 206, 207, 208, 209, 211, 212, 213, 214, 220, - 223, 229, 230, 239, 246, 249, 172, 0, 0, 0, - 0, 339, 0, 0, 0, 116, 0, 336, 0, 0, - 0, 144, 0, 379, 146, 0, 0, 218, 160, 0, - 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 84, 85, 86, - 358, 357, 360, 361, 362, 363, 0, 0, 106, 359, - 364, 365, 366, 0, 0, 0, 334, 351, 0, 378, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 349, 330, 0, 0, 0, 393, 0, 350, 0, 0, - 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 125, 392, 0, 0, 274, 0, 0, - 390, 0, 191, 0, 222, 128, 143, 102, 140, 88, - 98, 0, 127, 169, 198, 202, 0, 0, 0, 110, - 0, 200, 179, 238, 0, 181, 199, 147, 228, 192, - 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, - 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, - 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, - 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, - 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, - 162, 161, 163, 0, 0, 0, 219, 241, 256, 104, - 0, 226, 250, 251, 0, 0, 105, 124, 118, 188, - 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, - 201, 108, 240, 217, 380, 391, 386, 387, 384, 385, - 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, - 388, 389, 376, 87, 96, 145, 253, 193, 121, 242, - 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 97, 103, 109, - 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, - 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, - 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, - 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, - 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, - 249, 172, 0, 0, 0, 0, 339, 0, 0, 0, - 116, 0, 336, 0, 0, 0, 144, 0, 379, 146, - 0, 0, 218, 160, 0, 0, 0, 0, 0, 370, - 371, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 0, 0, 84, 85, 86, 358, 933, 360, 361, 362, - 363, 0, 0, 106, 359, 364, 365, 366, 0, 0, - 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 348, 349, 330, 0, 0, 0, - 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 125, 392, - 0, 0, 274, 0, 0, 390, 0, 191, 0, 222, - 128, 143, 102, 140, 88, 98, 0, 127, 169, 198, - 202, 0, 0, 0, 110, 0, 200, 179, 238, 0, - 181, 199, 147, 228, 192, 237, 247, 248, 225, 245, - 252, 215, 91, 224, 236, 107, 210, 93, 234, 221, - 158, 137, 138, 92, 0, 196, 115, 123, 112, 171, - 231, 232, 111, 255, 99, 244, 95, 100, 243, 165, - 227, 235, 159, 152, 94, 233, 157, 151, 142, 119, - 130, 189, 149, 190, 131, 162, 161, 163, 0, 0, - 0, 219, 241, 256, 104, 0, 226, 250, 251, 0, - 0, 105, 124, 118, 188, 122, 164, 101, 133, 216, - 141, 148, 195, 254, 178, 201, 108, 240, 217, 380, - 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, - 373, 374, 375, 377, 0, 388, 389, 376, 87, 96, - 145, 253, 193, 121, 242, 0, 0, 114, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 90, 97, 103, 109, 113, 117, 120, 126, 129, - 132, 134, 135, 136, 139, 150, 153, 154, 155, 156, - 166, 167, 168, 170, 173, 174, 175, 176, 177, 180, - 182, 183, 184, 185, 186, 187, 194, 197, 203, 204, - 205, 206, 207, 208, 209, 211, 212, 213, 214, 220, - 223, 229, 230, 239, 246, 249, 172, 0, 0, 0, - 0, 339, 0, 0, 0, 116, 0, 336, 0, 0, - 0, 144, 0, 379, 146, 0, 0, 218, 160, 0, - 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 84, 85, 86, - 358, 930, 360, 361, 362, 363, 0, 0, 106, 359, - 364, 365, 366, 0, 0, 0, 334, 351, 0, 378, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, - 349, 330, 0, 0, 0, 393, 0, 350, 0, 0, - 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 125, 392, 0, 0, 274, 0, 0, - 390, 0, 191, 0, 222, 128, 143, 102, 140, 88, - 98, 0, 127, 169, 198, 202, 0, 0, 0, 110, - 0, 200, 179, 238, 0, 181, 199, 147, 228, 192, - 237, 247, 248, 225, 245, 252, 215, 91, 224, 236, - 107, 210, 93, 234, 221, 158, 137, 138, 92, 0, - 196, 115, 123, 112, 171, 231, 232, 111, 255, 99, - 244, 95, 100, 243, 165, 227, 235, 159, 152, 94, - 233, 157, 151, 142, 119, 130, 189, 149, 190, 131, - 162, 161, 163, 0, 0, 0, 219, 241, 256, 104, - 0, 226, 250, 251, 0, 0, 105, 124, 118, 188, - 122, 164, 101, 133, 216, 141, 148, 195, 254, 178, - 201, 108, 240, 217, 380, 391, 386, 387, 384, 385, - 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, - 388, 389, 376, 87, 96, 145, 253, 193, 121, 242, - 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 97, 103, 109, - 113, 117, 120, 126, 129, 132, 134, 135, 136, 139, - 150, 153, 154, 155, 156, 166, 167, 168, 170, 173, - 174, 175, 176, 177, 180, 182, 183, 184, 185, 186, - 187, 194, 197, 203, 204, 205, 206, 207, 208, 209, - 211, 212, 213, 214, 220, 223, 229, 230, 239, 246, - 249, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 172, 0, 0, 0, 0, 339, 0, - 0, 0, 116, 0, 336, 0, 0, 0, 144, 0, - 379, 146, 0, 0, 218, 160, 0, 0, 0, 0, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 84, 85, 86, 358, 357, 360, - 361, 362, 363, 0, 0, 106, 359, 364, 365, 366, - 0, 0, 0, 334, 351, 0, 378, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, - 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, - 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 392, 0, 0, 274, 0, 0, 390, 0, 191, - 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, - 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, - 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, - 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, - 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, - 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, - 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, - 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, - 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, - 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, - 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, - 217, 380, 391, 386, 387, 384, 385, 383, 382, 381, - 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, - 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, - 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, - 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, - 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, - 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, - 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, - 0, 0, 0, 339, 0, 0, 0, 116, 0, 336, - 0, 0, 0, 144, 0, 379, 146, 0, 0, 218, - 160, 0, 0, 0, 0, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 0, 84, - 85, 86, 358, 357, 360, 361, 362, 363, 0, 0, - 106, 359, 364, 365, 366, 0, 0, 0, 334, 351, - 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 348, 349, 0, 0, 0, 0, 393, 0, 350, - 0, 0, 345, 346, 347, 352, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 392, 0, 0, 274, - 0, 0, 390, 0, 191, 0, 222, 128, 143, 102, - 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, - 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, - 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, - 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, - 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, - 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, - 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, - 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, - 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, - 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, - 254, 178, 201, 108, 240, 217, 380, 391, 386, 387, - 384, 385, 383, 382, 381, 394, 372, 373, 374, 375, - 377, 0, 388, 389, 376, 87, 96, 145, 253, 193, - 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, - 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, - 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, - 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, - 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, - 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, - 239, 246, 249, 172, 0, 0, 0, 0, 0, 0, - 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, - 379, 146, 0, 0, 218, 160, 0, 0, 0, 0, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 84, 85, 86, 358, 357, 360, - 361, 362, 363, 0, 0, 106, 359, 364, 365, 366, - 0, 0, 0, 0, 351, 0, 378, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, - 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, - 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 392, 0, 0, 274, 0, 0, 390, 0, 191, - 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, - 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, - 238, 1559, 181, 199, 147, 228, 192, 237, 247, 248, - 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, - 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, - 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, - 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, - 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, - 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, - 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, - 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, - 217, 380, 391, 386, 387, 384, 385, 383, 382, 381, - 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, - 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, - 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, - 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, - 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, - 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, - 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, - 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, - 0, 0, 0, 144, 0, 379, 146, 0, 0, 218, - 160, 0, 0, 0, 0, 0, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 606, 84, - 85, 86, 358, 357, 360, 361, 362, 363, 0, 0, - 106, 359, 364, 365, 366, 0, 0, 0, 0, 351, - 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 348, 349, 0, 0, 0, 0, 393, 0, 350, - 0, 0, 345, 346, 347, 352, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 392, 0, 0, 274, - 0, 0, 390, 0, 191, 0, 222, 128, 143, 102, - 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, - 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, - 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, - 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, - 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, - 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, - 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, - 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, - 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, - 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, - 254, 178, 201, 108, 240, 217, 380, 391, 386, 387, - 384, 385, 383, 382, 381, 394, 372, 373, 374, 375, - 377, 0, 388, 389, 376, 87, 96, 145, 253, 193, - 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, - 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, - 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, - 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, - 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, - 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, - 239, 246, 249, 172, 0, 0, 0, 0, 0, 0, - 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, - 379, 146, 0, 0, 218, 160, 0, 0, 0, 0, - 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 84, 85, 86, 358, 357, 360, - 361, 362, 363, 0, 0, 106, 359, 364, 365, 366, - 0, 0, 0, 0, 351, 0, 378, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, - 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, - 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 392, 0, 0, 274, 0, 0, 390, 0, 191, - 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, - 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, - 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, - 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, - 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, - 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, - 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, - 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, - 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, - 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, - 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, - 217, 380, 391, 386, 387, 384, 385, 383, 382, 381, - 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, - 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, - 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, - 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, - 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, - 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, - 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, - 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, - 0, 0, 0, 144, 0, 0, 146, 0, 0, 218, - 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 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, 643, 642, 652, - 653, 645, 646, 647, 648, 649, 650, 651, 644, 0, - 0, 654, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 0, 0, 0, 274, - 0, 0, 0, 0, 191, 0, 222, 128, 143, 102, - 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, - 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, - 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, - 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, - 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, - 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, - 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, - 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, - 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, - 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, - 254, 178, 201, 108, 240, 217, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 87, 96, 145, 253, 193, - 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, - 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, - 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, - 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, - 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, - 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, - 239, 246, 249, 172, 0, 0, 0, 631, 0, 0, - 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, - 0, 146, 0, 0, 218, 160, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 85, 86, 0, 633, 0, - 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, - 0, 628, 627, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 629, 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, - 125, 0, 0, 0, 274, 0, 0, 0, 0, 191, - 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, - 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, - 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, - 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, - 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, - 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, - 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, - 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, - 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, - 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, - 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, - 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, - 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, - 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, - 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, - 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, - 214, 220, 223, 229, 230, 239, 246, 249, 172, 0, - 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, - 0, 0, 0, 144, 0, 0, 146, 0, 0, 218, - 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 0, 0, 0, 0, 76, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 125, 78, 79, 0, 75, - 0, 0, 0, 80, 191, 0, 222, 128, 143, 102, - 140, 88, 98, 0, 127, 169, 198, 202, 0, 0, - 0, 110, 0, 200, 179, 238, 0, 181, 199, 147, - 228, 192, 237, 247, 248, 225, 245, 252, 215, 91, - 224, 236, 107, 210, 93, 234, 221, 158, 137, 138, - 92, 0, 196, 115, 123, 112, 171, 231, 232, 111, - 255, 99, 244, 95, 100, 243, 165, 227, 235, 159, - 152, 94, 233, 157, 151, 142, 119, 130, 189, 149, - 190, 131, 162, 161, 163, 0, 0, 0, 219, 241, - 256, 104, 0, 226, 250, 251, 0, 0, 105, 124, - 118, 188, 122, 164, 101, 133, 216, 141, 148, 195, - 254, 178, 201, 108, 240, 217, 0, 77, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 87, 96, 145, 253, 193, - 121, 242, 0, 0, 114, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 90, 97, - 103, 109, 113, 117, 120, 126, 129, 132, 134, 135, - 136, 139, 150, 153, 154, 155, 156, 166, 167, 168, - 170, 173, 174, 175, 176, 177, 180, 182, 183, 184, - 185, 186, 187, 194, 197, 203, 204, 205, 206, 207, - 208, 209, 211, 212, 213, 214, 220, 223, 229, 230, - 239, 246, 249, 172, 0, 0, 0, 977, 0, 0, - 0, 0, 116, 0, 0, 0, 0, 0, 144, 0, - 0, 146, 0, 0, 218, 160, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 85, 86, 0, 979, 0, - 0, 0, 0, 0, 0, 106, 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, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 125, 0, 0, 0, 274, 0, 0, 0, 0, 191, - 0, 222, 128, 143, 102, 140, 88, 98, 0, 127, - 169, 198, 202, 0, 0, 0, 110, 0, 200, 179, - 238, 0, 181, 199, 147, 228, 192, 237, 247, 248, - 225, 245, 252, 215, 91, 224, 236, 107, 210, 93, - 234, 221, 158, 137, 138, 92, 0, 196, 115, 123, - 112, 171, 231, 232, 111, 255, 99, 244, 95, 100, - 243, 165, 227, 235, 159, 152, 94, 233, 157, 151, - 142, 119, 130, 189, 149, 190, 131, 162, 161, 163, - 0, 0, 0, 219, 241, 256, 104, 0, 226, 250, - 251, 0, 0, 105, 124, 118, 188, 122, 164, 101, - 133, 216, 141, 148, 195, 254, 178, 201, 108, 240, - 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 96, 145, 253, 193, 121, 242, 0, 0, 114, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 97, 103, 109, 113, 117, 120, - 126, 129, 132, 134, 135, 136, 139, 150, 153, 154, - 155, 156, 166, 167, 168, 170, 173, 174, 175, 176, - 177, 180, 182, 183, 184, 185, 186, 187, 194, 197, - 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, - 214, 220, 223, 229, 230, 239, 246, 249, 26, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, - 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, - 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, - 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, - 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, - 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, - 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, - 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, - 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, - 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, - 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, - 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, - 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, - 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, - 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, - 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, - 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, - 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, - 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, - 229, 230, 239, 246, 249, 172, 0, 0, 0, 977, - 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, - 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 86, 0, - 979, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, - 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, - 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, - 200, 179, 238, 0, 975, 199, 147, 228, 192, 237, - 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, - 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, - 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, - 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, - 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, - 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, - 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, - 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, - 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, - 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, - 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, - 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, - 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, - 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, - 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, - 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, - 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, - 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 85, 86, 0, 0, 867, 0, 0, 868, - 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, - 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, - 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, - 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, - 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, - 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, - 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, - 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, - 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, - 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, - 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, - 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, - 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, - 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, - 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, - 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, - 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, - 229, 230, 239, 246, 249, 172, 0, 0, 0, 0, - 0, 0, 0, 0, 116, 0, 746, 0, 0, 0, - 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 86, 0, - 745, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, - 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, - 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, - 200, 179, 238, 0, 181, 199, 147, 228, 192, 237, - 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, - 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, - 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, - 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, - 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, - 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, - 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, - 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, - 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, - 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, - 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, - 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, - 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, - 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, - 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, - 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, - 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, - 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 606, 84, 85, 86, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, - 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, - 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, - 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, - 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, - 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, - 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, - 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, - 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, - 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, - 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, - 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, - 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, - 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, - 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, - 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, - 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, - 229, 230, 239, 246, 249, 172, 0, 0, 0, 0, - 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, - 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 0, 84, 85, 86, 0, - 0, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, - 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, - 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, - 200, 179, 238, 0, 181, 199, 147, 228, 192, 237, - 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, - 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, - 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, - 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, - 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, - 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, - 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, - 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, - 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, - 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, - 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, - 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, - 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, - 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, - 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, - 172, 0, 0, 0, 0, 0, 0, 0, 0, 116, - 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, - 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 85, 86, 0, 979, 0, 0, 0, 0, - 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, - 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, - 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, - 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, - 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, - 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, - 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, - 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, - 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, - 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, - 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, - 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, - 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, - 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, - 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, - 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, - 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, - 229, 230, 239, 246, 249, 172, 0, 0, 0, 0, - 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, - 144, 0, 0, 146, 0, 0, 218, 160, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 85, 86, 0, - 633, 0, 0, 0, 0, 0, 0, 106, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 125, 0, 0, 0, 274, 0, 0, 0, - 0, 191, 0, 222, 128, 143, 102, 140, 88, 98, - 0, 127, 169, 198, 202, 0, 0, 0, 110, 0, - 200, 179, 238, 0, 181, 199, 147, 228, 192, 237, - 247, 248, 225, 245, 252, 215, 91, 224, 236, 107, - 210, 93, 234, 221, 158, 137, 138, 92, 0, 196, - 115, 123, 112, 171, 231, 232, 111, 255, 99, 244, - 95, 100, 243, 165, 227, 235, 159, 152, 94, 233, - 157, 151, 142, 119, 130, 189, 149, 190, 131, 162, - 161, 163, 0, 0, 0, 219, 241, 256, 104, 0, - 226, 250, 251, 0, 0, 105, 124, 118, 188, 122, - 164, 101, 133, 216, 141, 148, 195, 254, 178, 201, - 108, 240, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 96, 145, 253, 193, 121, 242, 0, - 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 97, 103, 109, 113, - 117, 120, 126, 129, 132, 134, 135, 136, 139, 150, - 153, 154, 155, 156, 166, 167, 168, 170, 173, 174, - 175, 176, 177, 180, 182, 183, 184, 185, 186, 187, - 194, 197, 203, 204, 205, 206, 207, 208, 209, 211, - 212, 213, 214, 220, 223, 229, 230, 239, 246, 249, - 172, 0, 0, 0, 0, 0, 0, 0, 716, 116, - 0, 0, 0, 0, 0, 144, 0, 0, 146, 0, - 0, 218, 160, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 85, 86, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, - 0, 274, 0, 0, 0, 0, 191, 0, 222, 128, - 143, 102, 140, 88, 98, 0, 127, 169, 198, 202, - 0, 0, 0, 110, 0, 200, 179, 238, 0, 181, - 199, 147, 228, 192, 237, 247, 248, 225, 245, 252, - 215, 91, 224, 236, 107, 210, 93, 234, 221, 158, - 137, 138, 92, 0, 196, 115, 123, 112, 171, 231, - 232, 111, 255, 99, 244, 95, 100, 243, 165, 227, - 235, 159, 152, 94, 233, 157, 151, 142, 119, 130, - 189, 149, 190, 131, 162, 161, 163, 0, 0, 0, - 219, 241, 256, 104, 0, 226, 250, 251, 0, 0, - 105, 124, 118, 188, 122, 164, 101, 133, 216, 141, - 148, 195, 254, 178, 201, 108, 240, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 96, 145, - 253, 193, 121, 242, 0, 0, 114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 97, 103, 109, 113, 117, 120, 126, 129, 132, - 134, 135, 136, 139, 150, 153, 154, 155, 156, 166, - 167, 168, 170, 173, 174, 175, 176, 177, 180, 182, - 183, 184, 185, 186, 187, 194, 197, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 220, 223, - 229, 230, 239, 246, 249, 397, 0, 0, 0, 0, - 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, - 0, 116, 0, 0, 0, 0, 0, 144, 0, 0, - 146, 0, 0, 218, 160, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 86, 0, 0, 0, 0, - 0, 0, 0, 0, 106, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, - 0, 0, 0, 274, 0, 0, 0, 0, 191, 0, - 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, - 198, 202, 0, 0, 0, 110, 0, 200, 179, 238, - 0, 181, 199, 147, 228, 192, 237, 247, 248, 225, - 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, - 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, - 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, - 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, - 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, - 0, 0, 219, 241, 256, 104, 0, 226, 250, 251, - 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, - 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, - 96, 145, 253, 193, 121, 242, 0, 0, 114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 90, 97, 103, 109, 113, 117, 120, 126, - 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, - 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, - 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, - 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, - 220, 223, 229, 230, 239, 246, 249, 172, 0, 0, - 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, - 0, 0, 144, 0, 0, 146, 0, 0, 218, 160, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, - 86, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 125, 0, 269, 0, 274, 0, - 0, 0, 0, 191, 0, 222, 128, 143, 102, 140, - 88, 98, 0, 127, 169, 198, 202, 0, 0, 0, - 110, 0, 200, 179, 238, 0, 181, 199, 147, 228, - 192, 237, 247, 248, 225, 245, 252, 215, 91, 224, - 236, 107, 210, 93, 234, 221, 158, 137, 138, 92, - 0, 196, 115, 123, 112, 171, 231, 232, 111, 255, - 99, 244, 95, 100, 243, 165, 227, 235, 159, 152, - 94, 233, 157, 151, 142, 119, 130, 189, 149, 190, - 131, 162, 161, 163, 0, 0, 0, 219, 241, 256, - 104, 0, 226, 250, 251, 0, 0, 105, 124, 118, - 188, 122, 164, 101, 133, 216, 141, 148, 195, 254, - 178, 201, 108, 240, 217, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 96, 145, 253, 193, 121, - 242, 0, 0, 114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 90, 97, 103, - 109, 113, 117, 120, 126, 129, 132, 134, 135, 136, - 139, 150, 153, 154, 155, 156, 166, 167, 168, 170, - 173, 174, 175, 176, 177, 180, 182, 183, 184, 185, - 186, 187, 194, 197, 203, 204, 205, 206, 207, 208, - 209, 211, 212, 213, 214, 220, 223, 229, 230, 239, - 246, 249, 172, 0, 0, 0, 0, 0, 0, 0, - 0, 116, 0, 0, 0, 0, 0, 144, 0, 0, - 146, 0, 0, 218, 160, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 86, 0, 0, 0, 0, - 0, 0, 0, 0, 106, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, - 0, 0, 0, 274, 0, 0, 0, 0, 191, 0, - 222, 128, 143, 102, 140, 88, 98, 0, 127, 169, - 198, 202, 0, 0, 0, 110, 0, 200, 179, 238, - 0, 181, 199, 147, 228, 192, 237, 247, 248, 225, - 245, 252, 215, 91, 224, 236, 107, 210, 93, 234, - 221, 158, 137, 138, 92, 0, 196, 115, 123, 112, - 171, 231, 232, 111, 255, 99, 244, 95, 100, 243, - 165, 227, 235, 159, 152, 94, 233, 157, 151, 142, - 119, 130, 189, 149, 190, 131, 162, 161, 163, 0, - 0, 0, 219, 241, 256, 104, 0, 226, 250, 251, - 0, 0, 105, 124, 118, 188, 122, 164, 101, 133, - 216, 141, 148, 195, 254, 178, 201, 108, 240, 217, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, - 96, 145, 253, 193, 121, 242, 0, 0, 114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 90, 97, 103, 109, 113, 117, 120, 126, - 129, 132, 134, 135, 136, 139, 150, 153, 154, 155, - 156, 166, 167, 168, 170, 173, 174, 175, 176, 177, - 180, 182, 183, 184, 185, 186, 187, 194, 197, 203, - 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, - 220, 223, 229, 230, 239, 246, 249, + 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, 522, 510, 0, 467, 525, 440, 457, 533, + 458, 461, 498, 425, 480, 173, 455, 980, 444, 420, + 451, 421, 442, 469, 117, 473, 439, 512, 483, 524, + 145, 445, 531, 147, 489, 0, 219, 161, 272, 0, + 0, 471, 514, 478, 507, 466, 499, 430, 488, 526, + 456, 496, 527, 0, 0, 0, 85, 86, 87, 0, + 1005, 1006, 0, 0, 0, 0, 0, 107, 0, 493, + 521, 453, 495, 497, 419, 490, 0, 423, 426, 532, + 517, 448, 449, 1194, 0, 0, 0, 0, 0, 0, + 470, 479, 504, 464, 0, 0, 0, 0, 0, 946, + 0, 0, 446, 0, 487, 0, 0, 0, 427, 424, + 0, 0, 468, 272, 0, 0, 429, 0, 447, 505, + 0, 417, 126, 509, 516, 465, 275, 520, 463, 462, + 523, 192, 0, 223, 129, 144, 103, 141, 89, 99, + 0, 128, 170, 199, 203, 513, 443, 452, 111, 450, + 201, 180, 239, 486, 182, 200, 148, 229, 193, 238, + 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, + 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, + 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, + 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, + 158, 152, 143, 120, 131, 190, 150, 191, 132, 163, + 162, 164, 0, 422, 0, 220, 242, 257, 105, 438, + 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, + 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, + 109, 241, 218, 434, 437, 432, 433, 481, 482, 528, + 529, 530, 506, 428, 0, 435, 436, 0, 511, 518, + 519, 485, 88, 97, 146, 254, 194, 122, 243, 418, + 431, 115, 441, 0, 0, 454, 459, 460, 472, 474, + 475, 476, 477, 484, 491, 492, 494, 500, 501, 502, + 503, 508, 515, 534, 90, 91, 98, 104, 110, 114, + 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, + 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, + 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, + 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, + 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, + 522, 510, 0, 467, 525, 440, 457, 533, 458, 461, + 498, 425, 480, 173, 455, 0, 444, 420, 451, 421, + 442, 469, 117, 473, 439, 512, 483, 524, 145, 445, + 531, 147, 489, 0, 219, 161, 0, 0, 0, 471, + 514, 478, 507, 466, 499, 430, 488, 526, 456, 496, + 527, 0, 0, 0, 85, 86, 87, 0, 1005, 1006, + 0, 0, 0, 0, 0, 107, 0, 493, 521, 453, + 495, 497, 419, 490, 0, 423, 426, 532, 517, 448, + 449, 0, 0, 0, 0, 0, 0, 0, 470, 479, + 504, 464, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 0, 487, 0, 0, 0, 427, 424, 0, 0, + 468, 0, 0, 0, 429, 0, 447, 505, 0, 417, + 126, 509, 516, 465, 275, 520, 463, 462, 523, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 513, 443, 452, 111, 450, 201, 180, + 239, 486, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 422, 0, 220, 242, 257, 105, 438, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 434, 437, 432, 433, 481, 482, 528, 529, 530, + 506, 428, 0, 435, 436, 0, 511, 518, 519, 485, + 88, 97, 146, 254, 194, 122, 243, 418, 431, 115, + 441, 0, 0, 454, 459, 460, 472, 474, 475, 476, + 477, 484, 491, 492, 494, 500, 501, 502, 503, 508, + 515, 534, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 522, 510, + 0, 467, 525, 440, 457, 533, 458, 461, 498, 425, + 480, 173, 455, 0, 444, 420, 451, 421, 442, 469, + 117, 473, 439, 512, 483, 524, 145, 445, 531, 147, + 489, 0, 219, 161, 0, 0, 0, 471, 514, 478, + 507, 466, 499, 430, 488, 526, 456, 496, 527, 57, + 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 107, 0, 493, 521, 453, 495, 497, + 419, 490, 0, 423, 426, 532, 517, 448, 449, 0, + 0, 0, 0, 0, 0, 0, 470, 479, 504, 464, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, + 487, 0, 0, 0, 427, 424, 0, 0, 468, 0, + 0, 0, 429, 0, 447, 505, 0, 417, 126, 509, + 516, 465, 275, 520, 463, 462, 523, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 513, 443, 452, 111, 450, 201, 180, 239, 486, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 422, + 0, 220, 242, 257, 105, 438, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 434, + 437, 432, 433, 481, 482, 528, 529, 530, 506, 428, + 0, 435, 436, 0, 511, 518, 519, 485, 88, 97, + 146, 254, 194, 122, 243, 418, 431, 115, 441, 0, + 0, 454, 459, 460, 472, 474, 475, 476, 477, 484, + 491, 492, 494, 500, 501, 502, 503, 508, 515, 534, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 522, 510, 0, 467, + 525, 440, 457, 533, 458, 461, 498, 425, 480, 173, + 455, 0, 444, 420, 451, 421, 442, 469, 117, 473, + 439, 512, 483, 524, 145, 445, 531, 147, 489, 0, + 219, 161, 0, 0, 0, 471, 514, 478, 507, 466, + 499, 430, 488, 526, 456, 496, 527, 0, 0, 0, + 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 107, 0, 493, 521, 453, 495, 497, 419, 490, + 0, 423, 426, 532, 517, 448, 449, 0, 0, 0, + 0, 0, 0, 0, 470, 479, 504, 464, 0, 0, + 0, 0, 0, 0, 1264, 0, 446, 0, 487, 0, + 0, 0, 427, 424, 0, 0, 468, 0, 0, 0, + 429, 0, 447, 505, 0, 417, 126, 509, 516, 465, + 275, 520, 463, 462, 523, 192, 0, 223, 129, 144, + 103, 141, 89, 99, 0, 128, 170, 199, 203, 513, + 443, 452, 111, 450, 201, 180, 239, 486, 182, 200, + 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, + 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, + 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, + 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, + 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, + 150, 191, 132, 163, 162, 164, 0, 422, 0, 220, + 242, 257, 105, 438, 227, 251, 252, 0, 0, 106, + 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, + 196, 255, 179, 202, 109, 241, 218, 434, 437, 432, + 433, 481, 482, 528, 529, 530, 506, 428, 0, 435, + 436, 0, 511, 518, 519, 485, 88, 97, 146, 254, + 194, 122, 243, 418, 431, 115, 441, 0, 0, 454, + 459, 460, 472, 474, 475, 476, 477, 484, 491, 492, + 494, 500, 501, 502, 503, 508, 515, 534, 90, 91, + 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, + 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, + 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, + 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, + 231, 240, 247, 250, 522, 510, 0, 467, 525, 440, + 457, 533, 458, 461, 498, 425, 480, 173, 455, 0, + 444, 420, 451, 421, 442, 469, 117, 473, 439, 512, + 483, 524, 145, 445, 531, 147, 489, 0, 219, 161, + 0, 0, 0, 471, 514, 478, 507, 466, 499, 430, + 488, 526, 456, 496, 527, 0, 0, 0, 85, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, + 0, 493, 521, 453, 495, 497, 419, 490, 0, 423, + 426, 532, 517, 448, 449, 0, 0, 0, 0, 0, + 0, 0, 470, 479, 504, 464, 0, 0, 0, 0, + 0, 0, 989, 0, 446, 0, 487, 0, 0, 0, + 427, 424, 0, 0, 468, 0, 0, 0, 429, 0, + 447, 505, 0, 417, 126, 509, 516, 465, 275, 520, + 463, 462, 523, 192, 0, 223, 129, 144, 103, 141, + 89, 99, 0, 128, 170, 199, 203, 513, 443, 452, + 111, 450, 201, 180, 239, 486, 182, 200, 148, 229, + 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, + 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, + 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, + 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, + 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, + 132, 163, 162, 164, 0, 422, 0, 220, 242, 257, + 105, 438, 227, 251, 252, 0, 0, 106, 125, 119, + 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, + 179, 202, 109, 241, 218, 434, 437, 432, 433, 481, + 482, 528, 529, 530, 506, 428, 0, 435, 436, 0, + 511, 518, 519, 485, 88, 97, 146, 254, 194, 122, + 243, 418, 431, 115, 441, 0, 0, 454, 459, 460, + 472, 474, 475, 476, 477, 484, 491, 492, 494, 500, + 501, 502, 503, 508, 515, 534, 90, 91, 98, 104, + 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, + 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, + 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, + 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, + 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, + 247, 250, 522, 510, 0, 467, 525, 440, 457, 533, + 458, 461, 498, 425, 480, 173, 455, 0, 444, 420, + 451, 421, 442, 469, 117, 473, 439, 512, 483, 524, + 145, 445, 531, 147, 489, 0, 219, 161, 0, 0, + 0, 471, 514, 478, 507, 466, 499, 430, 488, 526, + 456, 496, 527, 0, 0, 0, 85, 86, 87, 0, + 0, 0, 0, 0, 0, 0, 0, 107, 0, 493, + 521, 453, 495, 497, 419, 490, 0, 423, 426, 532, + 517, 448, 449, 0, 0, 0, 0, 0, 0, 0, + 470, 479, 504, 464, 0, 0, 0, 0, 0, 0, + 884, 0, 446, 0, 487, 0, 0, 0, 427, 424, + 0, 0, 468, 0, 0, 0, 429, 0, 447, 505, + 0, 417, 126, 509, 516, 465, 275, 520, 463, 462, + 523, 192, 0, 223, 129, 144, 103, 141, 89, 99, + 0, 128, 170, 199, 203, 513, 443, 452, 111, 450, + 201, 180, 239, 486, 182, 200, 148, 229, 193, 238, + 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, + 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, + 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, + 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, + 158, 152, 143, 120, 131, 190, 150, 191, 132, 163, + 162, 164, 0, 422, 0, 220, 242, 257, 105, 438, + 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, + 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, + 109, 241, 218, 434, 437, 432, 433, 481, 482, 528, + 529, 530, 506, 428, 0, 435, 436, 0, 511, 518, + 519, 485, 88, 97, 146, 254, 194, 122, 243, 418, + 431, 115, 441, 0, 0, 454, 459, 460, 472, 474, + 475, 476, 477, 484, 491, 492, 494, 500, 501, 502, + 503, 508, 515, 534, 90, 91, 98, 104, 110, 114, + 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, + 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, + 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, + 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, + 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, + 522, 510, 0, 467, 525, 440, 457, 533, 458, 461, + 498, 425, 480, 173, 455, 0, 444, 420, 451, 421, + 442, 469, 117, 473, 439, 512, 483, 524, 145, 445, + 531, 147, 489, 0, 219, 161, 0, 0, 0, 471, + 514, 478, 507, 466, 499, 430, 488, 526, 456, 496, + 527, 0, 0, 0, 85, 86, 87, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 0, 493, 521, 453, + 495, 497, 419, 490, 0, 423, 426, 532, 517, 448, + 449, 0, 0, 0, 0, 0, 0, 0, 470, 479, + 504, 464, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 0, 487, 0, 0, 0, 427, 424, 0, 0, + 468, 0, 0, 0, 429, 0, 447, 505, 0, 417, + 126, 509, 516, 465, 275, 520, 463, 462, 523, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 513, 443, 452, 111, 450, 201, 180, + 239, 486, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 422, 0, 220, 242, 257, 105, 438, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 434, 437, 432, 433, 481, 482, 528, 529, 530, + 506, 428, 0, 435, 436, 0, 511, 518, 519, 485, + 88, 97, 146, 254, 194, 122, 243, 418, 431, 115, + 441, 0, 0, 454, 459, 460, 472, 474, 475, 476, + 477, 484, 491, 492, 494, 500, 501, 502, 503, 508, + 515, 534, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 522, 510, + 0, 467, 525, 440, 457, 533, 458, 461, 498, 425, + 480, 173, 455, 0, 444, 420, 451, 421, 442, 469, + 117, 473, 439, 512, 483, 524, 145, 445, 531, 147, + 489, 0, 219, 161, 0, 0, 0, 471, 514, 478, + 507, 466, 499, 430, 488, 526, 456, 496, 527, 0, + 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 107, 0, 493, 521, 453, 495, 497, + 419, 490, 0, 423, 426, 532, 517, 448, 449, 0, + 0, 0, 0, 0, 0, 0, 470, 479, 504, 464, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, + 487, 0, 0, 0, 427, 424, 0, 0, 468, 0, + 0, 0, 429, 0, 447, 505, 0, 417, 126, 509, + 516, 465, 275, 520, 463, 462, 523, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 513, 443, 452, 111, 450, 201, 180, 239, 486, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 415, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 422, + 0, 220, 242, 257, 105, 438, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 416, 414, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 434, + 437, 432, 433, 481, 482, 528, 529, 530, 506, 428, + 0, 435, 436, 0, 511, 518, 519, 485, 88, 97, + 146, 254, 194, 122, 243, 418, 431, 115, 441, 0, + 0, 454, 459, 460, 472, 474, 475, 476, 477, 484, + 491, 492, 494, 500, 501, 502, 503, 508, 515, 534, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 522, 510, 0, 467, + 525, 440, 457, 533, 458, 461, 498, 425, 480, 173, + 455, 0, 444, 420, 451, 421, 442, 469, 117, 473, + 439, 512, 483, 524, 145, 445, 531, 147, 489, 0, + 219, 161, 0, 0, 0, 471, 514, 478, 507, 466, + 499, 430, 488, 526, 456, 496, 527, 0, 0, 0, + 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 107, 0, 493, 521, 453, 495, 497, 419, 490, + 0, 423, 426, 532, 517, 448, 449, 0, 0, 0, + 0, 0, 0, 0, 470, 479, 504, 464, 0, 0, + 0, 0, 0, 0, 0, 0, 446, 0, 487, 0, + 0, 0, 427, 424, 0, 0, 468, 0, 0, 0, + 429, 0, 447, 505, 0, 417, 126, 509, 516, 465, + 275, 520, 463, 462, 523, 192, 0, 223, 129, 144, + 103, 141, 89, 99, 0, 128, 170, 199, 203, 513, + 443, 452, 111, 450, 201, 180, 239, 486, 182, 200, + 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, + 92, 225, 738, 108, 211, 94, 235, 222, 159, 138, + 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, + 112, 256, 100, 245, 96, 415, 244, 166, 228, 236, + 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, + 150, 191, 132, 163, 162, 164, 0, 422, 0, 220, + 242, 257, 105, 438, 227, 251, 252, 0, 0, 106, + 125, 119, 189, 123, 416, 414, 134, 217, 142, 149, + 196, 255, 179, 202, 109, 241, 218, 434, 437, 432, + 433, 481, 482, 528, 529, 530, 506, 428, 0, 435, + 436, 0, 511, 518, 519, 485, 88, 97, 146, 254, + 194, 122, 243, 418, 431, 115, 441, 0, 0, 454, + 459, 460, 472, 474, 475, 476, 477, 484, 491, 492, + 494, 500, 501, 502, 503, 508, 515, 534, 90, 91, + 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, + 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, + 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, + 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, + 231, 240, 247, 250, 522, 510, 0, 467, 525, 440, + 457, 533, 458, 461, 498, 425, 480, 173, 455, 0, + 444, 420, 451, 421, 442, 469, 117, 473, 439, 512, + 483, 524, 145, 445, 531, 147, 489, 0, 219, 161, + 0, 0, 0, 471, 514, 478, 507, 466, 499, 430, + 488, 526, 456, 496, 527, 0, 0, 0, 85, 86, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, + 0, 493, 521, 453, 495, 497, 419, 490, 0, 423, + 426, 532, 517, 448, 449, 0, 0, 0, 0, 0, + 0, 0, 470, 479, 504, 464, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 0, 487, 0, 0, 0, + 427, 424, 0, 0, 468, 0, 0, 0, 429, 0, + 447, 505, 0, 417, 126, 509, 516, 465, 275, 520, + 463, 462, 523, 192, 0, 223, 129, 144, 103, 141, + 89, 99, 0, 128, 170, 199, 203, 513, 443, 452, + 111, 450, 201, 180, 239, 486, 182, 200, 148, 229, + 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, + 406, 108, 211, 94, 235, 222, 159, 138, 139, 93, + 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, + 100, 245, 96, 415, 244, 166, 228, 236, 160, 153, + 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, + 132, 163, 162, 164, 0, 422, 0, 220, 242, 257, + 105, 438, 227, 251, 252, 0, 0, 106, 125, 119, + 189, 123, 416, 414, 409, 408, 142, 149, 196, 255, + 179, 202, 109, 241, 218, 434, 437, 432, 433, 481, + 482, 528, 529, 530, 506, 428, 0, 435, 436, 0, + 511, 518, 519, 485, 88, 97, 146, 254, 194, 122, + 243, 418, 431, 115, 441, 0, 0, 454, 459, 460, + 472, 474, 475, 476, 477, 484, 491, 492, 494, 500, + 501, 502, 503, 508, 515, 534, 90, 91, 98, 104, + 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, + 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, + 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, + 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, + 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, + 247, 250, 173, 0, 0, 920, 0, 340, 0, 0, + 0, 117, 0, 337, 0, 0, 0, 145, 921, 380, + 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, + 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, + 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 349, 350, 331, 0, 0, + 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, + 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, + 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, + 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, + 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, + 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, + 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, + 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, + 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, + 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, + 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, + 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, + 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, + 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, + 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, + 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, + 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, + 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, + 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, + 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, + 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 996, 0, 57, 0, 0, 85, 86, + 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, + 360, 365, 366, 367, 997, 0, 0, 335, 352, 0, + 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 349, 350, 0, 0, 0, 0, 394, 0, 351, 0, + 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, + 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, + 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, + 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, + 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, + 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, + 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, + 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, + 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, + 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, + 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, + 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, + 179, 202, 109, 241, 218, 381, 392, 387, 388, 385, + 386, 384, 383, 382, 395, 373, 374, 375, 376, 378, + 0, 389, 390, 377, 88, 97, 146, 254, 194, 122, + 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 91, 98, 104, + 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, + 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, + 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, + 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, + 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, + 247, 250, 173, 0, 0, 0, 0, 340, 0, 0, + 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, + 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 0, 608, 85, 86, 87, 359, 358, 361, 362, + 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, + 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 349, 350, 0, 0, 0, + 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, + 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, + 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, + 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, + 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, + 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, + 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, + 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, + 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, + 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, + 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, + 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, + 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, + 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, + 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, + 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, + 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, + 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, + 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, + 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, + 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, + 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, + 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, + 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 349, 350, 331, 0, 0, 0, 394, 0, 351, 0, + 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, + 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, + 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, + 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, + 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, + 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, + 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, + 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, + 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, + 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, + 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, + 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, + 179, 202, 109, 241, 218, 381, 392, 387, 388, 385, + 386, 384, 383, 382, 395, 373, 374, 375, 376, 378, + 0, 389, 390, 377, 88, 97, 146, 254, 194, 122, + 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 91, 98, 104, + 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, + 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, + 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, + 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, + 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, + 247, 250, 173, 0, 0, 0, 0, 340, 0, 0, + 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, + 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 0, 0, 85, 86, 87, 359, 935, 361, 362, + 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, + 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 349, 350, 331, 0, 0, + 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, + 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, + 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, + 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, + 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, + 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, + 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, + 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, + 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, + 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, + 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, + 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, + 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, + 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, + 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, + 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, + 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, + 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, + 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, + 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, + 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, + 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, + 87, 359, 932, 361, 362, 363, 364, 0, 0, 107, + 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, + 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 349, 350, 331, 0, 0, 0, 394, 0, 351, 0, + 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, + 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, + 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, + 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, + 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, + 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, + 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, + 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, + 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, + 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, + 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, + 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, + 179, 202, 109, 241, 218, 381, 392, 387, 388, 385, + 386, 384, 383, 382, 395, 373, 374, 375, 376, 378, + 0, 389, 390, 377, 88, 97, 146, 254, 194, 122, + 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 91, 98, 104, + 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, + 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, + 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, + 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, + 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, + 247, 250, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 173, 0, 0, 0, 0, 340, + 0, 0, 0, 117, 0, 337, 0, 0, 0, 145, + 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, + 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, + 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, + 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, + 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, + 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, + 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, + 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 381, 392, 387, 388, 385, 386, 384, 383, + 382, 395, 373, 374, 375, 376, 378, 0, 389, 390, + 377, 88, 97, 146, 254, 194, 122, 243, 0, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, + 0, 0, 0, 0, 340, 0, 0, 0, 117, 0, + 337, 0, 0, 0, 145, 0, 380, 147, 0, 0, + 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, + 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, + 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, + 0, 107, 360, 365, 366, 367, 0, 0, 0, 335, + 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 349, 350, 0, 0, 0, 0, 394, 0, + 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, + 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, + 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, + 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, + 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, + 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, + 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, + 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, + 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, + 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, + 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, + 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, + 196, 255, 179, 202, 109, 241, 218, 381, 392, 387, + 388, 385, 386, 384, 383, 382, 395, 373, 374, 375, + 376, 378, 0, 389, 390, 377, 88, 97, 146, 254, + 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, + 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, + 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, + 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, + 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, + 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, + 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, + 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, + 367, 0, 0, 0, 0, 352, 0, 379, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, + 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, + 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, + 180, 239, 1561, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, + 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 381, 392, 387, 388, 385, 386, 384, 383, + 382, 395, 373, 374, 375, 376, 378, 0, 389, 390, + 377, 88, 97, 146, 254, 194, 122, 243, 0, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 145, 0, 380, 147, 0, 0, + 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, + 0, 0, 0, 0, 0, 0, 0, 57, 0, 608, + 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, + 0, 107, 360, 365, 366, 367, 0, 0, 0, 0, + 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 349, 350, 0, 0, 0, 0, 394, 0, + 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, + 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, + 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, + 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, + 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, + 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, + 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, + 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, + 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, + 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, + 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, + 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, + 196, 255, 179, 202, 109, 241, 218, 381, 392, 387, + 388, 385, 386, 384, 383, 382, 395, 373, 374, 375, + 376, 378, 0, 389, 390, 377, 88, 97, 146, 254, + 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, + 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, + 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, + 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, + 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, + 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, + 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, + 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, + 367, 0, 0, 0, 0, 352, 0, 379, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, + 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, + 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, + 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, + 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 381, 392, 387, 388, 385, 386, 384, 383, + 382, 395, 373, 374, 375, 376, 378, 0, 389, 390, + 377, 88, 97, 146, 254, 194, 122, 243, 0, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, + 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 107, 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, 645, 644, + 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, + 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, + 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, + 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, + 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, + 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, + 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, + 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, + 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, + 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, + 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, + 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, + 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, + 196, 255, 179, 202, 109, 241, 218, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 97, 146, 254, + 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, + 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, + 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, + 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, + 231, 240, 247, 250, 173, 0, 0, 0, 633, 0, + 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, + 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 85, 86, 87, 0, 635, + 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, + 0, 0, 630, 629, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 631, + 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, 126, 0, 0, 0, 275, 0, 0, 0, 0, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, + 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, + 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 88, 97, 146, 254, 194, 122, 243, 0, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, + 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 107, 0, 0, 0, 0, 0, 77, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 79, 80, 0, + 76, 0, 0, 0, 81, 192, 0, 223, 129, 144, + 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, + 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, + 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, + 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, + 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, + 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, + 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, + 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, + 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, + 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, + 196, 255, 179, 202, 109, 241, 218, 0, 78, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 97, 146, 254, + 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, + 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, + 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, + 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, + 231, 240, 247, 250, 173, 0, 0, 0, 979, 0, + 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, + 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 85, 86, 87, 0, 981, + 0, 0, 0, 0, 0, 0, 107, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 0, 0, 0, 275, 0, 0, 0, 0, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, + 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, + 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 88, 97, 146, 254, 194, 122, 243, 0, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 107, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 979, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 0, 981, 0, 0, 0, 0, 0, 0, 107, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, + 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 977, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 0, 869, 0, 0, + 870, 0, 0, 107, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 0, 748, 0, 0, + 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 0, 747, 0, 0, 0, 0, 0, 0, 107, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, + 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 608, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 107, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, + 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 981, 0, 0, 0, + 0, 0, 0, 107, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 0, 635, 0, 0, 0, 0, 0, 0, 107, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, + 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 173, 0, 0, 0, 0, 0, 0, 0, 718, + 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 107, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 398, 0, 0, 0, + 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, + 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 0, 270, 0, 275, + 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, + 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, + 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 97, 146, 254, 194, + 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, + 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, } var yyPact = [...]int{ - 2394, -1000, -275, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2811, -1000, -275, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 953, 991, -1000, -1000, -1000, -1000, - -1000, -1000, 310, 11660, 43, 126, -10, 15699, 125, 77, - 16034, -1000, 28, -1000, -1000, -271, -1000, -1000, -1000, -1000, - -55, -65, -1000, 712, -1000, -1000, -1000, -1000, -1000, 937, - 951, 776, 932, 943, -1000, 8298, 95, 95, 15364, 6958, - -1000, -1000, 474, 16034, 123, 16034, -147, 91, 91, 91, + -1000, -1000, -1000, -1000, 966, 1024, -1000, -1000, -1000, -1000, + -1000, -1000, 321, 11781, 43, 128, -19, 15820, 127, 215, + 16155, -1000, 29, -1000, -1000, -268, -1000, -1000, -1000, -1000, + -1000, -53, -79, -1000, 694, -1000, -1000, -1000, -1000, -1000, + 953, 959, 791, 948, 951, -1000, 8419, 95, 95, 15485, + 7079, -1000, -1000, 320, 16155, 123, 16155, -149, 93, 93, + 93, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2578,24 +2599,24 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 126, 16155, + 524, 524, 202, -1000, 16155, 92, 524, 92, 92, 92, + 16155, -1000, 184, -1000, -1000, -1000, 16155, 524, 898, 316, + 82, 4643, -1000, 185, -1000, 4643, 37, 4643, -44, 986, + 38, -31, -1000, 4643, -1000, -1000, -1000, -1000, -1000, -1000, + 115, 330, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 482, 926, 9771, 9771, 966, -1000, 694, -1000, -1000, -1000, + 881, 8419, -1000, -1000, 945, -1000, -1000, -1000, -1000, 360, + 997, -1000, 11446, 183, -1000, 9771, 1664, 548, -1000, -1000, + 548, -1000, -1000, 166, -1000, -1000, 10776, 10776, 10776, 10776, + 10776, 10776, 10776, 10776, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 548, -1000, + 9436, 548, 548, 548, 548, 548, 548, 548, 548, 9771, + 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 15143, 14138, 16155, 840, + 801, -1000, -1000, 182, 708, 6731, -57, -1000, -1000, -1000, + 327, 13468, -1000, -1000, -1000, 895, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 116, 16034, 563, - 563, 271, -1000, 16034, 89, 563, 89, 89, 89, 16034, - -1000, 170, -1000, -1000, -1000, 16034, 563, 895, 323, 50, - 4522, -1000, 200, -1000, 4522, 42, 4522, -41, 963, 44, - -23, -1000, 4522, -1000, -1000, -1000, -1000, -1000, -1000, 115, - -1000, 282, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 497, - 901, 9650, 9650, 953, -1000, 712, -1000, -1000, -1000, 844, - 8298, -1000, -1000, 850, -1000, -1000, -1000, -1000, 350, 972, - -1000, 11325, 168, -1000, 9650, 1869, 672, -1000, -1000, 672, - -1000, -1000, 139, -1000, -1000, 10655, 10655, 10655, 10655, 10655, - 10655, 10655, 10655, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 672, -1000, 9315, - 672, 672, 672, 672, 672, 672, 672, 672, 9650, 672, - 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, - 672, 672, 672, 672, 672, 15022, 14017, 16034, 733, 720, - -1000, -1000, 167, 722, 6610, -95, -1000, -1000, -1000, 278, - 13347, -1000, -1000, -1000, 874, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2606,237 +2627,236 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 690, 16155, -1000, 2569, -1000, + 524, 4643, 106, 524, 324, 524, 16155, 16155, 4643, 4643, + 4643, 45, 78, 74, 16155, 706, 101, 16155, 936, 842, + 16155, 524, 524, -1000, 6035, -1000, 4643, 316, -1000, 475, + 9771, 4643, 4643, 4643, 16155, 4643, 4643, -1000, -1000, -1000, + 309, -1000, -1000, -1000, -1000, 4643, 4643, -1000, 996, 300, + -1000, -1000, -1000, -1000, 9771, 244, -1000, 839, -1000, -1000, + -1000, -1000, -1000, -1000, -125, -1000, -1000, -1000, -1000, -1000, + 1019, 219, 503, 177, 702, -1000, 477, 953, 482, 945, + 13133, 765, -1000, 945, -1000, -1000, -1000, 16155, -1000, 9771, + 9771, 439, -1000, 14808, -1000, -1000, 5687, 250, 10776, 451, + 273, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, + 10776, 10776, 10776, 10776, 10776, 10776, 570, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 524, -1000, 694, 651, 651, + 193, 193, 193, 193, 193, 193, 193, 11111, 7414, 482, + 685, 263, 9436, 8419, 8419, 9771, 9771, 9089, 8754, 8419, + 908, 325, 263, 16155, -1000, -1000, 10441, -1000, -1000, -1000, + -1000, -1000, 482, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 16155, 16155, 8419, 8419, 8419, 8419, 8419, 58, 16155, -1000, + 741, 788, -1000, -1000, -1000, 930, 12463, 12798, 58, 608, + 14138, 16155, -1000, -1000, 14138, 16155, 5339, 6383, -57, -1000, + 612, -1000, -111, -122, 7749, 192, -1000, -1000, -1000, -1000, + 4295, 372, 501, 442, -33, -1000, -1000, -1000, 711, -1000, + 711, 711, 711, 711, -1, -1, -1, -1, -1000, -1000, + -1000, -1000, -1000, 784, 746, -1000, 711, 711, 711, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 645, 16034, -1000, 2559, -1000, 563, - 4522, 105, 563, 328, 563, 16034, 16034, 4522, 4522, 4522, - 52, 82, 79, 16034, 715, 102, 16034, 915, 788, 16034, - 563, 563, -1000, 5914, -1000, 4522, 323, -1000, 479, 9650, - 4522, 4522, 4522, 16034, 4522, 4522, -1000, -1000, -1000, 303, - -1000, -1000, -1000, -1000, 4522, 4522, -1000, 969, 295, -1000, - -1000, -1000, -1000, 9650, 210, -1000, 786, -1000, -1000, -1000, - -1000, -1000, -126, -1000, -1000, -1000, -1000, -1000, 985, 204, - 438, 166, 697, -1000, 364, 937, 497, 850, 13012, 729, - -1000, 850, -1000, -1000, -1000, 16034, -1000, 9650, 9650, 414, - -1000, 14687, -1000, -1000, 5566, 226, 10655, 488, 313, 10655, - 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, 10655, - 10655, 10655, 10655, 10655, 528, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 563, -1000, 712, 649, 649, 184, 184, - 184, 184, 184, 184, 184, 10990, 7293, 497, 638, 396, - 9315, 8298, 8298, 9650, 9650, 8968, 8633, 8298, 866, 292, - 396, 16034, -1000, -1000, 10320, -1000, -1000, -1000, -1000, -1000, - 497, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 16034, 16034, - 8298, 8298, 8298, 8298, 8298, 62, 16034, -1000, 601, 899, - -1000, -1000, -1000, 929, 12342, 12677, 62, 614, 14017, 16034, - -1000, -1000, 14017, 16034, 5218, 6262, -95, -1000, 675, -1000, - -103, -101, 7628, 181, -1000, -1000, -1000, -1000, 4174, 302, - 532, 365, -46, -1000, -1000, -1000, 736, -1000, 736, 736, - 736, 736, -4, -4, -4, -4, -1000, -1000, -1000, -1000, - -1000, 769, 768, -1000, 736, 736, 736, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 743, 743, 743, + 722, 722, 802, -1000, 16155, 4643, 933, 4643, -1000, 75, + -1000, -1000, -1000, 16155, 16155, 16155, 16155, 16155, 149, 16155, + 16155, 701, -1000, 16155, 4643, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 263, -1000, -1000, -1000, -1000, -1000, -1000, + 16155, -1000, -1000, -1000, -1000, 16155, 316, 16155, 16155, 263, + -1000, 461, 16155, -1000, -1000, -1000, -1000, 877, 9771, 9771, + 6035, 9771, -1000, -1000, -1000, 926, -1000, 963, -1000, 887, + 885, 979, 8419, 14138, 945, -1000, 250, 281, -1000, -1000, + 423, -1000, -1000, -1000, -1000, 176, 548, -1000, 1771, -1000, + -1000, -1000, -1000, 451, 10776, 10776, 10776, 357, 1771, 2235, + 1127, 428, 193, 547, 547, 201, 201, 201, 201, 201, + 833, 833, -1000, -1000, -1000, 482, -1000, -1000, -1000, 482, + 8419, 8419, 698, -1000, 9771, -1000, 482, 667, 667, 318, + 308, 274, 991, 667, 248, 988, 667, 667, 8419, -1000, + -1000, 338, -1000, 9771, 482, -1000, 173, -1000, 511, 624, + 614, 667, 482, 482, 667, 667, 704, 548, -1000, 16155, + 14138, 14138, 14138, 14138, 14138, -1000, 865, 855, -1000, 858, + 857, 864, 16155, -1000, 672, 12463, 170, 548, -1000, 14473, + -1000, -1000, 979, 14138, 569, -1000, 569, -1000, 171, -1000, + -1000, 612, -57, -64, -1000, -1000, -1000, -1000, 263, -1000, + 601, 599, 3947, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 725, 524, -1000, 922, 208, 236, 524, 921, -1000, -1000, + -1000, 901, -1000, 332, -61, -1000, -1000, 421, -1, -1, + -1000, -1000, 192, 893, 192, 192, 192, 460, 460, -1000, + -1000, -1000, -1000, 412, -1000, -1000, -1000, 410, -1000, 838, + 16155, 4643, -1000, -1000, -1000, -1000, 291, 291, 217, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 751, 751, 751, 740, 740, - 772, -1000, 16034, 4522, 904, 4522, -1000, 73, -1000, -1000, - -1000, 16034, 16034, 16034, 16034, 16034, 148, 16034, 16034, 688, - -1000, 16034, 4522, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 396, -1000, -1000, -1000, -1000, -1000, -1000, 16034, -1000, - -1000, -1000, -1000, 16034, 323, 16034, 16034, 396, -1000, 467, - 16034, -1000, -1000, -1000, -1000, 838, 9650, 9650, 5914, 9650, - -1000, -1000, -1000, 901, -1000, 947, -1000, 851, 848, 961, - 8298, 14017, 850, -1000, 226, 238, -1000, -1000, 465, -1000, - -1000, -1000, -1000, 163, 672, -1000, 1589, -1000, -1000, -1000, - -1000, 488, 10655, 10655, 10655, 399, 1589, 1719, 1031, 510, - 184, 347, 347, 180, 180, 180, 180, 180, 1603, 1603, - -1000, -1000, -1000, 497, -1000, -1000, -1000, 497, 8298, 8298, - 684, -1000, 9650, -1000, 497, 616, 616, 355, 391, 285, - 968, 616, 262, 965, 616, 616, 8298, -1000, -1000, 300, - -1000, 9650, 497, -1000, 162, -1000, 421, 681, 680, 616, - 497, 497, 616, 616, 671, 672, -1000, 16034, 14017, 14017, - 14017, 14017, 14017, -1000, 819, 810, -1000, 801, 799, 852, - 16034, -1000, 635, 12342, 196, 672, -1000, 14352, -1000, -1000, - 961, 14017, 696, -1000, 696, -1000, 159, -1000, -1000, 675, - -95, -61, -1000, -1000, -1000, -1000, 396, -1000, 538, 667, - 3826, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 749, 563, - -1000, 908, 237, 293, 563, 907, -1000, -1000, -1000, 897, - -1000, 322, -50, -1000, -1000, 426, -4, -4, -1000, -1000, - 181, 871, 181, 181, 181, 454, 454, -1000, -1000, -1000, - -1000, 417, -1000, -1000, -1000, 406, -1000, 784, 16034, 4522, - -1000, -1000, -1000, -1000, 290, 290, 213, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 61, 734, - -1000, -1000, -1000, -1000, 20, 51, 97, -1000, 4522, -1000, - 295, 295, -1000, -1000, -1000, -1000, -1000, 836, 396, 396, - 158, -1000, -1000, 16034, -1000, -1000, -1000, -1000, 959, 9650, - -1000, 666, -1000, -1000, -1000, -1000, 4870, 8298, -1000, 399, - 1589, 811, -1000, 10655, 10655, -1000, -1000, 616, 616, 396, - -1000, -1000, -1000, 182, 528, 182, 10655, 10655, -1000, 10655, - 10655, -1000, -159, 618, 287, -1000, 9650, 476, -1000, 5914, - -1000, 10655, 10655, -1000, -1000, -1000, -1000, -1000, 783, 16034, - 672, -1000, 12342, 16034, 710, -1000, 274, 899, 755, 781, - 711, -1000, -1000, -1000, -1000, 809, -1000, 808, -1000, -1000, - -1000, -1000, -1000, 122, 118, 111, 16034, -1000, 953, 696, - -1000, -1000, 155, -1000, -1000, -125, -131, -1000, -1000, -1000, - 4174, -1000, 4174, 16034, 80, -1000, 563, 563, -1000, -1000, - -1000, 746, 779, 10655, -1000, -1000, -1000, 519, 181, 181, - -1000, 316, -1000, -1000, -1000, 610, -1000, 608, 662, 605, - 16034, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 57, 719, -1000, -1000, -1000, -1000, 24, 44, 97, -1000, + 4643, -1000, 300, 300, -1000, -1000, -1000, -1000, -1000, 875, + 263, 263, 156, -1000, -1000, 16155, -1000, -1000, -1000, -1000, + 976, 9771, -1000, 590, -1000, -1000, -1000, -1000, 4991, 8419, + -1000, 357, 1771, 1901, -1000, 10776, 10776, -1000, -1000, 667, + 667, 263, -1000, -1000, -1000, 61, 570, 61, 10776, 10776, + -1000, 10776, 10776, -1000, -162, 718, 264, -1000, 9771, 310, + -1000, 6035, -1000, 10776, 10776, -1000, -1000, -1000, -1000, -1000, + 836, 16155, 548, -1000, 12463, 16155, 620, -1000, 322, 788, + 800, 823, 834, -1000, -1000, -1000, -1000, 843, -1000, 827, + -1000, -1000, -1000, -1000, -1000, 119, 110, 109, 16155, -1000, + 966, 569, -1000, -1000, 211, -1000, -1000, -123, -105, -1000, + -1000, -1000, 4295, -1000, 4295, 16155, 73, -1000, 524, 524, + -1000, -1000, -1000, 724, 821, 10776, -1000, -1000, -1000, 494, + 192, 192, -1000, 247, -1000, -1000, -1000, 663, -1000, 650, + 550, 647, 16155, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 16034, -1000, -1000, -1000, -1000, -1000, 16034, -165, 563, 16034, - 16034, 16034, 16034, -1000, 323, 323, -1000, 5914, -1000, 955, - 949, 396, -1000, -1000, 497, -1000, 10655, 1589, 1589, -1000, - -1000, 497, 736, 736, -1000, 736, 740, -1000, 736, 26, - 736, 12, 497, 497, 1566, 1523, 1266, 583, 672, -154, - -1000, 396, 9650, -1000, 970, 539, -1000, 902, 513, 597, - -1000, -1000, 7963, 497, 603, 147, 599, -1000, 953, 16034, - 9650, -1000, -1000, 9650, 739, -1000, 9650, -1000, -1000, -1000, - 672, 672, 672, 599, 937, -1000, -1000, -1000, -1000, 3826, - -1000, 595, -1000, 736, -1000, -1000, -1000, 16034, -31, 984, - 1589, -1000, -1000, -1000, -1000, -1000, -4, 453, -4, 402, - -1000, 358, 4522, -1000, -1000, -1000, -1000, 911, -1000, 5914, - -1000, -1000, 731, 771, -1000, -1000, -1000, -1000, -1000, 9650, - 9650, -1000, 1589, -1000, -1000, 142, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 10655, 10655, 10655, 10655, 10655, 937, - 449, 396, 10655, 10655, 906, -1000, 672, -1000, -1000, 785, - 16034, 16034, -1000, 16034, 937, -1000, 396, 396, 16034, 396, - 13682, 16034, 16034, 11995, -1000, 185, 16034, -1000, 591, -1000, - 214, -1000, -87, 181, -1000, 181, 507, 500, -1000, 672, - 648, -1000, 259, 16034, 16034, 396, 640, -1000, -1000, 421, - 421, 421, 421, 49, 497, -1000, 421, 421, 980, -1000, - 672, -1000, 712, 146, -1000, -1000, -1000, 572, 570, -1000, - 570, 570, 196, 185, -1000, 563, 252, 446, -1000, 74, - 16034, 345, 905, -1000, 900, -1000, -1000, -1000, -1000, -1000, - 60, 5914, 4174, 547, -1000, -1000, -1000, -1000, -1000, 497, - 54, -175, -1000, -1000, -1000, 16034, 597, 497, 16034, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 356, -1000, -1000, 16034, - -1000, -1000, 445, -1000, -1000, 526, -1000, 16034, -1000, -1000, - 734, -1000, 827, -163, -181, 537, -1000, -1000, -1000, 724, - -1000, -1000, 60, 847, -165, -1000, 826, -1000, 16034, -1000, - 57, -1000, -168, 523, 53, -176, 777, 672, -183, 774, - -1000, 982, 9985, -1000, -1000, 978, 192, 192, 421, 497, - -1000, -1000, -1000, 84, 410, -1000, -1000, -1000, -1000, -1000, - -1000, + -1000, -1000, 16155, -1000, -1000, -1000, -1000, -1000, 16155, -169, + 524, 16155, 16155, 16155, 16155, -1000, 316, 316, -1000, 6035, + -1000, 969, 955, 263, -1000, -1000, 482, -1000, 10776, 1771, + 1771, -1000, -1000, 482, 711, 711, -1000, 711, 722, -1000, + 711, 19, 711, 15, 482, 482, 1841, 1686, 1570, 586, + 548, -156, -1000, 263, 9771, -1000, 1468, 538, -1000, 924, + 514, 521, -1000, -1000, 8084, 482, 645, 147, 641, -1000, + 966, 16155, 9771, -1000, -1000, 9771, 712, -1000, 9771, -1000, + -1000, -1000, 548, 548, 548, 641, 953, -1000, -1000, -1000, + -1000, 3947, -1000, 622, -1000, 711, -1000, -1000, -1000, 16155, + -28, 1018, 1771, -1000, -1000, -1000, -1000, -1000, -1, 455, + -1, 389, -1000, 388, 4643, -1000, -1000, -1000, -1000, 929, + -1000, 6035, -1000, -1000, 710, 787, -1000, -1000, -1000, -1000, + -1000, 9771, 9771, -1000, 1771, -1000, -1000, 130, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 10776, 10776, 10776, 10776, + 10776, 953, 447, 263, 10776, 10776, 920, -1000, 548, -1000, + -1000, 817, 16155, 16155, -1000, 16155, 953, -1000, 263, 263, + 16155, 263, 13803, 16155, 16155, 12116, -1000, 164, 16155, -1000, + 617, -1000, 221, -1000, -86, 192, -1000, 192, 487, 485, + -1000, 548, 542, -1000, 271, 16155, 16155, 263, 537, -1000, + -1000, 511, 511, 511, 511, 50, 482, -1000, 511, 511, + 1017, -1000, 548, -1000, 694, 142, -1000, -1000, -1000, 610, + 566, -1000, 566, 566, 170, 164, -1000, 524, 262, 436, + -1000, 70, 16155, 351, 918, -1000, 903, -1000, -1000, -1000, + -1000, -1000, 53, 6035, 4295, 544, -1000, -1000, -1000, -1000, + -1000, 482, 51, -173, -1000, -1000, -1000, 16155, 521, 482, + 16155, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 374, -1000, + -1000, 16155, -1000, -1000, 435, -1000, -1000, 531, -1000, 16155, + -1000, -1000, 719, -1000, 874, -166, -178, 509, -1000, -1000, + -1000, 705, -1000, -1000, 53, 884, -169, -1000, 872, -1000, + 16155, -1000, 54, -1000, -171, 499, 46, -175, 816, 548, + -179, 810, -1000, 995, 10106, -1000, -1000, 1001, 190, 190, + 511, 482, -1000, -1000, -1000, 80, 414, -1000, -1000, -1000, + -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1229, 26, 563, 1228, 1227, 1226, 1225, 86, 85, - 83, 1220, 1219, 1217, 1216, 1215, 1214, 1213, 1209, 1206, - 1204, 1203, 1202, 1201, 1200, 1199, 1196, 1195, 99, 1190, - 1189, 1188, 1187, 1186, 1185, 1184, 1182, 42, 192, 39, - 60, 1181, 57, 1712, 1180, 52, 58, 65, 1178, 31, - 1176, 1174, 78, 1173, 1172, 53, 1170, 1169, 46, 1168, - 63, 1167, 11, 50, 1159, 1155, 1150, 1149, 75, 1245, - 1148, 1146, 14, 1145, 1144, 92, 1143, 56, 20, 7, - 13, 19, 1141, 811, 12, 1128, 55, 1124, 1123, 1122, - 1121, 32, 1120, 61, 1117, 18, 59, 1116, 9, 66, - 30, 22, 10, 1115, 1114, 29, 64, 51, 62, 1110, - 1109, 511, 1108, 1106, 45, 1105, 1104, 1103, 28, 1101, - 90, 414, 1099, 1098, 1097, 1096, 43, 760, 1473, 254, - 68, 1095, 1093, 1091, 2432, 35, 54, 16, 1090, 48, - 198, 36, 1089, 1088, 37, 1087, 1086, 1085, 1083, 1082, - 1080, 1066, 180, 1065, 1064, 1061, 91, 24, 1060, 1056, - 72, 21, 1054, 1052, 1051, 47, 67, 1048, 1046, 49, - 1044, 1043, 25, 1039, 1038, 1037, 1029, 1022, 33, 17, - 1016, 15, 1013, 8, 1012, 23, 1011, 5, 1009, 6, - 1008, 2, 0, 1007, 4, 44, 1, 1006, 3, 1005, - 998, 1265, 1375, 71, 997, 77, + 0, 1240, 43, 564, 1239, 1220, 1219, 1218, 1217, 89, + 88, 87, 1215, 1213, 1212, 1211, 1208, 1205, 1203, 1202, + 1197, 1192, 1191, 1190, 1189, 1188, 1187, 1186, 1184, 100, + 1183, 1182, 1180, 1178, 1176, 1174, 1173, 1170, 1168, 46, + 56, 42, 59, 1161, 58, 1366, 1151, 69, 57, 60, + 1150, 31, 1149, 1147, 67, 1146, 1145, 52, 1144, 1142, + 45, 1140, 73, 1139, 12, 28, 1138, 1137, 1136, 1135, + 84, 140, 1134, 1133, 15, 1132, 1129, 86, 1128, 53, + 20, 14, 19, 18, 1126, 1316, 7, 1125, 55, 1124, + 1123, 1122, 1121, 26, 1118, 64, 1117, 54, 61, 1116, + 13, 78, 30, 21, 5, 1115, 1114, 17, 65, 50, + 62, 1113, 1110, 522, 1108, 1107, 47, 1106, 1105, 1104, + 29, 1103, 93, 423, 1100, 1095, 1093, 1091, 33, 883, + 1889, 11, 72, 1090, 1089, 1088, 2551, 39, 51, 23, + 1086, 63, 525, 37, 1085, 1084, 35, 1083, 1082, 1080, + 1079, 1078, 1077, 1073, 66, 1072, 1071, 1070, 137, 25, + 1069, 1068, 68, 24, 1066, 1063, 1059, 48, 79, 1057, + 1056, 49, 1055, 1054, 22, 1050, 1049, 1048, 1047, 1046, + 32, 6, 1045, 16, 1044, 10, 1042, 27, 1041, 4, + 1040, 8, 1038, 3, 0, 1034, 9, 36, 2, 1033, + 1, 1032, 1030, 1523, 709, 76, 1006, 95, } var yyR1 = [...]int{ - 0, 199, 200, 200, 1, 1, 1, 1, 1, 1, + 0, 201, 202, 202, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 192, 192, 192, 2, - 2, 2, 7, 3, 4, 4, 5, 5, 8, 8, - 31, 31, 9, 10, 10, 10, 10, 203, 203, 52, - 52, 53, 53, 99, 99, 11, 12, 12, 108, 108, - 107, 107, 107, 109, 109, 109, 109, 142, 142, 13, - 13, 13, 13, 13, 13, 13, 194, 194, 193, 191, - 191, 190, 190, 189, 19, 174, 176, 176, 175, 175, - 175, 175, 166, 145, 145, 145, 145, 148, 148, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, - 147, 147, 147, 149, 149, 149, 149, 149, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, - 151, 165, 165, 152, 152, 160, 160, 161, 161, 161, - 158, 158, 159, 159, 162, 162, 162, 154, 154, 155, - 155, 163, 163, 156, 156, 156, 157, 157, 157, 164, - 164, 164, 164, 164, 153, 153, 167, 167, 184, 184, - 183, 183, 183, 173, 173, 180, 180, 180, 180, 180, - 170, 170, 170, 171, 171, 169, 169, 172, 172, 182, - 182, 181, 168, 168, 185, 185, 185, 185, 197, 198, - 196, 196, 196, 196, 196, 177, 177, 177, 178, 178, - 178, 179, 179, 179, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 195, 188, 186, 186, 187, 187, - 15, 20, 20, 16, 16, 16, 16, 16, 17, 17, - 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 115, 115, - 117, 117, 113, 113, 116, 116, 114, 114, 114, 118, - 118, 118, 119, 119, 143, 143, 143, 23, 23, 25, - 25, 26, 27, 32, 32, 32, 32, 6, 6, 6, - 6, 24, 24, 24, 24, 24, 24, 24, 18, 204, - 28, 29, 29, 30, 30, 30, 34, 34, 34, 33, - 33, 33, 39, 39, 41, 41, 41, 41, 41, 42, - 42, 42, 42, 42, 42, 38, 38, 40, 40, 40, - 40, 131, 131, 131, 130, 130, 44, 44, 45, 45, - 46, 46, 47, 47, 47, 47, 61, 61, 98, 98, - 100, 100, 48, 48, 48, 48, 49, 49, 50, 50, - 51, 51, 138, 138, 137, 137, 137, 136, 136, 54, - 54, 54, 56, 55, 55, 55, 55, 57, 57, 59, - 59, 58, 58, 60, 62, 62, 62, 62, 62, 63, - 63, 43, 43, 43, 43, 43, 43, 43, 112, 112, - 65, 65, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 76, 76, 76, 76, 76, 76, 66, 66, - 66, 66, 66, 66, 66, 37, 37, 77, 77, 77, - 83, 78, 78, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 73, 73, 73, 73, 71, + 1, 1, 1, 1, 1, 1, 194, 194, 194, 2, + 2, 2, 8, 3, 4, 4, 5, 5, 9, 9, + 32, 32, 10, 11, 11, 11, 11, 205, 205, 54, + 54, 55, 55, 101, 101, 12, 13, 13, 110, 110, + 109, 109, 109, 111, 111, 111, 111, 144, 144, 14, + 14, 14, 14, 14, 14, 14, 196, 196, 195, 193, + 193, 192, 192, 191, 20, 176, 178, 178, 177, 177, + 177, 177, 168, 147, 147, 147, 147, 150, 150, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, + 149, 149, 149, 151, 151, 151, 151, 151, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 153, 153, 153, 153, 153, 153, 153, + 153, 167, 167, 154, 154, 162, 162, 163, 163, 163, + 160, 160, 161, 161, 164, 164, 164, 156, 156, 157, + 157, 165, 165, 158, 158, 158, 159, 159, 159, 166, + 166, 166, 166, 166, 155, 155, 169, 169, 186, 186, + 185, 185, 185, 175, 175, 182, 182, 182, 182, 182, + 172, 172, 172, 173, 173, 171, 171, 174, 174, 184, + 184, 183, 170, 170, 187, 187, 187, 187, 199, 200, + 198, 198, 198, 198, 198, 179, 179, 179, 180, 180, + 180, 181, 181, 181, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 190, 188, 188, 189, 189, + 16, 21, 21, 17, 17, 17, 17, 17, 18, 18, + 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 117, 117, + 119, 119, 115, 115, 118, 118, 116, 116, 116, 120, + 120, 120, 121, 121, 145, 145, 145, 24, 24, 26, + 26, 27, 28, 33, 33, 33, 33, 34, 34, 34, + 7, 7, 7, 7, 6, 25, 25, 25, 25, 25, + 25, 25, 19, 206, 29, 30, 30, 31, 31, 31, + 36, 36, 36, 35, 35, 35, 41, 41, 43, 43, + 43, 43, 43, 44, 44, 44, 44, 44, 44, 40, + 40, 42, 42, 42, 42, 133, 133, 133, 132, 132, + 46, 46, 47, 47, 48, 48, 49, 49, 49, 49, + 63, 63, 100, 100, 102, 102, 50, 50, 50, 50, + 51, 51, 52, 52, 53, 53, 140, 140, 139, 139, + 139, 138, 138, 56, 56, 56, 58, 57, 57, 57, + 57, 59, 59, 61, 61, 60, 60, 62, 64, 64, + 64, 64, 64, 65, 65, 45, 45, 45, 45, 45, + 45, 45, 114, 114, 67, 67, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 78, 78, 78, 78, + 78, 78, 68, 68, 68, 68, 68, 68, 68, 39, + 39, 79, 79, 79, 85, 80, 80, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 205, 205, - 75, 74, 74, 74, 74, 74, 74, 74, 35, 35, - 35, 35, 35, 141, 141, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 87, 87, - 36, 36, 85, 85, 86, 88, 88, 84, 84, 84, - 68, 68, 68, 68, 68, 68, 68, 68, 70, 70, - 70, 89, 89, 90, 90, 91, 91, 92, 92, 93, - 94, 94, 94, 95, 95, 95, 95, 96, 96, 96, - 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, - 101, 101, 79, 79, 81, 81, 80, 82, 102, 102, - 105, 103, 103, 103, 106, 106, 106, 106, 104, 104, - 104, 133, 133, 133, 110, 110, 120, 120, 121, 121, - 111, 111, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 123, 123, 123, 124, 124, 125, 125, 125, - 132, 132, 128, 128, 129, 129, 134, 134, 135, 135, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 201, - 202, 139, 140, 140, 140, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, + 75, 75, 75, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 207, 207, 77, 76, 76, 76, 76, 76, + 76, 76, 37, 37, 37, 37, 37, 143, 143, 146, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 89, 89, 38, 38, 87, 87, 88, 90, + 90, 86, 86, 86, 70, 70, 70, 70, 70, 70, + 70, 70, 72, 72, 72, 91, 91, 92, 92, 93, + 93, 94, 94, 95, 96, 96, 96, 97, 97, 97, + 97, 98, 98, 98, 69, 69, 69, 69, 69, 69, + 99, 99, 99, 99, 103, 103, 81, 81, 83, 83, + 82, 84, 104, 104, 107, 105, 105, 105, 108, 108, + 108, 108, 106, 106, 106, 135, 135, 135, 112, 112, + 122, 122, 123, 123, 113, 113, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 125, 125, 125, 126, + 126, 127, 127, 127, 134, 134, 130, 130, 131, 131, + 136, 136, 137, 137, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 203, 204, 141, 142, 142, 142, } var yyR2 = [...]int{ @@ -2872,42 +2892,42 @@ var yyR2 = [...]int{ 2, 4, 4, 3, 3, 5, 2, 3, 1, 1, 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, 0, 1, 1, 2, 1, 1, - 2, 1, 1, 0, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 2, 3, 3, 2, 0, - 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, - 1, 1, 0, 1, 0, 1, 2, 3, 4, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, - 5, 0, 1, 2, 1, 1, 0, 2, 1, 3, - 1, 1, 1, 3, 1, 3, 3, 7, 1, 3, - 1, 3, 4, 4, 4, 3, 2, 4, 0, 1, - 0, 2, 0, 1, 0, 1, 2, 1, 1, 1, - 2, 2, 1, 2, 3, 2, 3, 2, 2, 2, - 1, 1, 3, 3, 0, 5, 4, 5, 5, 0, - 2, 1, 3, 3, 2, 3, 1, 2, 0, 3, - 1, 1, 3, 3, 4, 4, 5, 3, 4, 5, - 6, 2, 1, 2, 1, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, - 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, - 3, 1, 1, 1, 1, 4, 5, 5, 6, 4, - 4, 6, 6, 6, 8, 8, 8, 8, 9, 8, - 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 8, 8, 0, 2, - 3, 4, 4, 4, 4, 4, 4, 4, 0, 3, - 4, 7, 3, 1, 1, 2, 3, 3, 1, 2, - 2, 1, 2, 1, 2, 2, 1, 2, 0, 1, - 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 0, 3, 0, 2, 0, 3, 1, 3, 2, - 0, 1, 1, 0, 2, 4, 4, 0, 2, 4, - 2, 1, 3, 5, 4, 6, 1, 3, 3, 5, - 0, 5, 1, 3, 1, 2, 3, 1, 1, 3, - 3, 1, 2, 3, 3, 3, 3, 3, 1, 2, - 1, 1, 1, 1, 1, 1, 0, 2, 0, 3, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, - 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 0, 3, 3, 3, 1, 1, 1, + 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, + 3, 3, 2, 0, 2, 0, 2, 1, 2, 2, + 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, + 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 2, 3, 5, 0, 1, 2, 1, 1, + 0, 2, 1, 3, 1, 1, 1, 3, 1, 3, + 3, 7, 1, 3, 1, 3, 4, 4, 4, 3, + 2, 4, 0, 1, 0, 2, 0, 1, 0, 1, + 2, 1, 1, 1, 2, 2, 1, 2, 3, 2, + 3, 2, 2, 2, 1, 1, 3, 3, 0, 5, + 4, 5, 5, 0, 2, 1, 3, 3, 2, 3, + 1, 2, 0, 3, 1, 1, 3, 3, 4, 4, + 5, 3, 4, 5, 6, 2, 1, 2, 1, 2, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, + 2, 1, 1, 1, 3, 1, 3, 1, 1, 1, + 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, + 2, 2, 2, 2, 3, 1, 1, 1, 1, 4, + 5, 5, 6, 4, 4, 6, 6, 6, 8, 8, + 8, 8, 9, 8, 5, 4, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 8, 8, 0, 2, 3, 4, 4, 4, 4, 4, + 4, 4, 0, 3, 4, 7, 3, 1, 1, 2, + 3, 3, 1, 2, 2, 1, 2, 1, 2, 2, + 1, 2, 0, 1, 0, 2, 1, 2, 4, 0, + 2, 1, 3, 5, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 0, 3, 0, 2, 0, + 3, 1, 3, 2, 0, 1, 1, 0, 2, 4, + 4, 0, 2, 4, 2, 1, 3, 5, 4, 6, + 1, 3, 3, 5, 0, 5, 1, 3, 1, 2, + 3, 1, 1, 3, 3, 1, 2, 3, 3, 3, + 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, + 0, 2, 0, 3, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 0, 1, 1, 0, 2, 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, 1, 1, 1, 1, 1, @@ -2937,329 +2957,329 @@ var yyR2 = [...]int{ 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, 1, - 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -199, -1, -2, -7, -8, -9, -10, -11, -12, - -13, -14, -15, -16, -17, -21, -22, -23, -25, -26, - -27, -6, -24, -18, -3, -4, 6, 7, -31, 9, - 10, 30, -19, 119, 120, 122, 121, 155, 123, 148, - 52, 169, 170, 172, 173, 150, 25, 149, 153, 154, - 31, 32, 125, -201, 8, 255, 56, -200, 356, -91, - 15, -30, 5, -28, -204, -28, -28, -28, -28, -28, - -174, -176, 56, 94, -125, 129, 76, 247, 126, 127, - 133, -128, -192, -127, 59, 60, 61, 265, 141, 297, - 298, 169, 180, 174, 201, 193, 266, 299, 142, 191, - 194, 234, 139, 300, 221, 228, 70, 172, 243, 301, - 151, 189, 185, 302, 274, 183, 27, 303, 230, 206, - 304, 270, 232, 184, 229, 125, 305, 144, 137, 306, - 207, 211, 307, 235, 308, 309, 310, 178, 179, 311, - 140, 237, 205, 138, 33, 267, 36, 159, 238, 209, - 312, 204, 200, 313, 314, 315, 316, 203, 177, 199, - 40, 213, 212, 214, 233, 196, 317, 318, 319, 145, - 320, 186, 18, 321, 322, 323, 324, 325, 241, 154, - 326, 157, 327, 328, 329, 330, 331, 332, 231, 208, - 210, 134, 161, 269, 333, 239, 182, 334, 146, 158, - 153, 242, 147, 335, 336, 337, 338, 339, 340, 341, - 173, 342, 343, 344, 345, 168, 236, 245, 39, 218, - 346, 176, 136, 347, 170, 165, 223, 197, 160, 348, - 349, 187, 188, 202, 175, 198, 171, 162, 155, 350, - 244, 219, 271, 195, 192, 166, 351, 163, 164, 352, - 224, 225, 167, 268, 240, 190, 220, -111, 129, 247, - 126, 225, 131, 127, 127, 128, 129, 247, 126, 127, - -58, -134, -192, -127, 129, 127, 112, 194, 234, 119, - 222, 230, -117, 231, 161, -143, 127, -113, 221, 224, - 225, 167, -192, 232, 236, 235, 226, -134, 171, -32, - -139, 353, -139, -139, -139, -139, 223, 223, -139, -2, - -95, 17, 16, -5, -3, -201, 6, 20, 21, -34, - -41, 41, 42, -42, 21, 34, 45, 43, -29, -40, - 103, -43, -134, -64, 78, -69, 29, -192, -127, 23, - -68, -65, -84, -82, -83, 112, 113, 114, 101, 102, - 109, 79, 115, -73, -71, -72, -74, 63, 62, 71, - 64, 65, 66, 67, 72, 73, 74, -128, -80, -201, - 46, 47, 256, 257, 258, 259, 264, 260, 81, 35, - 246, 254, 253, 252, 250, 251, 248, 249, 262, 263, - 132, 247, 126, 107, 255, -111, -111, 11, -52, -53, - -58, -60, -134, -103, -142, 171, -106, 236, 235, -129, - -104, -128, -126, 234, 194, 233, 124, 272, 77, 22, - 24, 216, 80, 112, 16, 81, 111, 256, 119, 50, - 273, 248, 249, 246, 258, 259, 247, 222, 29, 10, - 275, 25, 149, 21, 34, 105, 121, 84, 85, 152, - 23, 150, 74, 278, 19, 53, 11, 13, 279, 280, - 14, 132, 131, 96, 128, 48, 8, 115, 26, 93, - 44, 281, 28, 282, 283, 284, 285, 46, 94, 17, - 250, 251, 31, 286, 264, 156, 107, 51, 37, 78, - 287, 288, 72, 289, 75, 54, 76, 15, 49, 290, - 291, 292, 293, 95, 122, 255, 47, 294, 126, 6, - 261, 30, 148, 45, 295, 127, 83, 262, 263, 130, - 73, 5, 133, 32, 9, 52, 55, 252, 253, 254, - 35, 82, 12, 296, -175, 94, -166, -192, -58, 128, - -58, 255, -121, 132, -121, -121, 127, -58, -192, -192, - 119, 121, 124, 54, -20, -58, -120, 132, -192, -120, - -120, -120, -58, 116, -58, -192, 30, -118, 94, 12, - 247, -192, 161, 127, 162, 129, -140, -201, -129, -170, - 128, 33, 140, -140, 165, 166, -140, -116, -115, 228, - 229, 223, 227, 12, 166, 223, 164, -140, -2, -9, - -8, -10, 86, -139, -139, -202, 58, -96, 19, 31, - -43, -134, -92, -93, -43, -91, -2, -28, 37, -38, - -40, -42, 41, 42, 69, 11, -131, 77, 76, 93, - -130, 22, -128, 63, 116, -43, -66, 96, 78, 94, - 95, 80, 98, 97, 108, 101, 102, 103, 104, 105, - 106, 107, 99, 100, 111, 86, 87, 88, 89, 90, - 91, 92, -112, -201, -83, -201, 117, 118, -69, -69, - -69, -69, -69, -69, -69, -69, -201, -2, -78, -43, - -201, -201, -201, -201, -201, -201, -201, -201, -201, -87, - -43, -201, -205, -75, -201, -205, -75, -205, -75, -205, - -201, -205, -75, -205, -75, -205, -205, -75, -201, -201, - -201, -201, -201, -201, -201, -59, 26, -58, -45, -46, - -47, -48, -61, -83, -201, -58, -58, -52, -203, 57, - 11, 55, -203, 57, 116, 57, 171, -106, -108, -107, - 237, 239, 86, -133, -128, 63, 29, 30, 58, 57, - -58, -145, -148, -150, -149, -151, -146, -147, 191, 192, - 112, 195, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 30, 151, 187, 188, 189, 190, 207, 208, - 209, 210, 211, 212, 213, 214, 174, 193, 266, 175, - 176, 177, 178, 179, 180, 182, 183, 184, 185, 186, - -192, -140, 129, -192, 78, -192, -58, -58, -140, -140, - -140, 163, 163, 127, 127, 168, -58, 57, 130, -52, - 23, 54, -58, -192, -192, -135, -134, -126, -140, -118, - 63, -43, -140, -140, -140, -58, -140, -140, -171, 11, - 96, -140, -140, 11, -114, 11, 96, -43, -119, 94, - 54, 205, 354, 355, 9, 96, 57, 18, 116, 57, - -94, 24, 25, -95, -202, -70, -128, 64, 67, -44, - 57, 11, -42, -58, -43, -43, -76, 72, 78, 73, - 74, -130, 103, -135, -129, -126, -69, -77, -80, -83, - 68, 96, 94, 95, 80, -69, -69, -69, -69, -69, - -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, - -141, -192, 63, -192, -68, -68, -128, -39, 21, 34, - -38, -202, 57, -202, -2, -38, -38, -43, -43, -84, - 63, -38, -84, 63, -38, -38, -33, 21, 34, -85, - -86, 82, -84, -128, -134, -202, -69, -128, -128, -38, - -39, -39, -38, -38, -99, 157, -58, 30, 57, -54, - -56, -55, -57, 44, 48, 50, 45, 46, 47, 51, - -138, 22, -45, -201, -137, 157, -136, 22, -134, 63, - -99, 55, -45, -58, -45, -60, -134, 103, -106, -108, - 57, 238, 240, 241, 54, 75, -43, -157, 111, -177, - -178, -179, -129, 63, 64, -166, -167, -168, -180, 143, - -185, 134, 136, 133, -169, 144, 128, 28, 58, -162, - 72, 78, -158, 219, -152, 56, -152, -152, -152, -152, - -156, 194, -156, -156, -156, 56, 56, -152, -152, -152, - -160, 56, -160, -160, -161, 56, -161, -132, 55, -58, - -140, 23, -140, -122, 124, 121, 122, -188, 120, 216, - 194, 70, 29, 15, 256, 157, 271, -192, 158, -58, - -58, -58, -58, -58, 124, 121, -58, -58, -58, -140, - -58, -58, -118, -134, -134, 63, -58, 39, -43, -43, - -135, -93, -96, -110, 19, 11, 35, 35, -63, 12, - -40, -45, -42, 72, 73, 74, 116, -201, -77, -69, - -69, -69, -37, 152, 77, -202, -202, -38, -38, -43, - -202, -202, -202, 57, 55, 22, 11, 11, -202, 11, - 11, -202, -202, -38, -88, -86, 84, -43, -202, 116, - -202, 57, 57, -202, -202, -202, -202, -202, -67, 30, - 35, -2, -201, -201, -102, -105, -84, -46, -47, -47, - -46, -47, 44, 44, 44, 49, 44, 49, 44, -55, - -134, -202, -62, 52, 131, 53, -201, -136, -63, -45, - -63, -63, 116, -107, -109, 242, 239, 245, -192, 63, - 57, -179, 86, 56, -192, 28, -169, -169, -172, -192, - -172, 28, -154, 29, 72, -159, 220, 64, -156, -156, - -157, 30, -157, -157, -157, -165, 63, -165, 64, 64, - 54, -128, -140, -139, -195, 139, 135, 143, 144, 137, - 59, 60, 61, 128, 28, 134, 136, 157, 133, -195, - -123, -124, 130, 22, 128, 28, 157, -194, 55, 163, - 216, 163, 130, -140, -114, -114, 40, 116, -58, -89, - 13, -43, 103, -129, -39, -37, 77, -69, -69, -202, - -202, -144, 112, 191, 151, 189, 185, 205, 196, 218, - 187, 219, -141, -144, -69, -69, -69, -69, 265, -91, - 85, -43, 83, -129, -69, -69, -101, 54, -102, -79, - -81, -80, -201, -2, -97, -128, -100, -128, -63, 57, - 86, -50, -49, 54, 55, -51, 54, -49, 44, 44, - 128, 128, 128, -100, -91, -63, 239, 243, 244, -178, - -179, -182, -181, -128, -185, -172, -172, 56, -155, 54, - -69, 58, -157, -157, -192, 112, 58, 57, 58, 57, - 58, 57, -58, -139, -139, -58, -139, -128, -191, 268, - -193, -192, -128, -128, -128, -58, -118, -118, -90, 14, - 16, -202, -69, -202, -152, -152, -152, -161, -152, 179, - -152, 179, -202, -202, 19, 19, 19, 19, -201, -36, - 261, -43, 57, 57, 27, -101, 57, -202, -202, -202, - 57, 116, -202, 57, -91, -105, -43, -43, 56, -43, - -201, -201, -201, -202, -95, 58, 57, -152, -98, -128, - -163, 216, 9, -156, 63, -156, 64, 64, -140, 26, - -190, -189, -129, 56, 55, -43, -78, -156, -192, -69, - -69, -69, -69, -69, -95, 63, -69, -69, 28, -81, - 35, -2, -201, -128, -128, -128, -95, -98, -98, -202, - -98, -98, -137, -184, -183, 55, 138, 70, -181, 58, - 57, -164, 134, 28, 133, -72, -157, -157, 58, 58, - -201, 57, 86, -98, -58, -202, -202, -202, -202, -35, - 96, 268, -202, -202, -202, 9, -79, -2, 116, 58, - -202, -202, -202, -62, -183, -192, -173, 86, 63, 146, - -128, -153, 70, 28, 28, -186, -187, 157, -189, -179, - 58, -202, 266, 51, 269, -102, -202, -128, 64, -58, - 63, -202, 57, -128, -194, 40, 267, 270, 56, -187, - 35, -191, 40, -98, 159, 268, 58, 160, 269, -197, - -198, 54, -201, 270, -198, 54, 10, 9, -69, 156, - -196, 147, 142, 145, 30, -196, -202, -202, 141, 29, - 72, + -1000, -201, -1, -2, -8, -9, -10, -11, -12, -13, + -14, -15, -16, -17, -18, -22, -23, -24, -26, -27, + -28, -6, -25, -19, -3, -4, 6, 7, -32, 9, + 10, 30, -20, 119, 120, 122, 121, 155, 123, 148, + 52, 169, 170, 172, 173, -34, 25, 149, 150, 153, + 154, 31, 32, 125, -203, 8, 255, 56, -202, 356, + -93, 15, -31, 5, -29, -206, -29, -29, -29, -29, + -29, -176, -178, 56, 94, -127, 129, 76, 247, 126, + 127, 133, -130, -194, -129, 59, 60, 61, 265, 141, + 297, 298, 169, 180, 174, 201, 193, 266, 299, 142, + 191, 194, 234, 139, 300, 221, 228, 70, 172, 243, + 301, 151, 189, 185, 302, 274, 183, 27, 303, 230, + 206, 304, 270, 232, 184, 229, 125, 305, 144, 137, + 306, 207, 211, 307, 235, 308, 309, 310, 178, 179, + 311, 140, 237, 205, 138, 33, 267, 36, 159, 238, + 209, 312, 204, 200, 313, 314, 315, 316, 203, 177, + 199, 40, 213, 212, 214, 233, 196, 317, 318, 319, + 145, 320, 186, 18, 321, 322, 323, 324, 325, 241, + 154, 326, 157, 327, 328, 329, 330, 331, 332, 231, + 208, 210, 134, 161, 269, 333, 239, 182, 334, 146, + 158, 153, 242, 147, 335, 336, 337, 338, 339, 340, + 341, 173, 342, 343, 344, 345, 168, 236, 245, 39, + 218, 346, 176, 136, 347, 170, 165, 223, 197, 160, + 348, 349, 187, 188, 202, 175, 198, 171, 162, 155, + 350, 244, 219, 271, 195, 192, 166, 351, 163, 164, + 352, 224, 225, 167, 268, 240, 190, 220, -113, 129, + 247, 126, 225, 131, 127, 127, 128, 129, 247, 126, + 127, -60, -136, -194, -129, 129, 127, 112, 194, 234, + 119, 222, 230, -119, 231, 161, -145, 127, -115, 221, + 224, 225, 167, -194, 232, 236, 235, 226, -136, 171, + -33, 353, -141, -141, -141, -141, -141, 223, 223, -141, + -2, -97, 17, 16, -5, -3, -203, 6, 20, 21, + -36, -43, 41, 42, -44, 21, 34, 45, 43, -30, + -42, 103, -45, -136, -66, 78, -71, 29, -194, -129, + 23, -70, -67, -86, -84, -85, 112, 113, 114, 101, + 102, 109, 79, 115, -75, -73, -74, -76, 63, 62, + 71, 64, 65, 66, 67, 72, 73, 74, -130, -82, + -203, 46, 47, 256, 257, 258, 259, 264, 260, 81, + 35, 246, 254, 253, 252, 250, 251, 248, 249, 262, + 263, 132, 247, 126, 107, 255, -113, -113, 11, -54, + -55, -60, -62, -136, -105, -144, 171, -108, 236, 235, + -131, -106, -130, -128, 234, 194, 233, 124, 272, 77, + 22, 24, 216, 80, 112, 16, 81, 111, 256, 119, + 50, 273, 248, 249, 246, 258, 259, 247, 222, 29, + 10, 275, 25, 149, 21, 34, 105, 121, 84, 85, + 152, 23, 150, 74, 278, 19, 53, 11, 13, 279, + 280, 14, 132, 131, 96, 128, 48, 8, 115, 26, + 93, 44, 281, 28, 282, 283, 284, 285, 46, 94, + 17, 250, 251, 31, 286, 264, 156, 107, 51, 37, + 78, 287, 288, 72, 289, 75, 54, 76, 15, 49, + 290, 291, 292, 293, 95, 122, 255, 47, 294, 126, + 6, 261, 30, 148, 45, 295, 127, 83, 262, 263, + 130, 73, 5, 133, 32, 9, 52, 55, 252, 253, + 254, 35, 82, 12, 296, -177, 94, -168, -194, -60, + 128, -60, 255, -123, 132, -123, -123, 127, -60, -194, + -194, 119, 121, 124, 54, -21, -60, -122, 132, -194, + -122, -122, -122, -60, 116, -60, -194, 30, -120, 94, + 12, 247, -194, 161, 127, 162, 129, -142, -203, -131, + -172, 128, 33, 140, -142, 165, 166, -142, -118, -117, + 228, 229, 223, 227, 12, 166, 223, 164, -142, -7, + -2, -10, -9, -11, 86, -141, -141, -204, 58, -98, + 19, 31, -45, -136, -94, -95, -45, -93, -2, -29, + 37, -40, -42, -44, 41, 42, 69, 11, -133, 77, + 76, 93, -132, 22, -130, 63, 116, -45, -68, 96, + 78, 94, 95, 80, 98, 97, 108, 101, 102, 103, + 104, 105, 106, 107, 99, 100, 111, 86, 87, 88, + 89, 90, 91, 92, -114, -203, -85, -203, 117, 118, + -71, -71, -71, -71, -71, -71, -71, -71, -203, -2, + -80, -45, -203, -203, -203, -203, -203, -203, -203, -203, + -203, -89, -45, -203, -207, -77, -203, -207, -77, -207, + -77, -207, -203, -207, -77, -207, -77, -207, -207, -77, + -203, -203, -203, -203, -203, -203, -203, -61, 26, -60, + -47, -48, -49, -50, -63, -85, -203, -60, -60, -54, + -205, 57, 11, 55, -205, 57, 116, 57, 171, -108, + -110, -109, 237, 239, 86, -135, -130, 63, 29, 30, + 58, 57, -60, -147, -150, -152, -151, -153, -148, -149, + 191, 192, 112, 195, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 30, 151, 187, 188, 189, 190, + 207, 208, 209, 210, 211, 212, 213, 214, 174, 193, + 266, 175, 176, 177, 178, 179, 180, 182, 183, 184, + 185, 186, -194, -142, 129, -194, 78, -194, -60, -60, + -142, -142, -142, 163, 163, 127, 127, 168, -60, 57, + 130, -54, 23, 54, -60, -194, -194, -137, -136, -128, + -142, -120, 63, -45, -142, -142, -142, -60, -142, -142, + -173, 11, 96, -142, -142, 11, -116, 11, 96, -45, + -121, 94, 54, 205, 354, 355, 9, 96, 57, 18, + 116, 57, -96, 24, 25, -97, -204, -72, -130, 64, + 67, -46, 57, 11, -44, -60, -45, -45, -78, 72, + 78, 73, 74, -132, 103, -137, -131, -128, -71, -79, + -82, -85, 68, 96, 94, 95, 80, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -143, -194, 63, -194, -70, -70, -130, -41, + 21, 34, -40, -204, 57, -204, -2, -40, -40, -45, + -45, -86, 63, -40, -86, 63, -40, -40, -35, 21, + 34, -87, -88, 82, -86, -130, -136, -204, -71, -130, + -130, -40, -41, -41, -40, -40, -101, 157, -60, 30, + 57, -56, -58, -57, -59, 44, 48, 50, 45, 46, + 47, 51, -140, 22, -47, -203, -139, 157, -138, 22, + -136, 63, -101, 55, -47, -60, -47, -62, -136, 103, + -108, -110, 57, 238, 240, 241, 54, 75, -45, -159, + 111, -179, -180, -181, -131, 63, 64, -168, -169, -170, + -182, 143, -187, 134, 136, 133, -171, 144, 128, 28, + 58, -164, 72, 78, -160, 219, -154, 56, -154, -154, + -154, -154, -158, 194, -158, -158, -158, 56, 56, -154, + -154, -154, -162, 56, -162, -162, -163, 56, -163, -134, + 55, -60, -142, 23, -142, -124, 124, 121, 122, -190, + 120, 216, 194, 70, 29, 15, 256, 157, 271, -194, + 158, -60, -60, -60, -60, -60, 124, 121, -60, -60, + -60, -142, -60, -60, -120, -136, -136, 63, -60, 39, + -45, -45, -137, -95, -98, -112, 19, 11, 35, 35, + -65, 12, -42, -47, -44, 72, 73, 74, 116, -203, + -79, -71, -71, -71, -39, 152, 77, -204, -204, -40, + -40, -45, -204, -204, -204, 57, 55, 22, 11, 11, + -204, 11, 11, -204, -204, -40, -90, -88, 84, -45, + -204, 116, -204, 57, 57, -204, -204, -204, -204, -204, + -69, 30, 35, -2, -203, -203, -104, -107, -86, -48, + -49, -49, -48, -49, 44, 44, 44, 49, 44, 49, + 44, -57, -136, -204, -64, 52, 131, 53, -203, -138, + -65, -47, -65, -65, 116, -109, -111, 242, 239, 245, + -194, 63, 57, -181, 86, 56, -194, 28, -171, -171, + -174, -194, -174, 28, -156, 29, 72, -161, 220, 64, + -158, -158, -159, 30, -159, -159, -159, -167, 63, -167, + 64, 64, 54, -130, -142, -141, -197, 139, 135, 143, + 144, 137, 59, 60, 61, 128, 28, 134, 136, 157, + 133, -197, -125, -126, 130, 22, 128, 28, 157, -196, + 55, 163, 216, 163, 130, -142, -116, -116, 40, 116, + -60, -91, 13, -45, 103, -131, -41, -39, 77, -71, + -71, -204, -204, -146, 112, 191, 151, 189, 185, 205, + 196, 218, 187, 219, -143, -146, -71, -71, -71, -71, + 265, -93, 85, -45, 83, -131, -71, -71, -103, 54, + -104, -81, -83, -82, -203, -2, -99, -130, -102, -130, + -65, 57, 86, -52, -51, 54, 55, -53, 54, -51, + 44, 44, 128, 128, 128, -102, -93, -65, 239, 243, + 244, -180, -181, -184, -183, -130, -187, -174, -174, 56, + -157, 54, -71, 58, -159, -159, -194, 112, 58, 57, + 58, 57, 58, 57, -60, -141, -141, -60, -141, -130, + -193, 268, -195, -194, -130, -130, -130, -60, -120, -120, + -92, 14, 16, -204, -71, -204, -154, -154, -154, -163, + -154, 179, -154, 179, -204, -204, 19, 19, 19, 19, + -203, -38, 261, -45, 57, 57, 27, -103, 57, -204, + -204, -204, 57, 116, -204, 57, -93, -107, -45, -45, + 56, -45, -203, -203, -203, -204, -97, 58, 57, -154, + -100, -130, -165, 216, 9, -158, 63, -158, 64, 64, + -142, 26, -192, -191, -131, 56, 55, -45, -80, -158, + -194, -71, -71, -71, -71, -71, -97, 63, -71, -71, + 28, -83, 35, -2, -203, -130, -130, -130, -97, -100, + -100, -204, -100, -100, -139, -186, -185, 55, 138, 70, + -183, 58, 57, -166, 134, 28, 133, -74, -159, -159, + 58, 58, -203, 57, 86, -100, -60, -204, -204, -204, + -204, -37, 96, 268, -204, -204, -204, 9, -81, -2, + 116, 58, -204, -204, -204, -64, -185, -194, -175, 86, + 63, 146, -130, -155, 70, 28, 28, -188, -189, 157, + -191, -181, 58, -204, 266, 51, 269, -104, -204, -130, + 64, -60, 63, -204, 57, -130, -196, 40, 267, 270, + 56, -189, 35, -193, 40, -100, 159, 268, 58, 160, + 269, -199, -200, 54, -203, 270, -200, 54, 10, 9, + -71, 156, -198, 147, 142, 145, 30, -198, -204, -204, + 141, 29, 72, } var yyDef = [...]int{ 25, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 595, 0, 339, 339, 339, 339, - 339, 339, 0, 667, 650, 0, 0, 0, 0, -2, - 318, 319, 0, 321, 322, -2, 971, 971, 971, 971, - 0, 0, 971, 0, 40, 41, 969, 1, 3, 603, - 0, 0, 343, -2, 341, 0, 650, 650, 0, 0, - 69, 70, 0, 0, 0, 958, 0, 648, 648, 648, - 668, 669, 672, 673, 26, 27, 28, 798, 799, 800, - 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, - 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, - 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, - 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, - 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, - 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, - 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, - 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, - 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, - 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 959, 960, 961, - 962, 963, 964, 965, 966, 967, 968, 0, 0, 0, - 0, 0, 651, 0, 646, 0, 646, 646, 646, 0, - 269, 421, 676, 677, 958, 0, 0, 0, 309, 0, - 972, 281, 0, 283, 972, 0, 972, 0, 290, 0, - 0, 296, 972, 301, 315, 316, 303, 317, 320, 0, - 333, 0, 331, 332, 334, 335, 971, 971, 338, 34, - 607, 0, 0, 595, 36, 0, 339, 344, 345, 0, - 0, -2, -2, 355, 361, 362, 363, 364, 340, 0, - 367, 371, 0, 431, 0, 436, 438, -2, -2, 0, - 473, 474, 475, 476, 477, 0, 0, 0, 0, 0, - 0, 0, 0, 501, 502, 503, 504, 580, 581, 582, - 583, 584, 585, 586, 587, 440, 441, 577, 627, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 568, 0, - 538, 538, 538, 538, 538, 538, 538, 538, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 51, 421, 55, 0, 947, 631, -2, -2, 0, - 0, 674, 675, -2, 811, -2, 680, 681, 682, 683, - 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, - 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, - 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, - 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, - 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, - 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, - 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, - 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, - 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 794, 795, 796, 797, 0, 0, 88, 0, 86, 0, - 972, 0, 0, 0, 0, 0, 0, 972, 972, 972, - 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, - 0, 0, 268, 0, 270, 972, 309, 273, 0, 0, - 972, 972, 972, 0, 972, 972, 280, 973, 974, 0, - 190, 191, 192, 284, 972, 972, 286, 0, 306, 304, - 305, 298, 299, 0, 312, 293, 294, 297, -2, 328, - 329, 330, 0, 336, 337, 35, 970, 29, 0, 0, - 604, 0, 596, 597, 600, 603, 34, 354, 0, 376, - 365, 356, 359, 360, 342, 0, 368, 0, 0, 0, - 372, 0, 374, 375, 0, 434, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 458, 459, 460, 461, 462, - 463, 464, 437, 0, 451, 0, 0, 0, 493, 494, - 495, 496, 497, 498, 499, 0, 352, 34, 0, 471, - 0, 0, 0, 0, 0, 0, 0, 0, 349, 0, - 569, 0, 522, 530, 0, 523, 531, 524, 532, 525, - 0, 526, 533, 527, 534, 528, 529, 535, 0, 0, - 0, 352, 352, 0, 0, 53, 0, 420, 0, 378, - 380, 381, 382, -2, 0, 404, -2, 0, 0, 0, - 47, 48, 0, 0, 0, 0, 947, 632, 57, 58, - 0, 0, 0, 166, 641, 642, 643, 639, 215, 0, - 0, 154, 150, 94, 95, 96, 143, 98, 143, 143, - 143, 143, 163, 163, 163, 163, 126, 127, 128, 129, - 130, 0, 0, 113, 143, 143, 143, 117, 133, 134, - 135, 136, 137, 138, 139, 140, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 145, 145, 145, 147, 147, - 670, 72, 0, 972, 0, 972, 84, 0, 229, 231, - 232, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 647, 0, 972, 266, 267, 422, 678, 679, 271, 272, - 310, 311, 274, 275, 276, 277, 278, 279, 0, 193, - 194, 285, 289, 0, 309, 0, 0, 291, 292, 0, - 0, 324, 325, 326, 608, 0, 0, 0, 0, 0, - 599, 601, 602, 607, 37, 0, 588, 0, 0, 429, - 0, 0, 357, 32, 432, 433, 435, 452, 0, 454, - 456, 373, 369, 0, 578, -2, 442, 443, 467, 468, - 469, 0, 0, 0, 0, 465, 447, 0, 478, 479, - 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 492, 553, 554, 0, 490, 491, 500, 0, 0, 0, - 353, 470, 0, 626, 34, 0, 0, 0, 0, 475, - 580, 0, 475, 580, 0, 0, 0, 350, 351, 575, - 572, 0, 0, 577, 0, 539, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 419, 0, 0, 0, - 0, 0, 0, 409, 0, 0, 412, 0, 0, 0, - 0, 403, 0, 0, 424, 892, 405, 0, 407, 408, - 429, 0, 429, 50, 429, 52, 0, 423, 633, 56, - 0, 0, 61, 62, 634, 635, 636, 637, 0, 85, - 216, 218, 221, 222, 223, 89, 90, 91, 0, 0, - 203, 0, 0, 197, 197, 0, 195, 196, 87, 157, - 155, 0, 152, 151, 97, 0, 163, 163, 120, 121, - 166, 0, 166, 166, 166, 0, 0, 114, 115, 116, - 108, 0, 109, 110, 111, 0, 112, 0, 0, 972, - 74, 649, 75, 971, 0, 0, 662, 230, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 0, 76, - 234, 236, 235, 239, 0, 0, 0, 261, 972, 265, - 306, 306, 288, 307, 308, 313, 295, 0, 605, 606, - 0, 598, 30, 0, 644, 645, 589, 590, 591, 0, - 366, 377, 358, 453, 455, 457, 0, 352, 444, 465, - 448, 0, 445, 0, 0, 439, 505, 0, 0, 472, - -2, 509, 510, 0, 0, 0, 0, 0, 546, 0, - 0, 547, 0, 595, 0, 573, 0, 0, 521, 0, - 540, 0, 0, 541, 542, 543, 544, 545, 620, 0, - 0, -2, 0, 0, 429, 628, 0, 379, 398, 400, - 0, 395, 410, 411, 413, 0, 415, 0, 417, 418, - 383, 385, 386, 0, 0, 0, 0, 406, 595, 429, - 45, 46, 0, 59, 60, 0, 0, 66, 167, 168, - 0, 219, 0, 0, 0, 185, 197, 197, 188, 198, - 189, 0, 159, 0, 156, 93, 153, 0, 166, 166, - 122, 0, 123, 124, 125, 0, 141, 0, 0, 0, - 0, 671, 73, 224, 971, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 971, - 0, 971, 663, 664, 665, 666, 0, 79, 0, 0, - 0, 0, 0, 264, 309, 309, 609, 0, 31, 593, - 0, 430, 370, 579, 0, 446, 0, 466, 449, 506, - 507, 0, 143, 143, 558, 143, 147, 561, 143, 563, - 143, 566, 0, 0, 0, 0, 0, 0, 0, 570, - 520, 576, 0, 578, 0, 0, 38, 0, 620, 610, - 622, 624, 0, 34, 0, 616, 0, 390, 595, 0, - 0, 392, 399, 0, 0, 393, 0, 394, 414, 416, - 0, 0, 0, 0, 603, 44, 63, 64, 65, 217, - 220, 0, 199, 143, 202, 186, 187, 0, 161, 0, - 158, 144, 118, 119, 164, 165, 163, 0, 163, 0, - 148, 0, 972, 225, 226, 227, 228, 0, 233, 0, - 77, 78, 0, 0, 238, 262, 282, 287, 33, 0, - 0, 508, 450, 511, 555, 163, 559, 560, 562, 564, - 565, 567, 513, 512, 0, 0, 0, 0, 0, 603, - 0, 574, 0, 0, 0, 39, 0, 625, -2, 0, - 0, 0, 54, 0, 603, 629, 630, 396, 0, 401, - 0, 0, 0, 404, 43, 177, 0, 201, 0, 388, - 169, 162, 0, 166, 142, 166, 0, 0, 71, 0, - 80, 81, 0, 0, 0, 594, 592, 556, 557, 0, - 0, 0, 0, 548, 0, 571, 0, 0, 0, 623, - 0, -2, 0, 618, 617, 391, 42, 0, 0, 426, - 0, 0, 424, 176, 178, 0, 183, 0, 200, 0, - 0, 174, 0, 171, 173, 160, 131, 132, 146, 149, - 0, 0, 0, 0, 240, 514, 516, 515, 517, 0, - 0, 0, 519, 536, 537, 0, 613, 34, 0, 397, - 425, 427, 428, 387, 179, 180, 0, 184, 182, 0, - 389, 92, 0, 170, 172, 0, 256, 0, 82, 83, - 76, 518, 0, 0, 0, 621, -2, 619, 181, 0, - 175, 255, 0, 0, 79, 549, 0, 552, 0, 257, - 0, 237, 550, 0, 0, 0, 204, 0, 0, 205, - 206, 0, 0, 551, 207, 0, 0, 0, 0, 0, - 208, 210, 211, 0, 0, 209, 258, 259, 212, 213, - 214, + 21, 22, 23, 24, 599, 0, 343, 343, 343, 343, + 343, 343, 0, 671, 654, 0, 0, 0, 0, -2, + 318, 319, 0, 321, 322, 323, -2, -2, -2, 975, + 975, 0, 0, 975, 0, 40, 41, 973, 1, 3, + 607, 0, 0, 347, -2, 345, 0, 654, 654, 0, + 0, 69, 70, 0, 0, 0, 962, 0, 652, 652, + 652, 672, 673, 676, 677, 26, 27, 28, 802, 803, + 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, + 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, + 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, + 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, + 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, + 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, + 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, + 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, + 954, 955, 956, 957, 958, 959, 960, 961, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, 0, 0, + 0, 0, 0, 655, 0, 650, 0, 650, 650, 650, + 0, 269, 425, 680, 681, 962, 0, 0, 0, 309, + 0, 976, 281, 0, 283, 976, 0, 976, 0, 290, + 0, 0, 296, 976, 301, 315, 316, 303, 317, 320, + 0, 0, 335, 336, 337, 338, 339, 975, 975, 342, + 34, 611, 0, 0, 599, 36, 0, 343, 348, 349, + 0, 0, -2, -2, 359, 365, 366, 367, 368, 344, + 0, 371, 375, 0, 435, 0, 440, 442, -2, -2, + 0, 477, 478, 479, 480, 481, 0, 0, 0, 0, + 0, 0, 0, 0, 505, 506, 507, 508, 584, 585, + 586, 587, 588, 589, 590, 591, 444, 445, 581, 631, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 572, + 0, 542, 542, 542, 542, 542, 542, 542, 542, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 49, 51, 425, 55, 0, 951, 635, -2, -2, + 0, 0, 678, 679, -2, 815, -2, 684, 685, 686, + 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, + 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, + 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, + 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, + 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, + 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, + 797, 798, 799, 800, 801, 0, 0, 88, 0, 86, + 0, 976, 0, 0, 0, 0, 0, 0, 976, 976, + 976, 0, 0, 0, 0, 260, 0, 0, 0, 0, + 0, 0, 0, 268, 0, 270, 976, 309, 273, 0, + 0, 976, 976, 976, 0, 976, 976, 280, 977, 978, + 0, 190, 191, 192, 284, 976, 976, 286, 0, 306, + 304, 305, 298, 299, 0, 312, 293, 294, 297, 334, + -2, 331, 332, 333, 0, 340, 341, 35, 974, 29, + 0, 0, 608, 0, 600, 601, 604, 607, 34, 358, + 0, 380, 369, 360, 363, 364, 346, 0, 372, 0, + 0, 0, 376, 0, 378, 379, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 462, 463, 464, + 465, 466, 467, 468, 441, 0, 455, 0, 0, 0, + 497, 498, 499, 500, 501, 502, 503, 0, 356, 34, + 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, + 353, 0, 573, 0, 526, 534, 0, 527, 535, 528, + 536, 529, 0, 530, 537, 531, 538, 532, 533, 539, + 0, 0, 0, 356, 356, 0, 0, 53, 0, 424, + 0, 382, 384, 385, 386, -2, 0, 408, -2, 0, + 0, 0, 47, 48, 0, 0, 0, 0, 951, 636, + 57, 58, 0, 0, 0, 166, 645, 646, 647, 643, + 215, 0, 0, 154, 150, 94, 95, 96, 143, 98, + 143, 143, 143, 143, 163, 163, 163, 163, 126, 127, + 128, 129, 130, 0, 0, 113, 143, 143, 143, 117, + 133, 134, 135, 136, 137, 138, 139, 140, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 145, 145, 145, + 147, 147, 674, 72, 0, 976, 0, 976, 84, 0, + 229, 231, 232, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 651, 0, 976, 266, 267, 426, 682, 683, + 271, 272, 310, 311, 274, 275, 276, 277, 278, 279, + 0, 193, 194, 285, 289, 0, 309, 0, 0, 291, + 292, 0, 0, 324, 325, 326, 612, 0, 0, 0, + 0, 0, 603, 605, 606, 611, 37, 0, 592, 0, + 0, 433, 0, 0, 361, 32, 436, 437, 439, 456, + 0, 458, 460, 377, 373, 0, 582, -2, 446, 447, + 471, 472, 473, 0, 0, 0, 0, 469, 451, 0, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 496, 557, 558, 0, 494, 495, 504, 0, + 0, 0, 357, 474, 0, 630, 34, 0, 0, 0, + 0, 479, 584, 0, 479, 584, 0, 0, 0, 354, + 355, 579, 576, 0, 0, 581, 0, 543, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + 0, 0, 0, 0, 0, 413, 0, 0, 416, 0, + 0, 0, 0, 407, 0, 0, 428, 896, 409, 0, + 411, 412, 433, 0, 433, 50, 433, 52, 0, 427, + 637, 56, 0, 0, 61, 62, 638, 639, 640, 641, + 0, 85, 216, 218, 221, 222, 223, 89, 90, 91, + 0, 0, 203, 0, 0, 197, 197, 0, 195, 196, + 87, 157, 155, 0, 152, 151, 97, 0, 163, 163, + 120, 121, 166, 0, 166, 166, 166, 0, 0, 114, + 115, 116, 108, 0, 109, 110, 111, 0, 112, 0, + 0, 976, 74, 653, 75, 975, 0, 0, 666, 230, + 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 0, 76, 234, 236, 235, 239, 0, 0, 0, 261, + 976, 265, 306, 306, 288, 307, 308, 313, 295, 0, + 609, 610, 0, 602, 30, 0, 648, 649, 593, 594, + 595, 0, 370, 381, 362, 457, 459, 461, 0, 356, + 448, 469, 452, 0, 449, 0, 0, 443, 509, 0, + 0, 476, -2, 513, 514, 0, 0, 0, 0, 0, + 550, 0, 0, 551, 0, 599, 0, 577, 0, 0, + 525, 0, 544, 0, 0, 545, 546, 547, 548, 549, + 624, 0, 0, -2, 0, 0, 433, 632, 0, 383, + 402, 404, 0, 399, 414, 415, 417, 0, 419, 0, + 421, 422, 387, 389, 390, 0, 0, 0, 0, 410, + 599, 433, 45, 46, 0, 59, 60, 0, 0, 66, + 167, 168, 0, 219, 0, 0, 0, 185, 197, 197, + 188, 198, 189, 0, 159, 0, 156, 93, 153, 0, + 166, 166, 122, 0, 123, 124, 125, 0, 141, 0, + 0, 0, 0, 675, 73, 224, 975, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 975, 0, 975, 667, 668, 669, 670, 0, 79, + 0, 0, 0, 0, 0, 264, 309, 309, 613, 0, + 31, 597, 0, 434, 374, 583, 0, 450, 0, 470, + 453, 510, 511, 0, 143, 143, 562, 143, 147, 565, + 143, 567, 143, 570, 0, 0, 0, 0, 0, 0, + 0, 574, 524, 580, 0, 582, 0, 0, 38, 0, + 624, 614, 626, 628, 0, 34, 0, 620, 0, 394, + 599, 0, 0, 396, 403, 0, 0, 397, 0, 398, + 418, 420, 0, 0, 0, 0, 607, 44, 63, 64, + 65, 217, 220, 0, 199, 143, 202, 186, 187, 0, + 161, 0, 158, 144, 118, 119, 164, 165, 163, 0, + 163, 0, 148, 0, 976, 225, 226, 227, 228, 0, + 233, 0, 77, 78, 0, 0, 238, 262, 282, 287, + 33, 0, 0, 512, 454, 515, 559, 163, 563, 564, + 566, 568, 569, 571, 517, 516, 0, 0, 0, 0, + 0, 607, 0, 578, 0, 0, 0, 39, 0, 629, + -2, 0, 0, 0, 54, 0, 607, 633, 634, 400, + 0, 405, 0, 0, 0, 408, 43, 177, 0, 201, + 0, 392, 169, 162, 0, 166, 142, 166, 0, 0, + 71, 0, 80, 81, 0, 0, 0, 598, 596, 560, + 561, 0, 0, 0, 0, 552, 0, 575, 0, 0, + 0, 627, 0, -2, 0, 622, 621, 395, 42, 0, + 0, 430, 0, 0, 428, 176, 178, 0, 183, 0, + 200, 0, 0, 174, 0, 171, 173, 160, 131, 132, + 146, 149, 0, 0, 0, 0, 240, 518, 520, 519, + 521, 0, 0, 0, 523, 540, 541, 0, 617, 34, + 0, 401, 429, 431, 432, 391, 179, 180, 0, 184, + 182, 0, 393, 92, 0, 170, 172, 0, 256, 0, + 82, 83, 76, 522, 0, 0, 0, 625, -2, 623, + 181, 0, 175, 255, 0, 0, 79, 553, 0, 556, + 0, 257, 0, 237, 554, 0, 0, 0, 204, 0, + 0, 205, 206, 0, 0, 555, 207, 0, 0, 0, + 0, 0, 208, 210, 211, 0, 0, 209, 258, 259, + 212, 213, 214, } var yyTok1 = [...]int{ @@ -3665,53 +3685,53 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:335 +//line sql.y:336 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:340 +//line sql.y:341 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:341 +//line sql.y:342 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:345 +//line sql.y:346 { yyVAL.statement = yyDollar[1].selStmt } case 25: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:369 +//line sql.y:370 { setParseTree(yylex, nil) } case 26: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:375 +//line sql.y:376 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), NoAt) } case 27: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:379 +//line sql.y:380 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), SingleAt) } case 28: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:383 +//line sql.y:384 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), DoubleAt) } case 29: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:389 +//line sql.y:390 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -3721,55 +3741,55 @@ yydefault: } case 30: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:397 +//line sql.y:398 { yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str} } case 31: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:401 +//line sql.y:402 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), SelectExprs{Nextval{Expr: yyDollar[5].expr}}, []string{yyDollar[3].str} /*options*/, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/) } case 32: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:407 +//line sql.y:408 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } case 33: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:415 +//line sql.y:416 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), yyDollar[4].selectExprs /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].tableExprs /*from*/, NewWhere(WhereStr, yyDollar[6].expr), GroupBy(yyDollar[7].exprs), NewWhere(HavingStr, yyDollar[8].expr)) } case 34: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:421 +//line sql.y:422 { yyVAL.selStmt = yyDollar[1].selStmt } case 35: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:425 +//line sql.y:426 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 36: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:431 +//line sql.y:432 { yyVAL.selStmt = yyDollar[1].selStmt } case 37: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:435 +//line sql.y:436 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 38: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:442 +//line sql.y:443 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -3783,7 +3803,7 @@ yydefault: } case 39: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:454 +//line sql.y:455 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -3795,186 +3815,186 @@ yydefault: } case 40: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:466 +//line sql.y:467 { yyVAL.str = InsertStr } case 41: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:470 +//line sql.y:471 { yyVAL.str = ReplaceStr } case 42: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:476 +//line sql.y:477 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, TableExprs: yyDollar[4].tableExprs, Exprs: yyDollar[6].updateExprs, Where: NewWhere(WhereStr, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit} } case 43: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:482 +//line sql.y:483 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 44: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:486 +//line sql.y:487 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} } case 45: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:490 +//line sql.y:491 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 46: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:494 +//line sql.y:495 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 47: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:499 +//line sql.y:500 { } case 48: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:500 +//line sql.y:501 { } case 49: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:504 +//line sql.y:505 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 50: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:508 +//line sql.y:509 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 51: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:514 +//line sql.y:515 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 52: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:518 +//line sql.y:519 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 53: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:523 +//line sql.y:524 { yyVAL.partitions = nil } case 54: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:527 +//line sql.y:528 { yyVAL.partitions = yyDollar[3].partitions } case 55: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:533 +//line sql.y:534 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 56: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:539 +//line sql.y:540 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Characteristics: yyDollar[5].characteristics} } case 57: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:543 +//line sql.y:544 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Characteristics: yyDollar[4].characteristics} } case 58: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:549 +//line sql.y:550 { yyVAL.characteristics = []Characteristic{yyDollar[1].characteristic} } case 59: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:553 +//line sql.y:554 { yyVAL.characteristics = append(yyVAL.characteristics, yyDollar[3].characteristic) } case 60: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:559 +//line sql.y:560 { yyVAL.characteristic = &IsolationLevel{Level: string(yyDollar[3].str)} } case 61: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:563 +//line sql.y:564 { yyVAL.characteristic = &AccessMode{Mode: TxReadWrite} } case 62: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:567 +//line sql.y:568 { yyVAL.characteristic = &AccessMode{Mode: TxReadOnly} } case 63: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:573 +//line sql.y:574 { yyVAL.str = RepeatableRead } case 64: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:577 +//line sql.y:578 { yyVAL.str = ReadCommitted } case 65: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:581 +//line sql.y:582 { yyVAL.str = ReadUncommitted } case 66: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:585 +//line sql.y:586 { yyVAL.str = Serializable } case 67: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:591 +//line sql.y:592 { yyVAL.str = SessionStr } case 68: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:595 +//line sql.y:596 { yyVAL.str = GlobalStr } case 69: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:601 +//line sql.y:602 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } case 70: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:606 +//line sql.y:607 { // Create table [name] like [name] yyDollar[1].ddl.OptLike = yyDollar[2].optLike @@ -3982,139 +4002,139 @@ yydefault: } case 71: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:612 +//line sql.y:613 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName} } case 72: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:617 +//line sql.y:618 { yyVAL.statement = &DDL{Action: CreateStr, Table: yyDollar[3].tableName.ToViewName()} } case 73: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:621 +//line sql.y:622 { yyVAL.statement = &DDL{Action: CreateStr, Table: yyDollar[5].tableName.ToViewName()} } case 74: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:625 +//line sql.y:626 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].colIdent.String())} } case 75: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:629 +//line sql.y:630 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].colIdent.String())} } case 76: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:634 +//line sql.y:635 { yyVAL.colIdent = NewColIdent("") } case 77: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:638 +//line sql.y:639 { yyVAL.colIdent = yyDollar[2].colIdent } case 78: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:644 +//line sql.y:645 { yyVAL.colIdent = yyDollar[1].colIdent } case 79: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:649 +//line sql.y:650 { var v []VindexParam yyVAL.vindexParams = v } case 80: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:654 +//line sql.y:655 { yyVAL.vindexParams = yyDollar[2].vindexParams } case 81: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:660 +//line sql.y:661 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } case 82: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:665 +//line sql.y:666 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } case 83: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:671 +//line sql.y:672 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 84: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:677 +//line sql.y:678 { yyVAL.ddl = &DDL{Action: CreateStr, Table: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } case 85: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:684 +//line sql.y:685 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } case 86: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:691 +//line sql.y:692 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} } case 87: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:695 +//line sql.y:696 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} } case 88: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:701 +//line sql.y:702 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } case 89: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:706 +//line sql.y:707 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } case 90: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:710 +//line sql.y:711 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } case 91: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:714 +//line sql.y:715 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 92: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:720 +//line sql.y:721 { yyDollar[2].columnType.NotNull = yyDollar[3].boolVal yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -4126,7 +4146,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:731 +//line sql.y:732 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolVal @@ -4134,74 +4154,74 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:742 +//line sql.y:743 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].sqlVal } case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:747 +//line sql.y:748 { yyVAL.columnType = yyDollar[1].columnType } case 99: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:753 +//line sql.y:754 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 100: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:757 +//line sql.y:758 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 101: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:761 +//line sql.y:762 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 102: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:765 +//line sql.y:766 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 103: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:769 +//line sql.y:770 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 104: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:773 +//line sql.y:774 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 105: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:777 +//line sql.y:778 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 106: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:781 +//line sql.y:782 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 107: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:785 +//line sql.y:786 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 108: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:791 +//line sql.y:792 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4209,7 +4229,7 @@ yydefault: } case 109: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:797 +//line sql.y:798 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4217,7 +4237,7 @@ yydefault: } case 110: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:803 +//line sql.y:804 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4225,7 +4245,7 @@ yydefault: } case 111: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:809 +//line sql.y:810 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4233,7 +4253,7 @@ yydefault: } case 112: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:815 +//line sql.y:816 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4241,206 +4261,206 @@ yydefault: } case 113: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:823 +//line sql.y:824 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 114: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:827 +//line sql.y:828 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 115: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:831 +//line sql.y:832 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 116: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:835 +//line sql.y:836 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:839 +//line sql.y:840 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 118: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:845 +//line sql.y:846 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 119: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:849 +//line sql.y:850 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 120: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:853 +//line sql.y:854 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 121: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:857 +//line sql.y:858 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 122: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:861 +//line sql.y:862 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 123: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:865 +//line sql.y:866 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 124: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:869 +//line sql.y:870 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 125: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:873 +//line sql.y:874 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 126: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:877 +//line sql.y:878 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 127: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:881 +//line sql.y:882 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 128: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:885 +//line sql.y:886 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 129: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:889 +//line sql.y:890 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 130: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:893 +//line sql.y:894 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 131: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:897 +//line sql.y:898 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 132: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:902 +//line sql.y:903 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 133: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:908 +//line sql.y:909 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 134: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:912 +//line sql.y:913 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 135: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:916 +//line sql.y:917 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 136: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:920 +//line sql.y:921 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 137: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:924 +//line sql.y:925 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 138: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:928 +//line sql.y:929 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 139: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:932 +//line sql.y:933 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:936 +//line sql.y:937 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 141: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:942 +//line sql.y:943 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } case 142: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:947 +//line sql.y:948 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } case 143: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:952 +//line sql.y:953 { yyVAL.sqlVal = nil } case 144: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:956 +//line sql.y:957 { yyVAL.sqlVal = NewIntVal(yyDollar[2].bytes) } case 145: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:961 +//line sql.y:962 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 146: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:965 +//line sql.y:966 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), @@ -4449,13 +4469,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:973 +//line sql.y:974 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 148: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:977 +//line sql.y:978 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), @@ -4463,7 +4483,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:983 +//line sql.y:984 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), @@ -4472,508 +4492,508 @@ yydefault: } case 150: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:991 +//line sql.y:992 { yyVAL.boolVal = BoolVal(false) } case 151: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:995 +//line sql.y:996 { yyVAL.boolVal = BoolVal(true) } case 152: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1000 +//line sql.y:1001 { yyVAL.boolVal = BoolVal(false) } case 153: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1004 +//line sql.y:1005 { yyVAL.boolVal = BoolVal(true) } case 154: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1010 +//line sql.y:1011 { yyVAL.boolVal = BoolVal(false) } case 155: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1014 +//line sql.y:1015 { yyVAL.boolVal = BoolVal(false) } case 156: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1018 +//line sql.y:1019 { yyVAL.boolVal = BoolVal(true) } case 157: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1023 +//line sql.y:1024 { yyVAL.optVal = nil } case 158: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1027 +//line sql.y:1028 { yyVAL.optVal = yyDollar[2].expr } case 159: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1032 +//line sql.y:1033 { yyVAL.optVal = nil } case 160: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1036 +//line sql.y:1037 { yyVAL.optVal = yyDollar[3].expr } case 161: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1041 +//line sql.y:1042 { yyVAL.boolVal = BoolVal(false) } case 162: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1045 +//line sql.y:1046 { yyVAL.boolVal = BoolVal(true) } case 163: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1050 +//line sql.y:1051 { yyVAL.str = "" } case 164: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1054 +//line sql.y:1055 { yyVAL.str = string(yyDollar[3].colIdent.String()) } case 165: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1058 +//line sql.y:1059 { yyVAL.str = string(yyDollar[3].bytes) } case 166: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1063 +//line sql.y:1064 { yyVAL.str = "" } case 167: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1067 +//line sql.y:1068 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 168: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1071 +//line sql.y:1072 { yyVAL.str = string(yyDollar[2].bytes) } case 169: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1076 +//line sql.y:1077 { yyVAL.colKeyOpt = colKeyNone } case 170: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1080 +//line sql.y:1081 { yyVAL.colKeyOpt = colKeyPrimary } case 171: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1084 +//line sql.y:1085 { yyVAL.colKeyOpt = colKey } case 172: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1088 +//line sql.y:1089 { yyVAL.colKeyOpt = colKeyUniqueKey } case 173: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1092 +//line sql.y:1093 { yyVAL.colKeyOpt = colKeyUnique } case 174: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1097 +//line sql.y:1098 { yyVAL.sqlVal = nil } case 175: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1101 +//line sql.y:1102 { yyVAL.sqlVal = NewStrVal(yyDollar[2].bytes) } case 176: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1107 +//line sql.y:1108 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } case 177: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1111 +//line sql.y:1112 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } case 178: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1117 +//line sql.y:1118 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 179: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1121 +//line sql.y:1122 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } case 180: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1127 +//line sql.y:1128 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].colIdent.String())} } case 181: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1131 +//line sql.y:1132 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } case 182: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1136 +//line sql.y:1137 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } case 183: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1142 +//line sql.y:1143 { yyVAL.str = "" } case 184: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1146 +//line sql.y:1147 { yyVAL.str = string(yyDollar[1].bytes) } case 185: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1152 +//line sql.y:1153 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 186: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1156 +//line sql.y:1157 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } case 187: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1160 +//line sql.y:1161 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } case 188: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1164 +//line sql.y:1165 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } case 189: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1168 +//line sql.y:1169 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } case 190: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1174 +//line sql.y:1175 { yyVAL.str = string(yyDollar[1].bytes) } case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1178 +//line sql.y:1179 { yyVAL.str = string(yyDollar[1].bytes) } case 192: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1182 +//line sql.y:1183 { yyVAL.str = string(yyDollar[1].bytes) } case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1189 +//line sql.y:1190 { yyVAL.str = string(yyDollar[1].bytes) } case 194: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1193 +//line sql.y:1194 { yyVAL.str = string(yyDollar[1].bytes) } case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1199 +//line sql.y:1200 { yyVAL.str = string(yyDollar[1].bytes) } case 196: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1203 +//line sql.y:1204 { yyVAL.str = string(yyDollar[1].bytes) } case 197: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1208 +//line sql.y:1209 { yyVAL.str = "" } case 198: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1212 +//line sql.y:1213 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 199: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1218 +//line sql.y:1219 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 200: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1222 +//line sql.y:1223 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } case 201: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1228 +//line sql.y:1229 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].sqlVal} } case 202: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1234 +//line sql.y:1235 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 203: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1238 +//line sql.y:1239 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 204: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1245 +//line sql.y:1246 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } case 205: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1249 +//line sql.y:1250 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } case 206: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1253 +//line sql.y:1254 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } case 207: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1257 +//line sql.y:1258 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } case 208: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1263 +//line sql.y:1264 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 209: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1269 +//line sql.y:1270 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 210: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1275 +//line sql.y:1276 { yyVAL.ReferenceAction = Restrict } case 211: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1279 +//line sql.y:1280 { yyVAL.ReferenceAction = Cascade } case 212: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1283 +//line sql.y:1284 { yyVAL.ReferenceAction = NoAction } case 213: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1287 +//line sql.y:1288 { yyVAL.ReferenceAction = SetDefault } case 214: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1291 +//line sql.y:1292 { yyVAL.ReferenceAction = SetNull } case 215: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1296 +//line sql.y:1297 { yyVAL.str = "" } case 216: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1300 +//line sql.y:1301 { yyVAL.str = " " + string(yyDollar[1].str) } case 217: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1304 +//line sql.y:1305 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } case 218: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1312 +//line sql.y:1313 { yyVAL.str = yyDollar[1].str } case 219: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1316 +//line sql.y:1317 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } case 220: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1320 +//line sql.y:1321 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } case 221: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1326 +//line sql.y:1327 { yyVAL.str = yyDollar[1].colIdent.String() } case 222: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1330 +//line sql.y:1331 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } case 223: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1334 +//line sql.y:1335 { yyVAL.str = string(yyDollar[1].bytes) } case 224: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1340 +//line sql.y:1341 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 225: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1344 +//line sql.y:1345 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 226: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1348 +//line sql.y:1349 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 227: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1352 +//line sql.y:1353 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} } case 228: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1357 +//line sql.y:1358 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} } case 229: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1362 +//line sql.y:1363 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName()} } case 230: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1366 +//line sql.y:1367 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } case 231: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1370 +//line sql.y:1371 { yyVAL.statement = &DBDDL{Action: AlterStr, DBName: string(yyDollar[3].colIdent.String())} } case 232: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1374 +//line sql.y:1375 { yyVAL.statement = &DBDDL{Action: AlterStr, DBName: string(yyDollar[3].colIdent.String())} } case 233: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1378 +//line sql.y:1379 { yyVAL.statement = &DDL{ Action: CreateVindexStr, @@ -4987,7 +5007,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1390 +//line sql.y:1391 { yyVAL.statement = &DDL{ Action: DropVindexStr, @@ -4999,19 +5019,19 @@ yydefault: } case 235: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1400 +//line sql.y:1401 { yyVAL.statement = &DDL{Action: AddVschemaTableStr, Table: yyDollar[5].tableName} } case 236: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1404 +//line sql.y:1405 { yyVAL.statement = &DDL{Action: DropVschemaTableStr, Table: yyDollar[5].tableName} } case 237: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1408 +//line sql.y:1409 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -5026,7 +5046,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1421 +//line sql.y:1422 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -5038,13 +5058,13 @@ yydefault: } case 239: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1431 +//line sql.y:1432 { yyVAL.statement = &DDL{Action: AddSequenceStr, Table: yyDollar[5].tableName} } case 240: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:1435 +//line sql.y:1436 { yyVAL.statement = &DDL{ Action: AddAutoIncStr, @@ -5057,49 +5077,49 @@ yydefault: } case 255: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1464 +//line sql.y:1465 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1470 +//line sql.y:1471 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } case 257: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1474 +//line sql.y:1475 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } case 258: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1480 +//line sql.y:1481 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } case 259: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1484 +//line sql.y:1485 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } case 260: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1490 +//line sql.y:1491 { yyVAL.statement = yyDollar[3].ddl } case 261: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1496 +//line sql.y:1497 { yyVAL.ddl = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } case 262: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1500 +//line sql.y:1501 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) @@ -5107,7 +5127,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1508 +//line sql.y:1509 { var exists bool if yyDollar[3].byt != 0 { @@ -5117,14 +5137,14 @@ yydefault: } case 264: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1516 +//line sql.y:1517 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName} } case 265: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1521 +//line sql.y:1522 { var exists bool if yyDollar[3].byt != 0 { @@ -5134,143 +5154,143 @@ yydefault: } case 266: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1529 +//line sql.y:1530 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].colIdent.String())} } case 267: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1533 +//line sql.y:1534 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].colIdent.String())} } case 268: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1539 +//line sql.y:1540 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } case 269: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1543 +//line sql.y:1544 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } case 270: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1548 +//line sql.y:1549 { yyVAL.statement = &OtherRead{} } case 271: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1554 +//line sql.y:1555 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String())} } case 272: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1559 +//line sql.y:1560 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Type: CharsetStr, ShowTablesOpt: showTablesOpt} } case 273: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1564 +//line sql.y:1565 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt} } case 274: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1569 +//line sql.y:1570 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 275: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1574 +//line sql.y:1575 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String())} } case 276: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1578 +//line sql.y:1579 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 277: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1582 +//line sql.y:1583 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName} } case 278: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1586 +//line sql.y:1587 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 279: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1590 +//line sql.y:1591 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 280: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1594 +//line sql.y:1595 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 281: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1598 +//line sql.y:1599 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 282: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1602 +//line sql.y:1603 { showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } case 283: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1608 +//line sql.y:1609 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 284: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1612 +//line sql.y:1613 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 285: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1616 +//line sql.y:1617 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 286: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1620 +//line sql.y:1621 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 287: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1624 +//line sql.y:1625 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } case 288: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1629 +//line sql.y:1630 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5282,761 +5302,785 @@ yydefault: } case 289: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1639 +//line sql.y:1640 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 290: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1643 +//line sql.y:1644 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 291: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1647 +//line sql.y:1648 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr} } case 292: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1651 +//line sql.y:1652 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Scope: string(yyDollar[2].bytes), Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt} } case 293: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1656 +//line sql.y:1657 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1660 +//line sql.y:1661 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 295: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1664 +//line sql.y:1665 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName} } case 296: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1668 +//line sql.y:1669 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 297: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1682 +//line sql.y:1683 { yyVAL.statement = &Show{Type: string(yyDollar[2].colIdent.String())} } case 298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1688 +//line sql.y:1689 { yyVAL.str = string(yyDollar[1].bytes) } case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1692 +//line sql.y:1693 { yyVAL.str = string(yyDollar[1].bytes) } case 300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1698 +//line sql.y:1699 { yyVAL.str = "" } case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1702 +//line sql.y:1703 { yyVAL.str = "extended " } case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1708 +//line sql.y:1709 { yyVAL.str = "" } case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1712 +//line sql.y:1713 { yyVAL.str = "full " } case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1718 +//line sql.y:1719 { yyVAL.str = string(yyDollar[1].bytes) } case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1722 +//line sql.y:1723 { yyVAL.str = string(yyDollar[1].bytes) } case 306: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1728 +//line sql.y:1729 { yyVAL.str = "" } case 307: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1732 +//line sql.y:1733 { yyVAL.str = yyDollar[2].tableIdent.v } case 308: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1736 +//line sql.y:1737 { yyVAL.str = yyDollar[2].tableIdent.v } case 309: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1742 +//line sql.y:1743 { yyVAL.showFilter = nil } case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1746 +//line sql.y:1747 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1750 +//line sql.y:1751 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 312: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1756 +//line sql.y:1757 { yyVAL.showFilter = nil } case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1760 +//line sql.y:1761 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 314: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1766 +//line sql.y:1767 { yyVAL.str = "" } case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1770 +//line sql.y:1771 { yyVAL.str = SessionStr } case 316: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1774 +//line sql.y:1775 { yyVAL.str = GlobalStr } case 317: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1780 +//line sql.y:1781 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1784 +//line sql.y:1785 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1790 +//line sql.y:1791 { yyVAL.statement = &Begin{} } case 320: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1794 +//line sql.y:1795 { yyVAL.statement = &Begin{} } case 321: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1800 +//line sql.y:1801 { yyVAL.statement = &Commit{} } case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1806 +//line sql.y:1807 { yyVAL.statement = &Rollback{} } case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1811 +//line sql.y:1812 { yyVAL.str = "" } case 324: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1815 +//line sql.y:1816 { yyVAL.str = JSONStr } case 325: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1819 +//line sql.y:1820 { yyVAL.str = TreeStr } case 326: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1823 +//line sql.y:1824 { yyVAL.str = VitessStr } case 327: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1829 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1830 { - yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].selStmt} + yyVAL.bytes = yyDollar[1].bytes } case 328: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1833 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1834 { - yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} + yyVAL.bytes = yyDollar[1].bytes } case 329: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1837 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1838 { - yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} + yyVAL.bytes = yyDollar[1].bytes } case 330: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1844 + { + yyVAL.statement = yyDollar[1].selStmt + } + case 331: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1848 + { + yyVAL.statement = yyDollar[1].statement + } + case 332: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1852 + { + yyVAL.statement = yyDollar[1].statement + } + case 333: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1856 + { + yyVAL.statement = yyDollar[1].statement + } + case 334: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1841 +//line sql.y:1862 { yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} } - case 331: + case 335: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1847 +//line sql.y:1868 { yyVAL.statement = &OtherRead{} } - case 332: + case 336: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1851 +//line sql.y:1872 { yyVAL.statement = &OtherRead{} } - case 333: + case 337: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1855 +//line sql.y:1876 { yyVAL.statement = &OtherRead{} } - case 334: + case 338: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1859 +//line sql.y:1880 { yyVAL.statement = &OtherAdmin{} } - case 335: + case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1863 +//line sql.y:1884 { yyVAL.statement = &OtherAdmin{} } - case 336: + case 340: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1867 +//line sql.y:1888 { yyVAL.statement = &OtherAdmin{} } - case 337: + case 341: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1871 +//line sql.y:1892 { yyVAL.statement = &OtherAdmin{} } - case 338: + case 342: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1877 +//line sql.y:1898 { yyVAL.statement = &DDL{Action: FlushStr} } - case 339: + case 343: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1881 +//line sql.y:1902 { setAllowComments(yylex, true) } - case 340: + case 344: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1885 +//line sql.y:1906 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 341: + case 345: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1891 +//line sql.y:1912 { yyVAL.bytes2 = nil } - case 342: + case 346: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1895 +//line sql.y:1916 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 343: + case 347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1901 +//line sql.y:1922 { yyVAL.str = UnionStr } - case 344: + case 348: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1905 +//line sql.y:1926 { yyVAL.str = UnionAllStr } - case 345: + case 349: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1909 +//line sql.y:1930 { yyVAL.str = UnionDistinctStr } - case 346: + case 350: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1914 +//line sql.y:1935 { yyVAL.str = "" } - case 347: + case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1918 +//line sql.y:1939 { yyVAL.str = SQLNoCacheStr } - case 348: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1922 +//line sql.y:1943 { yyVAL.str = SQLCacheStr } - case 349: + case 353: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1927 +//line sql.y:1948 { yyVAL.str = "" } - case 350: + case 354: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1931 +//line sql.y:1952 { yyVAL.str = DistinctStr } - case 351: + case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1935 +//line sql.y:1956 { yyVAL.str = DistinctStr } - case 352: + case 356: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1940 +//line sql.y:1961 { yyVAL.selectExprs = nil } - case 353: + case 357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1944 +//line sql.y:1965 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 354: + case 358: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1949 +//line sql.y:1970 { yyVAL.strs = nil } - case 355: + case 359: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1953 +//line sql.y:1974 { yyVAL.strs = []string{yyDollar[1].str} } - case 356: + case 360: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1957 +//line sql.y:1978 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 357: + case 361: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1961 +//line sql.y:1982 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 358: + case 362: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1965 +//line sql.y:1986 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 359: + case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1971 +//line sql.y:1992 { yyVAL.str = SQLNoCacheStr } - case 360: + case 364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1975 +//line sql.y:1996 { yyVAL.str = SQLCacheStr } - case 361: + case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1979 +//line sql.y:2000 { yyVAL.str = DistinctStr } - case 362: + case 366: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1983 +//line sql.y:2004 { yyVAL.str = DistinctStr } - case 363: + case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1987 +//line sql.y:2008 { yyVAL.str = StraightJoinHint } - case 364: + case 368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1991 +//line sql.y:2012 { yyVAL.str = SQLCalcFoundRowsStr } - case 365: + case 369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1997 +//line sql.y:2018 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 366: + case 370: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2001 +//line sql.y:2022 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 367: + case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2007 +//line sql.y:2028 { yyVAL.selectExpr = &StarExpr{} } - case 368: + case 372: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2011 +//line sql.y:2032 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 369: + case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2015 +//line sql.y:2036 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 370: + case 374: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2019 +//line sql.y:2040 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 371: + case 375: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2024 +//line sql.y:2045 { yyVAL.colIdent = ColIdent{} } - case 372: + case 376: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2028 +//line sql.y:2049 { yyVAL.colIdent = yyDollar[1].colIdent } - case 373: + case 377: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2032 +//line sql.y:2053 { yyVAL.colIdent = yyDollar[2].colIdent } - case 375: + case 379: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2039 +//line sql.y:2060 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 376: + case 380: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2044 +//line sql.y:2065 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 377: + case 381: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2048 +//line sql.y:2069 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 378: + case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2054 +//line sql.y:2075 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 379: + case 383: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2058 +//line sql.y:2079 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 382: + case 386: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2068 +//line sql.y:2089 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 383: + case 387: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2072 +//line sql.y:2093 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 384: + case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2076 +//line sql.y:2097 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") return 1 } - case 385: + case 389: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2082 +//line sql.y:2103 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 386: + case 390: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2088 +//line sql.y:2109 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 387: + case 391: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2092 +//line sql.y:2113 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 388: + case 392: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2098 +//line sql.y:2119 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 389: + case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2102 +//line sql.y:2123 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 390: + case 394: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2108 +//line sql.y:2129 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 391: + case 395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2112 +//line sql.y:2133 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 392: + case 396: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2125 +//line sql.y:2146 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 393: + case 397: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2129 +//line sql.y:2150 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 394: + case 398: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2133 +//line sql.y:2154 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 395: + case 399: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2137 +//line sql.y:2158 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 396: + case 400: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2143 +//line sql.y:2164 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 397: + case 401: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2145 +//line sql.y:2166 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 398: + case 402: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2149 +//line sql.y:2170 { yyVAL.joinCondition = JoinCondition{} } - case 399: + case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2151 +//line sql.y:2172 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 400: + case 404: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2155 +//line sql.y:2176 { yyVAL.joinCondition = JoinCondition{} } - case 401: + case 405: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2157 +//line sql.y:2178 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 402: + case 406: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2160 +//line sql.y:2181 { yyVAL.empty = struct{}{} } - case 403: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2162 +//line sql.y:2183 { yyVAL.empty = struct{}{} } - case 404: + case 408: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2165 +//line sql.y:2186 { yyVAL.tableIdent = NewTableIdent("") } - case 405: + case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2169 +//line sql.y:2190 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 406: + case 410: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2173 +//line sql.y:2194 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 408: + case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2180 +//line sql.y:2201 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 409: + case 413: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2186 +//line sql.y:2207 { yyVAL.str = JoinStr } - case 410: + case 414: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2190 +//line sql.y:2211 { yyVAL.str = JoinStr } - case 411: + case 415: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2194 +//line sql.y:2215 { yyVAL.str = JoinStr } - case 412: + case 416: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2200 +//line sql.y:2221 { yyVAL.str = StraightJoinStr } - case 413: + case 417: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2206 +//line sql.y:2227 { yyVAL.str = LeftJoinStr } - case 414: + case 418: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2210 +//line sql.y:2231 { yyVAL.str = LeftJoinStr } - case 415: + case 419: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2214 +//line sql.y:2235 { yyVAL.str = RightJoinStr } - case 416: + case 420: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2218 +//line sql.y:2239 { yyVAL.str = RightJoinStr } - case 417: + case 421: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2224 +//line sql.y:2245 { yyVAL.str = NaturalJoinStr } - case 418: + case 422: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2228 +//line sql.y:2249 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -6044,471 +6088,471 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 419: + case 423: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2238 +//line sql.y:2259 { yyVAL.tableName = yyDollar[2].tableName } - case 420: + case 424: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2242 +//line sql.y:2263 { yyVAL.tableName = yyDollar[1].tableName } - case 421: + case 425: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2248 +//line sql.y:2269 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 422: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2252 +//line sql.y:2273 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 423: + case 427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2258 +//line sql.y:2279 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 424: + case 428: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2263 +//line sql.y:2284 { yyVAL.indexHints = nil } - case 425: + case 429: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2267 +//line sql.y:2288 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 426: + case 430: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2271 +//line sql.y:2292 { yyVAL.indexHints = &IndexHints{Type: UseStr} } - case 427: + case 431: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2275 +//line sql.y:2296 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 428: + case 432: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2279 +//line sql.y:2300 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 429: + case 433: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2284 +//line sql.y:2305 { yyVAL.expr = nil } - case 430: + case 434: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2288 +//line sql.y:2309 { yyVAL.expr = yyDollar[2].expr } - case 431: + case 435: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2294 +//line sql.y:2315 { yyVAL.expr = yyDollar[1].expr } - case 432: + case 436: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2298 +//line sql.y:2319 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 433: + case 437: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2302 +//line sql.y:2323 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 434: + case 438: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2306 +//line sql.y:2327 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 435: + case 439: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2310 +//line sql.y:2331 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 436: + case 440: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2314 +//line sql.y:2335 { yyVAL.expr = yyDollar[1].expr } - case 437: + case 441: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2318 +//line sql.y:2339 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 438: + case 442: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2324 +//line sql.y:2345 { yyVAL.str = "" } - case 439: + case 443: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2328 +//line sql.y:2349 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 440: + case 444: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2334 +//line sql.y:2355 { yyVAL.boolVal = BoolVal(true) } - case 441: + case 445: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2338 +//line sql.y:2359 { yyVAL.boolVal = BoolVal(false) } - case 442: + case 446: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2344 +//line sql.y:2365 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 443: + case 447: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2348 +//line sql.y:2369 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 444: + case 448: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2352 +//line sql.y:2373 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 445: + case 449: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2356 +//line sql.y:2377 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 446: + case 450: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2360 +//line sql.y:2381 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 447: + case 451: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2364 +//line sql.y:2385 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 448: + case 452: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2368 +//line sql.y:2389 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 449: + case 453: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2372 +//line sql.y:2393 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 450: + case 454: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2376 +//line sql.y:2397 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 451: + case 455: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2380 +//line sql.y:2401 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 452: + case 456: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2386 +//line sql.y:2407 { yyVAL.str = IsNullStr } - case 453: + case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2390 +//line sql.y:2411 { yyVAL.str = IsNotNullStr } - case 454: + case 458: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2394 +//line sql.y:2415 { yyVAL.str = IsTrueStr } - case 455: + case 459: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2398 +//line sql.y:2419 { yyVAL.str = IsNotTrueStr } - case 456: + case 460: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2402 +//line sql.y:2423 { yyVAL.str = IsFalseStr } - case 457: + case 461: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2406 +//line sql.y:2427 { yyVAL.str = IsNotFalseStr } - case 458: + case 462: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2412 +//line sql.y:2433 { yyVAL.str = EqualStr } - case 459: + case 463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2416 +//line sql.y:2437 { yyVAL.str = LessThanStr } - case 460: + case 464: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2420 +//line sql.y:2441 { yyVAL.str = GreaterThanStr } - case 461: + case 465: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2424 +//line sql.y:2445 { yyVAL.str = LessEqualStr } - case 462: + case 466: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2428 +//line sql.y:2449 { yyVAL.str = GreaterEqualStr } - case 463: + case 467: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2432 +//line sql.y:2453 { yyVAL.str = NotEqualStr } - case 464: + case 468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2436 +//line sql.y:2457 { yyVAL.str = NullSafeEqualStr } - case 465: + case 469: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2441 +//line sql.y:2462 { yyVAL.expr = nil } - case 466: + case 470: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2445 +//line sql.y:2466 { yyVAL.expr = yyDollar[2].expr } - case 467: + case 471: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2451 +//line sql.y:2472 { yyVAL.colTuple = yyDollar[1].valTuple } - case 468: + case 472: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2455 +//line sql.y:2476 { yyVAL.colTuple = yyDollar[1].subquery } - case 469: + case 473: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2459 +//line sql.y:2480 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 470: + case 474: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2465 +//line sql.y:2486 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 471: + case 475: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2471 +//line sql.y:2492 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 472: + case 476: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2475 +//line sql.y:2496 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 473: + case 477: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2481 +//line sql.y:2502 { yyVAL.expr = yyDollar[1].expr } - case 474: + case 478: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2485 +//line sql.y:2506 { yyVAL.expr = yyDollar[1].boolVal } - case 475: + case 479: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2489 +//line sql.y:2510 { yyVAL.expr = yyDollar[1].colName } - case 476: + case 480: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2493 +//line sql.y:2514 { yyVAL.expr = yyDollar[1].expr } - case 477: + case 481: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2497 +//line sql.y:2518 { yyVAL.expr = yyDollar[1].subquery } - case 478: + case 482: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2501 +//line sql.y:2522 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 479: + case 483: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2505 +//line sql.y:2526 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 480: + case 484: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2509 +//line sql.y:2530 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 481: + case 485: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2513 +//line sql.y:2534 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 482: + case 486: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2517 +//line sql.y:2538 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 483: + case 487: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2521 +//line sql.y:2542 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 484: + case 488: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2525 +//line sql.y:2546 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 485: + case 489: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2529 +//line sql.y:2550 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 486: + case 490: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2533 +//line sql.y:2554 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 487: + case 491: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2537 +//line sql.y:2558 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 488: + case 492: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2541 +//line sql.y:2562 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 489: + case 493: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2545 +//line sql.y:2566 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 490: + case 494: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2549 +//line sql.y:2570 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 491: + case 495: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2553 +//line sql.y:2574 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 492: + case 496: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2557 +//line sql.y:2578 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 493: + case 497: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2561 +//line sql.y:2582 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 494: + case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2565 +//line sql.y:2586 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 495: + case 499: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2569 +//line sql.y:2590 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} } - case 496: + case 500: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2573 +//line sql.y:2594 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -6516,9 +6560,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 497: + case 501: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2581 +//line sql.y:2602 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -6532,21 +6576,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 498: + case 502: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2595 +//line sql.y:2616 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 499: + case 503: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2599 +//line sql.y:2620 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 500: + case 504: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2603 +//line sql.y:2624 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -6554,497 +6598,497 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 505: + case 509: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2621 +//line sql.y:2642 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 506: + case 510: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2625 +//line sql.y:2646 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 507: + case 511: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2629 +//line sql.y:2650 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 508: + case 512: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2633 +//line sql.y:2654 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 509: + case 513: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2643 +//line sql.y:2664 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 510: + case 514: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2647 +//line sql.y:2668 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 511: + case 515: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2651 +//line sql.y:2672 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 512: + case 516: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2655 +//line sql.y:2676 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 513: + case 517: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2659 +//line sql.y:2680 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 514: + case 518: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2663 +//line sql.y:2684 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 515: + case 519: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2667 +//line sql.y:2688 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 516: + case 520: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2671 +//line sql.y:2692 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 517: + case 521: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2675 +//line sql.y:2696 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 518: + case 522: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2679 +//line sql.y:2700 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 519: + case 523: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2683 +//line sql.y:2704 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } - case 520: + case 524: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2687 +//line sql.y:2708 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 521: + case 525: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2691 +//line sql.y:2712 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 522: + case 526: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2701 +//line sql.y:2722 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 523: + case 527: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2705 +//line sql.y:2726 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 524: + case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2709 +//line sql.y:2730 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 525: + case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2714 +//line sql.y:2735 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 526: + case 530: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2719 +//line sql.y:2740 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 527: + case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2724 +//line sql.y:2745 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 528: + case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2730 +//line sql.y:2751 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 529: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2735 +//line sql.y:2756 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 530: + case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2740 +//line sql.y:2761 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } - case 531: + case 535: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2744 +//line sql.y:2765 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } - case 532: + case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2748 +//line sql.y:2769 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } - case 533: + case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2753 +//line sql.y:2774 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } - case 534: + case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2758 +//line sql.y:2779 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } - case 535: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2763 +//line sql.y:2784 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } - case 536: + case 540: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2767 +//line sql.y:2788 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 537: + case 541: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2771 +//line sql.y:2792 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 540: + case 544: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2781 +//line sql.y:2802 { yyVAL.expr = yyDollar[2].expr } - case 541: + case 545: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2791 +//line sql.y:2812 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 542: + case 546: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2795 +//line sql.y:2816 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 543: + case 547: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2799 +//line sql.y:2820 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } - case 544: + case 548: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2803 +//line sql.y:2824 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 545: + case 549: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2807 +//line sql.y:2828 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 546: + case 550: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2811 +//line sql.y:2832 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 547: + case 551: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2815 +//line sql.y:2836 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 548: + case 552: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2821 +//line sql.y:2842 { yyVAL.str = "" } - case 549: + case 553: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2825 +//line sql.y:2846 { yyVAL.str = BooleanModeStr } - case 550: + case 554: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2829 +//line sql.y:2850 { yyVAL.str = NaturalLanguageModeStr } - case 551: + case 555: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2833 +//line sql.y:2854 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 552: + case 556: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2837 +//line sql.y:2858 { yyVAL.str = QueryExpansionStr } - case 553: + case 557: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2843 +//line sql.y:2864 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 554: + case 558: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2847 +//line sql.y:2868 { yyVAL.str = string(yyDollar[1].bytes) } - case 555: + case 559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2853 +//line sql.y:2874 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 556: + case 560: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2857 +//line sql.y:2878 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 557: + case 561: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2861 +//line sql.y:2882 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].colIdent.String())} } - case 558: + case 562: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2865 +//line sql.y:2886 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 559: + case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2869 +//line sql.y:2890 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 560: + case 564: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2873 +//line sql.y:2894 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 561: + case 565: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2879 +//line sql.y:2900 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 562: + case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2883 +//line sql.y:2904 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 563: + case 567: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2887 +//line sql.y:2908 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 564: + case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2891 +//line sql.y:2912 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 565: + case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2895 +//line sql.y:2916 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 566: + case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2899 +//line sql.y:2920 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 567: + case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2903 +//line sql.y:2924 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 568: + case 572: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2908 +//line sql.y:2929 { yyVAL.expr = nil } - case 569: + case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2912 +//line sql.y:2933 { yyVAL.expr = yyDollar[1].expr } - case 570: + case 574: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2917 +//line sql.y:2938 { yyVAL.str = string("") } - case 571: + case 575: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2921 +//line sql.y:2942 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 572: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2927 +//line sql.y:2948 { yyVAL.whens = []*When{yyDollar[1].when} } - case 573: + case 577: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2931 +//line sql.y:2952 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 574: + case 578: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2937 +//line sql.y:2958 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 575: + case 579: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2942 +//line sql.y:2963 { yyVAL.expr = nil } - case 576: + case 580: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2946 +//line sql.y:2967 { yyVAL.expr = yyDollar[2].expr } - case 577: + case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2952 +//line sql.y:2973 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 578: + case 582: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2956 +//line sql.y:2977 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 579: + case 583: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2960 +//line sql.y:2981 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 580: + case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2966 +//line sql.y:2987 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 581: + case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2970 +//line sql.y:2991 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 582: + case 586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2974 +//line sql.y:2995 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 583: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2978 +//line sql.y:2999 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 584: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2982 +//line sql.y:3003 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 585: + case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2986 +//line sql.y:3007 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 586: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2990 +//line sql.y:3011 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 587: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2994 +//line sql.y:3015 { yyVAL.expr = &NullVal{} } - case 588: + case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3000 +//line sql.y:3021 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7053,239 +7097,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 589: + case 593: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3009 +//line sql.y:3030 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 590: + case 594: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3013 +//line sql.y:3034 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 591: + case 595: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3018 +//line sql.y:3039 { yyVAL.exprs = nil } - case 592: + case 596: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3022 +//line sql.y:3043 { yyVAL.exprs = yyDollar[3].exprs } - case 593: + case 597: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3027 +//line sql.y:3048 { yyVAL.expr = nil } - case 594: + case 598: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3031 +//line sql.y:3052 { yyVAL.expr = yyDollar[2].expr } - case 595: + case 599: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3036 +//line sql.y:3057 { yyVAL.orderBy = nil } - case 596: + case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3040 +//line sql.y:3061 { yyVAL.orderBy = yyDollar[3].orderBy } - case 597: + case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3046 +//line sql.y:3067 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 598: + case 602: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3050 +//line sql.y:3071 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 599: + case 603: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3056 +//line sql.y:3077 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 600: + case 604: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3061 +//line sql.y:3082 { yyVAL.str = AscScr } - case 601: + case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3065 +//line sql.y:3086 { yyVAL.str = AscScr } - case 602: + case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3069 +//line sql.y:3090 { yyVAL.str = DescScr } - case 603: + case 607: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3074 +//line sql.y:3095 { yyVAL.limit = nil } - case 604: + case 608: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3078 +//line sql.y:3099 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 605: + case 609: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3082 +//line sql.y:3103 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 606: + case 610: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3086 +//line sql.y:3107 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 607: + case 611: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3091 +//line sql.y:3112 { yyVAL.str = "" } - case 608: + case 612: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3095 +//line sql.y:3116 { yyVAL.str = ForUpdateStr } - case 609: + case 613: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3099 +//line sql.y:3120 { yyVAL.str = ShareModeStr } - case 610: + case 614: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3112 +//line sql.y:3133 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 611: + case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3116 +//line sql.y:3137 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 612: + case 616: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3120 +//line sql.y:3141 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 613: + case 617: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3125 +//line sql.y:3146 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 614: + case 618: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3129 +//line sql.y:3150 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 615: + case 619: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3133 +//line sql.y:3154 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 616: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3140 +//line sql.y:3161 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 617: + case 621: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3144 +//line sql.y:3165 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 618: + case 622: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3148 +//line sql.y:3169 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 619: + case 623: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3152 +//line sql.y:3173 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 620: + case 624: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3157 +//line sql.y:3178 { yyVAL.updateExprs = nil } - case 621: + case 625: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3161 +//line sql.y:3182 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 622: + case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3167 +//line sql.y:3188 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 623: + case 627: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3171 +//line sql.y:3192 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 624: + case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3177 +//line sql.y:3198 { yyVAL.valTuple = yyDollar[1].valTuple } - case 625: + case 629: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3181 +//line sql.y:3202 { yyVAL.valTuple = ValTuple{} } - case 626: + case 630: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3187 +//line sql.y:3208 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 627: + case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3193 +//line sql.y:3214 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -7293,319 +7337,319 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 628: + case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3203 +//line sql.y:3224 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 629: + case 633: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3207 +//line sql.y:3228 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 630: + case 634: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3213 +//line sql.y:3234 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 631: + case 635: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3219 +//line sql.y:3240 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 632: + case 636: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3223 +//line sql.y:3244 { yyDollar[2].setExpr.Scope = yyDollar[1].str yyVAL.setExprs = SetExprs{yyDollar[2].setExpr} } - case 633: + case 637: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3228 +//line sql.y:3249 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 634: + case 638: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3234 +//line sql.y:3255 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 635: + case 639: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3238 +//line sql.y:3259 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } - case 636: + case 640: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3242 +//line sql.y:3263 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 637: + case 641: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3246 +//line sql.y:3267 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 639: + case 643: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3253 +//line sql.y:3274 { yyVAL.bytes = []byte("charset") } - case 641: + case 645: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3260 +//line sql.y:3281 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 642: + case 646: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3264 +//line sql.y:3285 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 643: + case 647: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3268 +//line sql.y:3289 { yyVAL.expr = &Default{} } - case 646: + case 650: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3277 +//line sql.y:3298 { yyVAL.byt = 0 } - case 647: + case 651: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3279 +//line sql.y:3300 { yyVAL.byt = 1 } - case 648: + case 652: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3282 +//line sql.y:3303 { yyVAL.empty = struct{}{} } - case 649: + case 653: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3284 +//line sql.y:3305 { yyVAL.empty = struct{}{} } - case 650: + case 654: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3287 +//line sql.y:3308 { yyVAL.str = "" } - case 651: + case 655: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3289 +//line sql.y:3310 { yyVAL.str = IgnoreStr } - case 652: + case 656: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3293 +//line sql.y:3314 { yyVAL.empty = struct{}{} } - case 653: + case 657: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3295 +//line sql.y:3316 { yyVAL.empty = struct{}{} } - case 654: + case 658: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3297 +//line sql.y:3318 { yyVAL.empty = struct{}{} } - case 655: + case 659: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3299 +//line sql.y:3320 { yyVAL.empty = struct{}{} } - case 656: + case 660: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3301 +//line sql.y:3322 { yyVAL.empty = struct{}{} } - case 657: + case 661: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3303 +//line sql.y:3324 { yyVAL.empty = struct{}{} } - case 658: + case 662: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3305 +//line sql.y:3326 { yyVAL.empty = struct{}{} } - case 659: + case 663: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3307 +//line sql.y:3328 { yyVAL.empty = struct{}{} } - case 660: + case 664: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3309 +//line sql.y:3330 { yyVAL.empty = struct{}{} } - case 661: + case 665: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3311 +//line sql.y:3332 { yyVAL.empty = struct{}{} } - case 662: + case 666: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3314 +//line sql.y:3335 { yyVAL.empty = struct{}{} } - case 663: + case 667: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3316 +//line sql.y:3337 { yyVAL.empty = struct{}{} } - case 664: + case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3318 +//line sql.y:3339 { yyVAL.empty = struct{}{} } - case 665: + case 669: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3322 +//line sql.y:3343 { yyVAL.empty = struct{}{} } - case 666: + case 670: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3324 +//line sql.y:3345 { yyVAL.empty = struct{}{} } - case 667: + case 671: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3327 +//line sql.y:3348 { yyVAL.empty = struct{}{} } - case 668: + case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3329 +//line sql.y:3350 { yyVAL.empty = struct{}{} } - case 669: + case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3331 +//line sql.y:3352 { yyVAL.empty = struct{}{} } - case 670: + case 674: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3334 +//line sql.y:3355 { yyVAL.colIdent = ColIdent{} } - case 671: + case 675: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3336 +//line sql.y:3357 { yyVAL.colIdent = yyDollar[2].colIdent } - case 672: + case 676: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3340 +//line sql.y:3361 { yyVAL.colIdent = yyDollar[1].colIdent } - case 673: + case 677: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3344 +//line sql.y:3365 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 675: + case 679: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3351 +//line sql.y:3372 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 676: + case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3357 +//line sql.y:3378 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 677: + case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3361 +//line sql.y:3382 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 679: + case 683: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3368 +//line sql.y:3389 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 969: + case 973: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3683 +//line sql.y:3704 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 970: + case 974: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3692 +//line sql.y:3713 { decNesting(yylex) } - case 971: + case 975: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3697 +//line sql.y:3718 { skipToEnd(yylex) } - case 972: + case 976: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3702 +//line sql.y:3723 { skipToEnd(yylex) } - case 973: + case 977: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3706 +//line sql.y:3727 { skipToEnd(yylex) } - case 974: + case 978: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3710 +//line sql.y:3731 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 088617e8ce4..af24c2ad70d 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -218,7 +218,7 @@ func skipToEnd(yylex interface{}) { %type command %type select_statement base_select union_lhs union_rhs -%type explain_statement +%type explain_statement explainable_statement %type stream_statement insert_statement update_statement delete_statement set_statement set_transaction_statement %type create_statement alter_statement rename_statement drop_statement truncate_statement flush_statement %type create_table_prefix rename_list @@ -226,6 +226,7 @@ func skipToEnd(yylex interface{}) { %type begin_statement commit_statement rollback_statement %type comment_opt comment_list %type union_op insert_or_replace explain_format_opt +%type explain_synonyms %type distinct_opt cache_opt match_option separator_opt %type like_escape_opt %type select_expression_list select_expression_list_opt @@ -1824,20 +1825,40 @@ explain_format_opt: $$ = VitessStr } -explain_statement: - EXPLAIN explain_format_opt select_statement +explain_synonyms: + EXPLAIN { - $$ = &Explain{Fmt: $2, Statement: $3} + $$ = $1 } -| EXPLAIN explain_format_opt update_statement +| DESCRIBE { - $$ = &Explain{Fmt: $2, Statement: $3} + $$ = $1 } -| EXPLAIN explain_format_opt insert_statement +| DESC { - $$ = &Explain{Fmt: $2, Statement: $3} + $$ = $1 + } + +explainable_statement: + select_statement + { + $$ = $1 + } +| update_statement + { + $$ = $1 } -| EXPLAIN explain_format_opt delete_statement +| insert_statement + { + $$ = $1 + } +| delete_statement + { + $$ = $1 + } + +explain_statement: + explain_synonyms explain_format_opt explainable_statement { $$ = &Explain{Fmt: $2, Statement: $3} } diff --git a/go/vt/vtgate/engine/rows.go b/go/vt/vtgate/engine/rows.go index 924d4104e1b..60d4c430734 100644 --- a/go/vt/vtgate/engine/rows.go +++ b/go/vt/vtgate/engine/rows.go @@ -58,7 +58,7 @@ func (r *Rows) Execute(VCursor, map[string]*querypb.BindVariable, bool) (*sqltyp Fields: r.fields, RowsAffected: uint64(len(r.rows)), InsertID: 0, - Rows: nil, + Rows: r.rows, }, nil } From 09caa9dbc6188a5276a76b787251bfb57cff1e14 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Sun, 26 Apr 2020 12:09:04 +0200 Subject: [PATCH 07/12] Fix unit tests Signed-off-by: Andres Taylor --- go/vt/vtgate/executor_test.go | 2 +- go/vt/vtgate/plan_executor_test.go | 2 +- .../vtgate/planbuilder/testdata/other_read_cases.txt | 12 ++++++------ .../tabletserver/planbuilder/permission_test.go | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index ad26a84f3c8..e2b8c7345c3 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -1125,7 +1125,7 @@ func TestExecutorOther(t *testing.T) { stmts := []string{ "show tables", "analyze table t1", - "describe t1", + "describe select * from t1", "explain select * from t1", "repair table t1", "optimize table t1", diff --git a/go/vt/vtgate/plan_executor_test.go b/go/vt/vtgate/plan_executor_test.go index 8f036879fe2..d2c0c401c03 100644 --- a/go/vt/vtgate/plan_executor_test.go +++ b/go/vt/vtgate/plan_executor_test.go @@ -1089,7 +1089,7 @@ func TestPlanExecutorOtherRead(t *testing.T) { stmts := []string{ "analyze table t1", - "describe t1", + "describe select * from t1", "explain select * from t1", } diff --git a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt index 492ca915fd5..2971f11154f 100644 --- a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt @@ -45,10 +45,10 @@ } # Describe statement -"describe t1" +"describe select * from t" { "QueryType": "OTHER", - "Original": "describe t1", + "Original": "describe select * from t", "Instructions": { "OperatorType": "Send", "Keyspace": { @@ -57,16 +57,16 @@ }, "TargetDestination": "AnyShard()", "IsDML": false, - "Query": "describe t1", + "Query": "describe select * from t", "SingleShardOnly": true } } # Desc statement -"desc t1" +"desc select * from t" { "QueryType": "OTHER", - "Original": "desc t1", + "Original": "desc select * from t", "Instructions": { "OperatorType": "Send", "Keyspace": { @@ -75,7 +75,7 @@ }, "TargetDestination": "AnyShard()", "IsDML": false, - "Query": "desc t1", + "Query": "desc select * from t", "SingleShardOnly": true } } diff --git a/go/vt/vttablet/tabletserver/planbuilder/permission_test.go b/go/vt/vttablet/tabletserver/planbuilder/permission_test.go index 222e9b718cb..cb9b3a97543 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/permission_test.go +++ b/go/vt/vttablet/tabletserver/planbuilder/permission_test.go @@ -68,7 +68,7 @@ func TestBuildPermissions(t *testing.T) { input: "show variable like 'a%'", output: nil, }, { - input: "describe t", + input: "describe select * from t", output: nil, }, { input: "create table t", From cdeea9145acf75f429c9b5a4e1ac271b1f956994 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Sun, 26 Apr 2020 12:14:31 +0200 Subject: [PATCH 08/12] Allow EXPLAIN format TRADITIONAL Signed-off-by: Andres Taylor --- go/vt/sqlparser/constants.go | 7 +- go/vt/sqlparser/parse_test.go | 2 + go/vt/sqlparser/sql.go | 3994 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 6 +- go/vt/sqlparser/token.go | 1 + 5 files changed, 2017 insertions(+), 1993 deletions(-) diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 54e57c1a10e..3b3afaf82eb 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -165,7 +165,8 @@ const ( TxReadWrite = "read write" // Explain formats - TreeStr = "tree" - JSONStr = "json" - VitessStr = "vitess" + TreeStr = "tree" + JSONStr = "json" + VitessStr = "vitess" + TraditionalStr = "traditional" ) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index cccd32db9c0..4427414ed2f 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1380,6 +1380,8 @@ var ( output: "explain select * from t", }, { input: "explain select * from t", + }, { + input: "explain format = traditional select * from t", }, { input: "explain format = tree select * from t", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 9ed0586b882..25fe53e1866 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -444,6 +444,7 @@ const VISIBLE = 57677 const FORMAT = 57678 const TREE = 57679 const VITESS = 57680 +const TRADITIONAL = 57681 var yyToknames = [...]string{ "$end", @@ -801,6 +802,7 @@ var yyToknames = [...]string{ "FORMAT", "TREE", "VITESS", + "TRADITIONAL", "';'", } var yyStatenames = [...]string{} @@ -825,887 +827,861 @@ var yyExca = [...]int{ 166, 314, -2, 302, -1, 46, - 1, 975, - 356, 975, - -2, 329, + 1, 976, + 357, 976, + -2, 330, -1, 47, - 1, 975, - 356, 975, - -2, 328, + 1, 976, + 357, 976, + -2, 329, -1, 48, - 1, 975, - 356, 975, - -2, 327, + 1, 976, + 357, 976, + -2, 328, -1, 64, - 37, 350, - -2, 358, - -1, 322, 37, 351, - -2, 363, - -1, 323, + -2, 359, + -1, 322, 37, 352, -2, 364, + -1, 323, + 37, 353, + -2, 365, -1, 338, - 116, 680, - -2, 676, - -1, 339, 116, 681, -2, 677, + -1, 339, + 116, 682, + -2, 678, -1, 408, - 86, 931, + 86, 932, -2, 67, -1, 409, - 86, 848, + 86, 849, -2, 68, -1, 414, - 86, 816, - -2, 642, + 86, 817, + -2, 643, -1, 416, - 86, 879, - -2, 644, + 86, 880, + -2, 645, -1, 600, 5, 34, - -2, 330, + -2, 331, -1, 725, - 1, 388, - 5, 388, - 12, 388, - 13, 388, - 14, 388, - 15, 388, - 17, 388, - 19, 388, - 30, 388, - 31, 388, - 44, 388, - 45, 388, - 46, 388, - 47, 388, - 48, 388, - 50, 388, - 51, 388, - 54, 388, - 55, 388, - 57, 388, - 58, 388, - 356, 388, - -2, 406, + 1, 389, + 5, 389, + 12, 389, + 13, 389, + 14, 389, + 15, 389, + 17, 389, + 19, 389, + 30, 389, + 31, 389, + 44, 389, + 45, 389, + 46, 389, + 47, 389, + 48, 389, + 50, 389, + 51, 389, + 54, 389, + 55, 389, + 57, 389, + 58, 389, + 357, 389, + -2, 407, -1, 728, 55, 49, 57, 49, -2, 53, - -1, 887, - 116, 683, - -2, 679, - -1, 1122, + -1, 888, + 116, 684, + -2, 680, + -1, 1123, 5, 35, - -2, 474, - -1, 1153, + -2, 475, + -1, 1154, 5, 34, - -2, 615, - -1, 1400, - 5, 35, -2, 616, - -1, 1453, - 5, 34, - -2, 618, - -1, 1528, + -1, 1401, 5, 35, + -2, 617, + -1, 1454, + 5, 34, -2, 619, + -1, 1529, + 5, 35, + -2, 620, } const yyPrivate = 57344 -const yyLast = 16508 +const yyLast = 16583 var yyAct = [...]int{ - 338, 1552, 1562, 1360, 1518, 1156, 1003, 343, 1433, 1249, - 1466, 579, 1174, 1420, 1301, 356, 1334, 1157, 1302, 369, - 680, 1298, 1200, 976, 1046, 999, 60, 1012, 1100, 568, - 1308, 1314, 1002, 413, 83, 1273, 1226, 912, 273, 827, - 293, 273, 919, 679, 3, 727, 1114, 846, 1217, 1016, - 741, 978, 963, 889, 311, 942, 922, 721, 324, 622, - 722, 609, 740, 302, 615, 407, 1026, 399, 1042, 974, - 273, 83, 632, 402, 538, 273, 730, 273, 956, 537, - 853, 59, 410, 271, 341, 301, 695, 7, 6, 5, - 1065, 1555, 1539, 557, 1550, 694, 1526, 1547, 310, 1361, - 64, 1538, 1525, 1290, 1064, 1392, 542, 269, 265, 266, - 267, 303, 304, 305, 306, 401, 1328, 309, 994, 995, - 539, 26, 541, 55, 29, 30, 330, 993, 66, 67, - 68, 69, 70, 597, 85, 86, 87, 1032, 1329, 1330, - 336, 85, 86, 87, 308, 1063, 1492, 645, 644, 654, - 655, 647, 648, 649, 650, 651, 652, 653, 646, 1208, - 381, 656, 387, 388, 385, 386, 384, 383, 382, 261, - 307, 57, 259, 1274, 263, 1188, 389, 390, 1187, 592, - 742, 1189, 743, 593, 590, 591, 1025, 1251, 1423, 85, - 86, 87, 596, 1033, 1383, 1060, 1057, 1058, 1381, 1056, - 299, 816, 585, 586, 595, 815, 1549, 1253, 813, 574, - 1519, 576, 1276, 1546, 1248, 957, 1511, 1017, 582, 1467, - 1566, 1570, 1175, 1177, 558, 544, 263, 1254, 268, 854, - 855, 820, 1067, 1070, 1469, 804, 1019, 1324, 1323, 1245, - 1252, 814, 817, 573, 575, 1247, 1278, 1322, 1282, 1475, - 1277, 540, 1275, 547, 276, 264, 554, 1280, 1500, 1131, - 273, 549, 550, 1403, 1019, 273, 1279, 559, 262, 1062, - 1077, 273, 1259, 1076, 85, 86, 87, 273, 566, 1281, - 1283, 572, 83, 668, 669, 1128, 83, 1184, 83, 1141, - 260, 1061, 1108, 860, 83, 85, 86, 87, 736, 636, - 564, 1176, 1468, 1000, 656, 548, 85, 86, 87, 646, - 556, 847, 656, 581, 989, 857, 563, 1524, 1493, 1236, - 841, 551, 565, 552, 1033, 583, 553, 277, 570, 571, - 1127, 1066, 1564, 83, 280, 1565, 1018, 1563, 851, 630, - 629, 617, 287, 631, 600, 1246, 1068, 1244, 1509, 1292, - 1232, 1233, 1234, 896, 1476, 1474, 631, 1484, 629, 1347, - 618, 560, 561, 562, 1018, 668, 669, 894, 895, 893, - 56, 605, 606, 1126, 631, 1125, 285, 73, 621, 85, - 86, 87, 292, 623, 630, 629, 630, 629, 603, 601, - 602, 668, 669, 1294, 630, 629, 848, 273, 273, 273, - 1019, 631, 806, 631, 1206, 842, 83, 943, 1312, 278, - 569, 631, 83, 744, 536, 74, 604, 410, 619, 1235, - 943, 1514, 1138, 543, 1240, 1237, 1228, 1238, 1231, 626, - 1227, 85, 86, 87, 1229, 1230, 289, 281, 1530, 290, - 291, 297, 719, 1571, 728, 282, 284, 294, 1239, 279, - 296, 295, 1429, 1428, 645, 644, 654, 655, 647, 648, - 649, 650, 651, 652, 653, 646, 729, 720, 656, 698, - 700, 739, 704, 706, 1221, 709, 1220, 734, 697, 699, - 701, 703, 705, 707, 708, 1209, 1572, 670, 671, 672, - 673, 674, 675, 676, 677, 1105, 1106, 1107, 1532, 1510, - 1018, 863, 864, 545, 546, 1015, 1013, 57, 1014, 1115, - 1447, 879, 881, 882, 1022, 1011, 1017, 880, 1426, 892, - 1023, 859, 258, 1218, 1087, 577, 644, 654, 655, 647, - 648, 649, 650, 651, 652, 653, 646, 273, 832, 656, - 608, 802, 83, 1481, 805, 1480, 807, 273, 273, 83, - 83, 83, 1343, 630, 629, 273, 1472, 1548, 273, 1020, - 858, 273, 825, 826, 24, 273, 1311, 83, 1299, 608, - 631, 1311, 83, 83, 83, 273, 83, 83, 1398, 630, - 629, 1101, 752, 85, 86, 87, 83, 83, 1534, 608, - 396, 397, 808, 809, 924, 1395, 631, 831, 829, 1483, - 818, 1472, 1522, 401, 57, 1389, 824, 1351, 645, 644, + 338, 1553, 1563, 1361, 1519, 1157, 1004, 343, 1434, 1250, + 1467, 579, 1175, 1421, 1302, 356, 1335, 1158, 1303, 369, + 680, 1299, 60, 977, 1047, 1000, 1201, 1013, 1003, 568, + 1309, 1315, 827, 413, 83, 1274, 1227, 913, 273, 1115, + 293, 273, 920, 679, 3, 727, 846, 1218, 741, 979, + 964, 943, 890, 324, 311, 1017, 622, 721, 615, 609, + 537, 722, 740, 302, 407, 632, 1027, 402, 1043, 975, + 273, 83, 399, 730, 538, 273, 341, 273, 957, 695, + 853, 1101, 410, 271, 59, 301, 7, 6, 5, 557, + 1066, 1556, 694, 1540, 1551, 1527, 64, 1548, 310, 1362, + 1539, 1291, 1526, 1393, 1065, 542, 269, 265, 266, 267, + 1329, 303, 304, 305, 306, 401, 261, 309, 994, 259, + 539, 263, 541, 330, 66, 67, 68, 69, 70, 1330, + 1331, 995, 996, 597, 85, 86, 87, 1033, 308, 307, + 336, 85, 86, 87, 1209, 1064, 1493, 645, 644, 654, + 655, 647, 648, 649, 650, 651, 652, 653, 646, 1252, + 26, 656, 55, 29, 30, 1026, 381, 577, 387, 388, + 385, 386, 384, 383, 382, 1189, 1424, 742, 1188, 743, + 592, 1190, 389, 390, 593, 590, 591, 1034, 85, 86, + 87, 1384, 596, 923, 1382, 1061, 1058, 1059, 299, 1057, + 816, 585, 586, 595, 815, 1254, 813, 1550, 1547, 574, + 57, 576, 1253, 1520, 1249, 262, 958, 1512, 1018, 85, + 86, 87, 1571, 1567, 1468, 1176, 1178, 268, 558, 854, + 855, 856, 1068, 1071, 544, 263, 1255, 260, 820, 1470, + 814, 817, 1476, 573, 575, 645, 644, 654, 655, 647, + 648, 649, 650, 651, 652, 653, 646, 1275, 1325, 656, + 273, 549, 550, 804, 1324, 273, 582, 559, 1246, 1063, + 1020, 273, 277, 547, 1248, 1020, 276, 273, 566, 280, + 1323, 572, 83, 540, 264, 990, 83, 287, 83, 1078, + 1501, 1062, 1077, 1404, 83, 1260, 1277, 1132, 668, 669, + 1116, 85, 86, 87, 1177, 548, 1185, 1469, 1142, 1129, + 556, 1109, 861, 736, 636, 564, 563, 1525, 1494, 1001, + 1237, 285, 565, 1034, 85, 86, 87, 292, 656, 571, + 1279, 1067, 1283, 83, 1278, 1565, 1276, 617, 1566, 646, + 1564, 1281, 656, 554, 600, 847, 1069, 1477, 1475, 858, + 1280, 1233, 1234, 1235, 278, 841, 851, 560, 561, 562, + 618, 581, 631, 1282, 1284, 85, 86, 87, 570, 1510, + 1019, 605, 606, 583, 1247, 1019, 1245, 1348, 623, 860, + 1485, 289, 281, 1313, 290, 291, 297, 603, 601, 602, + 282, 284, 294, 1128, 279, 296, 295, 273, 273, 273, + 536, 1020, 744, 668, 669, 73, 83, 897, 551, 56, + 552, 604, 83, 553, 619, 668, 669, 410, 859, 944, + 1236, 895, 896, 894, 1293, 1241, 1238, 1229, 1239, 1232, + 848, 1228, 85, 86, 87, 1230, 1231, 630, 629, 944, + 842, 1139, 719, 74, 728, 806, 1023, 630, 629, 1240, + 569, 1207, 1024, 584, 631, 587, 630, 629, 1106, 1107, + 1108, 598, 698, 700, 631, 704, 706, 720, 709, 1572, + 739, 729, 1515, 631, 734, 697, 699, 701, 703, 705, + 707, 708, 608, 626, 1531, 1430, 629, 670, 671, 672, + 673, 674, 675, 676, 677, 649, 650, 651, 652, 653, + 646, 1019, 631, 656, 543, 1429, 1016, 1014, 1222, 1015, + 258, 1221, 1573, 1210, 1533, 621, 1012, 1018, 1127, 1511, + 1126, 645, 644, 654, 655, 647, 648, 649, 650, 651, + 652, 653, 646, 57, 1448, 656, 1427, 273, 1219, 630, + 629, 802, 83, 1088, 805, 893, 807, 273, 273, 83, + 83, 83, 630, 629, 832, 273, 631, 608, 273, 1295, + 1482, 273, 825, 826, 1481, 273, 1344, 83, 1396, 631, + 1473, 1549, 83, 83, 83, 273, 83, 83, 396, 397, + 1535, 608, 752, 1021, 545, 546, 83, 83, 880, 882, + 883, 1312, 808, 809, 881, 1395, 1399, 831, 829, 24, + 818, 1390, 1102, 401, 1300, 345, 824, 1312, 645, 644, 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 837, 83, 656, 1472, 608, 821, 960, 315, 273, 85, - 86, 87, 1101, 914, 83, 645, 644, 654, 655, 647, - 648, 649, 650, 651, 652, 653, 646, 960, 886, 656, - 649, 650, 651, 652, 653, 646, 1192, 913, 656, 890, - 85, 86, 87, 983, 1191, 731, 915, 1472, 1501, 992, - 887, 1144, 865, 875, 1472, 1471, 885, 1311, 83, 1418, - 1417, 1143, 874, 645, 644, 654, 655, 647, 648, 649, - 650, 651, 652, 653, 646, 931, 934, 656, 1405, 608, - 26, 944, 1402, 608, 1353, 1352, 883, 1349, 1350, 947, - 26, 83, 83, 359, 358, 361, 362, 363, 364, 273, - 1349, 1348, 360, 365, 872, 608, 926, 273, 273, 960, - 608, 273, 273, 61, 1151, 273, 273, 273, 83, 1152, - 927, 928, 924, 608, 933, 936, 937, 751, 750, 410, - 57, 83, 538, 916, 917, 872, 952, 953, 731, 861, - 57, 1540, 1004, 819, 958, 737, 1435, 1027, 1410, 951, - 829, 959, 954, 955, 1250, 872, 873, 985, 1047, 888, - 1339, 1195, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 317, 960, 1043, - 984, 991, 1038, 990, 986, 273, 83, 982, 83, 987, - 1069, 584, 732, 587, 273, 273, 273, 273, 273, 598, - 273, 273, 872, 26, 273, 83, 1048, 1028, 1029, 1030, - 1031, 1007, 965, 968, 969, 970, 966, 948, 967, 971, - 1037, 273, 1436, 1039, 1040, 1041, 273, 57, 273, 273, - 1051, 732, 1452, 273, 1315, 1316, 733, 1050, 735, 1071, - 1072, 1073, 1074, 1075, 1557, 1078, 1079, 1044, 1045, 1080, - 1553, 1321, 886, 57, 273, 1341, 1084, 1318, 965, 968, - 969, 970, 966, 339, 967, 971, 1082, 1320, 1315, 1316, - 1299, 1083, 1222, 852, 887, 733, 823, 731, 1088, 1165, - 1092, 1168, 1166, 1034, 1035, 1036, 1169, 1167, 1170, 1164, - 969, 970, 1544, 890, 1537, 1258, 1089, 84, 620, 1542, - 1099, 274, 1098, 1213, 274, 749, 1093, 1094, 567, 939, - 1205, 1516, 1102, 1104, 647, 648, 649, 650, 651, 652, - 653, 646, 940, 1103, 656, 610, 1515, 1110, 1450, 1203, - 1197, 1396, 973, 274, 84, 1431, 1053, 611, 274, 822, - 274, 273, 273, 273, 273, 273, 325, 1158, 318, 319, - 312, 1372, 325, 273, 1097, 313, 273, 1119, 1120, 326, - 273, 61, 1096, 1371, 273, 326, 624, 625, 328, 1262, - 327, 1101, 322, 323, 328, 1135, 327, 1137, 594, 1132, - 1153, 1190, 1129, 83, 1559, 1558, 65, 845, 627, 1193, - 1559, 1180, 1196, 1182, 1004, 1183, 1201, 1201, 1159, 926, - 607, 1162, 1160, 1161, 1171, 1163, 1497, 1424, 856, 63, - 58, 1179, 1, 1551, 1362, 1111, 1112, 1113, 1432, 1202, - 1059, 1517, 1465, 1185, 1333, 1010, 1001, 72, 535, 71, - 1508, 83, 83, 1181, 840, 580, 1009, 1008, 1212, 1473, - 1214, 1215, 1216, 1422, 1198, 1199, 1021, 803, 1207, 1024, - 1340, 1204, 1513, 757, 810, 811, 812, 755, 756, 754, - 759, 83, 758, 753, 286, 405, 972, 1219, 745, 1049, - 628, 75, 830, 1243, 1241, 1242, 273, 834, 835, 836, - 1055, 838, 839, 850, 283, 588, 589, 288, 664, 83, - 1095, 843, 844, 1186, 411, 404, 1306, 862, 614, 1225, - 1265, 1370, 1261, 1136, 691, 941, 344, 913, 878, 357, - 1256, 1257, 354, 355, 867, 1150, 638, 342, 334, 724, - 717, 1260, 964, 274, 962, 961, 400, 1317, 274, 1313, - 723, 871, 1266, 1295, 274, 83, 83, 1300, 1267, 1158, - 274, 321, 1291, 1285, 1284, 84, 1210, 1211, 1391, 84, - 1491, 84, 1303, 320, 938, 887, 45, 84, 300, 83, - 28, 1092, 62, 329, 20, 1310, 19, 18, 22, 17, - 16, 15, 555, 83, 1319, 83, 83, 32, 1305, 1201, - 1201, 1332, 23, 14, 1004, 13, 1004, 1326, 12, 1325, - 1327, 11, 10, 9, 1346, 8, 84, 4, 599, 21, - 314, 1337, 1338, 273, 1336, 1331, 654, 655, 647, 648, - 649, 650, 651, 652, 653, 646, 1344, 1345, 656, 25, - 2, 0, 0, 273, 0, 0, 0, 0, 0, 83, - 0, 1363, 83, 83, 83, 273, 1269, 1270, 0, 0, - 83, 0, 0, 0, 0, 0, 0, 0, 1354, 1286, - 1287, 1265, 1288, 1289, 0, 0, 0, 0, 0, 0, - 274, 274, 274, 0, 1296, 1297, 1368, 1369, 1357, 84, - 1355, 0, 0, 0, 0, 84, 0, 0, 0, 0, - 1367, 0, 0, 1379, 0, 1356, 0, 1358, 0, 0, - 0, 0, 0, 0, 0, 0, 345, 0, 0, 1158, - 0, 0, 1397, 0, 0, 0, 0, 0, 866, 1407, - 0, 1052, 83, 1054, 0, 0, 0, 1406, 1193, 0, - 83, 1376, 1377, 1004, 1378, 0, 1342, 1380, 0, 1382, - 1081, 0, 0, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 83, 0, 0, 0, 332, 0, 0, 0, - 0, 0, 0, 1434, 0, 0, 0, 0, 1440, 0, - 0, 1416, 0, 0, 0, 0, 0, 0, 0, 923, - 925, 0, 0, 1438, 0, 0, 0, 0, 0, 0, - 0, 0, 1419, 83, 83, 0, 83, 0, 0, 1374, - 0, 83, 0, 83, 83, 83, 273, 1451, 1303, 83, - 274, 0, 0, 0, 1459, 84, 1460, 1462, 1463, 0, - 274, 274, 84, 84, 84, 1470, 83, 273, 274, 1464, - 1477, 274, 0, 0, 274, 1453, 1446, 0, 274, 1485, - 84, 1478, 0, 1479, 0, 84, 84, 84, 274, 84, - 84, 1458, 0, 0, 0, 0, 0, 1498, 1507, 84, - 84, 0, 1303, 83, 0, 0, 1506, 1505, 0, 0, - 0, 0, 1486, 0, 83, 83, 1425, 0, 1427, 0, - 0, 1521, 1520, 0, 0, 1434, 1004, 0, 1499, 0, - 0, 83, 0, 1527, 84, 1158, 0, 0, 0, 0, - 0, 274, 273, 0, 0, 1439, 0, 84, 0, 0, - 83, 0, 0, 370, 54, 1394, 0, 1441, 1442, 1443, - 1444, 1445, 1536, 0, 0, 1448, 1449, 0, 0, 1541, - 1543, 83, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1556, 1545, 0, 0, 1531, 0, 0, - 0, 84, 1567, 0, 0, 645, 644, 654, 655, 647, - 648, 649, 650, 651, 652, 653, 646, 1224, 54, 656, - 0, 0, 0, 0, 0, 0, 316, 0, 0, 1388, - 0, 0, 0, 0, 84, 84, 0, 0, 0, 0, - 0, 0, 274, 0, 0, 0, 1255, 0, 0, 0, - 274, 274, 0, 0, 274, 274, 0, 0, 274, 274, - 274, 84, 0, 0, 0, 1117, 0, 0, 0, 1118, - 0, 0, 0, 0, 84, 0, 1122, 1123, 1124, 0, - 0, 0, 0, 1130, 0, 0, 1133, 1134, 0, 0, - 0, 0, 0, 0, 1140, 0, 0, 666, 1142, 0, - 0, 1145, 1146, 1147, 1148, 1149, 0, 645, 644, 654, - 655, 647, 648, 649, 650, 651, 652, 653, 646, 612, - 616, 656, 0, 0, 1173, 0, 0, 0, 274, 84, - 0, 84, 0, 0, 0, 1560, 0, 274, 274, 274, - 274, 274, 637, 274, 274, 1387, 0, 274, 84, 0, - 0, 0, 0, 0, 725, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 274, 0, 0, 0, 0, 274, - 0, 274, 274, 0, 0, 0, 274, 681, 0, 0, - 0, 0, 640, 0, 643, 0, 692, 0, 0, 0, - 657, 658, 659, 660, 661, 662, 663, 274, 641, 642, - 639, 645, 644, 654, 655, 647, 648, 649, 650, 651, - 652, 653, 646, 0, 0, 656, 0, 0, 0, 0, - 0, 0, 0, 645, 644, 654, 655, 647, 648, 649, - 650, 651, 652, 653, 646, 0, 0, 656, 0, 0, - 0, 0, 0, 0, 0, 578, 0, 0, 0, 578, - 0, 578, 0, 0, 0, 0, 0, 578, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 1271, - 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 274, 274, 274, 274, 274, 0, - 0, 0, 0, 0, 0, 0, 274, 0, 0, 274, - 1386, 665, 0, 274, 667, 0, 0, 274, 645, 644, - 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 1430, 0, 656, 0, 0, 0, 84, 0, 0, 368, - 0, 0, 678, 0, 682, 683, 684, 685, 686, 687, - 688, 689, 690, 0, 693, 696, 696, 696, 702, 696, - 696, 702, 696, 710, 711, 712, 713, 714, 715, 716, - 0, 726, 0, 82, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 84, 0, 833, 645, 644, + 837, 83, 656, 864, 865, 85, 86, 87, 273, 915, + 821, 85, 86, 87, 83, 645, 644, 654, 655, 647, + 648, 649, 650, 651, 652, 653, 646, 961, 887, 656, + 925, 359, 358, 361, 362, 363, 364, 914, 61, 891, + 360, 365, 315, 85, 86, 87, 916, 1192, 1484, 886, + 888, 1352, 866, 876, 961, 630, 629, 875, 83, 645, + 644, 654, 655, 647, 648, 649, 650, 651, 652, 653, + 646, 1193, 631, 656, 993, 932, 935, 1473, 1523, 884, + 873, 945, 1473, 608, 1473, 1502, 1473, 1472, 1145, 803, + 948, 83, 83, 1419, 1418, 960, 810, 811, 812, 273, + 1406, 608, 1403, 608, 1354, 1353, 927, 273, 273, 1350, + 1351, 273, 273, 1144, 830, 273, 273, 273, 83, 834, + 835, 836, 961, 838, 839, 917, 918, 1350, 1349, 410, + 873, 83, 538, 843, 844, 731, 953, 954, 873, 608, + 961, 608, 1005, 874, 959, 966, 969, 970, 971, 967, + 829, 968, 972, 925, 608, 1316, 1317, 986, 1102, 889, + 751, 750, 898, 899, 900, 901, 902, 903, 904, 905, + 906, 907, 908, 909, 910, 911, 912, 984, 862, 731, + 985, 992, 991, 988, 987, 273, 83, 983, 83, 873, + 1070, 732, 1008, 819, 273, 273, 273, 273, 273, 737, + 273, 273, 26, 1312, 273, 83, 1049, 1029, 1030, 1031, + 1032, 57, 1541, 1436, 1028, 26, 1411, 949, 317, 1048, + 1340, 273, 1196, 1040, 1041, 1042, 273, 1044, 273, 273, + 1052, 1453, 1039, 273, 1038, 733, 732, 735, 1251, 1072, + 1073, 1074, 1075, 1076, 1437, 1079, 1080, 1045, 1046, 1081, + 1051, 1558, 57, 887, 1554, 273, 1085, 928, 929, 1316, + 1317, 934, 937, 938, 339, 57, 1083, 1342, 57, 1319, + 1300, 1084, 1223, 852, 1093, 888, 823, 1322, 1089, 26, + 733, 1321, 731, 1035, 1036, 1037, 952, 1169, 1167, 955, + 956, 1269, 1170, 1168, 891, 1166, 1165, 1171, 84, 970, + 971, 1094, 274, 1152, 1545, 274, 1095, 1538, 1153, 1105, + 1103, 645, 644, 654, 655, 647, 648, 649, 650, 651, + 652, 653, 646, 1259, 1104, 656, 666, 1111, 1090, 57, + 620, 1543, 1100, 1099, 274, 84, 940, 1214, 325, 274, + 610, 274, 273, 273, 273, 273, 273, 1206, 1159, 941, + 749, 326, 611, 1053, 273, 1055, 325, 273, 624, 625, + 328, 273, 327, 567, 1517, 273, 1516, 1451, 1204, 326, + 1198, 1397, 1082, 1432, 1138, 1054, 322, 323, 328, 822, + 327, 1154, 1191, 725, 83, 966, 969, 970, 971, 967, + 1194, 968, 972, 1197, 974, 1005, 312, 1202, 1202, 1160, + 927, 607, 1163, 1172, 1161, 1162, 1098, 1164, 318, 319, + 1180, 1263, 1373, 313, 1097, 61, 1112, 1113, 1114, 1372, + 1102, 594, 1186, 1133, 1203, 1560, 1559, 65, 1130, 845, + 627, 1560, 83, 83, 1182, 1498, 1425, 857, 63, 1213, + 58, 1215, 1216, 1217, 1, 1181, 1552, 1183, 1363, 1184, + 1433, 1199, 1200, 1060, 1518, 1466, 1334, 1011, 1117, 1002, + 72, 535, 83, 71, 1509, 840, 580, 1220, 1010, 1009, + 1474, 1423, 1022, 1208, 1025, 1242, 1341, 273, 645, 644, 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 0, 0, 656, 0, 0, 0, 891, 0, 0, 0, - 412, 849, 0, 0, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1373, 0, 1268, 274, - 0, 0, 0, 1375, 0, 0, 0, 0, 0, 0, - 0, 0, 84, 0, 1384, 1385, 876, 877, 645, 644, + 83, 1205, 656, 1514, 757, 1120, 1121, 755, 756, 754, + 1226, 1266, 759, 758, 753, 286, 405, 973, 914, 745, + 1257, 1258, 1050, 1136, 628, 75, 1244, 1243, 1056, 850, + 283, 588, 1261, 589, 274, 288, 664, 1096, 1187, 274, + 411, 404, 1268, 1267, 1296, 274, 83, 83, 1301, 1292, + 1159, 274, 1307, 863, 1286, 1285, 84, 1211, 1212, 614, + 84, 1371, 84, 1304, 1262, 1093, 888, 1137, 84, 691, + 83, 654, 655, 647, 648, 649, 650, 651, 652, 653, + 646, 942, 344, 656, 83, 1320, 83, 83, 879, 1306, + 1202, 1202, 1333, 357, 1327, 1005, 354, 1005, 355, 868, + 1326, 1151, 638, 342, 334, 1347, 724, 84, 717, 965, + 1225, 963, 1332, 962, 273, 1337, 1338, 1339, 400, 1318, + 1314, 723, 872, 321, 1392, 1492, 320, 1345, 1346, 1311, + 939, 45, 300, 332, 273, 892, 28, 62, 329, 1256, + 83, 20, 1364, 83, 83, 83, 273, 1270, 1271, 19, + 18, 83, 22, 17, 1328, 16, 15, 555, 32, 1355, + 1287, 1288, 1266, 1289, 1290, 23, 14, 13, 12, 11, + 10, 274, 274, 274, 9, 1297, 1298, 1369, 1370, 1358, + 84, 1356, 8, 4, 599, 21, 84, 314, 25, 2, + 0, 1368, 0, 0, 1380, 0, 1357, 0, 1359, 644, 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 0, 0, 656, 0, 1399, 1400, 1401, 0, 1404, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1415, 0, 0, 84, 84, - 0, 0, 0, 725, 0, 0, 0, 725, 0, 681, - 0, 725, 929, 930, 0, 0, 0, 0, 0, 0, - 0, 0, 84, 0, 0, 578, 0, 0, 0, 0, - 0, 0, 578, 578, 578, 0, 84, 0, 84, 84, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 578, 0, 0, 0, 0, 578, 578, 578, 0, 578, - 578, 0, 0, 0, 0, 0, 274, 0, 0, 578, - 578, 998, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1461, 0, 0, 0, 274, 0, 0, 0, - 0, 0, 84, 0, 0, 84, 84, 84, 274, 0, - 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, - 0, 1487, 1488, 1489, 1490, 0, 1494, 0, 1495, 1496, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1502, 412, 1503, 1504, 0, 412, 0, 412, 0, 0, - 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, - 725, 54, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1523, 0, 0, 0, 0, 682, 0, 0, 1528, - 891, 0, 0, 0, 0, 84, 0, 0, 0, 0, - 0, 0, 634, 84, 0, 1090, 1091, 1533, 616, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, - 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, - 975, 0, 0, 0, 726, 0, 0, 0, 726, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1568, 1569, 0, 0, 0, 0, 0, 725, 725, 725, - 725, 725, 0, 0, 0, 0, 84, 84, 0, 84, - 0, 1121, 725, 0, 84, 412, 84, 84, 84, 274, - 725, 746, 84, 0, 0, 0, 0, 0, 0, 0, - 1139, 0, 1116, 0, 0, 0, 0, 0, 0, 84, - 274, 0, 0, 0, 0, 0, 0, 0, 0, 578, - 0, 578, 645, 644, 654, 655, 647, 648, 649, 650, - 651, 652, 653, 646, 0, 0, 656, 0, 578, 0, + 1159, 0, 656, 1398, 0, 0, 0, 0, 0, 867, + 1408, 0, 725, 83, 1407, 0, 725, 0, 0, 1194, + 725, 83, 1377, 1378, 1005, 1379, 0, 1343, 1381, 0, + 1383, 0, 0, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 83, 0, 647, 648, 649, 650, 651, + 652, 653, 646, 0, 1435, 656, 0, 0, 0, 1441, + 0, 0, 1417, 0, 0, 0, 0, 0, 0, 0, + 924, 926, 0, 0, 1439, 0, 0, 0, 0, 0, + 0, 0, 0, 1420, 83, 83, 0, 83, 0, 0, + 1375, 0, 83, 0, 83, 83, 83, 273, 1452, 1304, + 83, 274, 0, 0, 0, 1460, 84, 1461, 1463, 1464, + 0, 274, 274, 84, 84, 84, 1471, 83, 273, 274, + 1465, 1478, 274, 0, 0, 274, 1454, 1447, 0, 274, + 1486, 84, 1479, 0, 1480, 0, 84, 84, 84, 274, + 84, 84, 1459, 0, 0, 0, 0, 0, 1499, 1508, + 84, 84, 0, 1304, 83, 0, 0, 1507, 1506, 0, + 725, 0, 0, 1487, 0, 83, 83, 1426, 0, 1428, + 0, 0, 1522, 1521, 0, 0, 1435, 1005, 0, 1500, + 892, 0, 83, 0, 1528, 84, 1159, 0, 0, 0, + 0, 0, 274, 273, 0, 0, 1440, 0, 84, 0, + 0, 83, 0, 1431, 0, 370, 54, 0, 1442, 1443, + 1444, 1445, 1446, 1537, 0, 0, 1449, 1450, 0, 0, + 1542, 1544, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1557, 1546, 612, 616, 1532, 0, + 0, 0, 84, 1568, 0, 0, 0, 725, 725, 725, + 725, 725, 0, 0, 0, 0, 0, 0, 0, 637, + 54, 0, 725, 0, 0, 0, 0, 0, 316, 0, + 725, 1389, 0, 0, 0, 84, 84, 0, 0, 0, + 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, + 0, 274, 274, 0, 681, 274, 274, 0, 0, 274, + 274, 274, 84, 692, 0, 0, 0, 1118, 0, 0, + 0, 1119, 1388, 0, 0, 84, 0, 0, 1123, 1124, + 1125, 0, 0, 0, 0, 1131, 0, 0, 1134, 1135, + 0, 0, 0, 0, 0, 0, 1141, 0, 0, 0, + 1143, 0, 0, 1146, 1147, 1148, 1149, 1150, 0, 645, + 644, 654, 655, 647, 648, 649, 650, 651, 652, 653, + 646, 0, 0, 656, 0, 0, 1174, 0, 0, 274, + 84, 0, 84, 0, 0, 0, 1561, 0, 274, 274, + 274, 274, 274, 1387, 274, 274, 0, 0, 274, 84, + 645, 644, 654, 655, 647, 648, 649, 650, 651, 652, + 653, 646, 0, 0, 656, 274, 0, 0, 0, 0, + 274, 0, 274, 274, 0, 0, 0, 274, 0, 0, + 0, 0, 0, 0, 640, 0, 643, 0, 0, 0, + 0, 0, 657, 658, 659, 660, 661, 662, 663, 274, + 641, 642, 639, 645, 644, 654, 655, 647, 648, 649, + 650, 651, 652, 653, 646, 0, 0, 656, 0, 0, + 0, 645, 644, 654, 655, 647, 648, 649, 650, 651, + 652, 653, 646, 0, 0, 656, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 578, 0, 0, + 0, 578, 0, 578, 833, 0, 0, 0, 0, 578, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, + 0, 1272, 1273, 0, 0, 0, 0, 0, 849, 0, + 0, 0, 54, 0, 0, 0, 274, 274, 274, 274, + 274, 0, 0, 0, 0, 0, 0, 0, 274, 0, + 0, 274, 0, 665, 0, 274, 667, 0, 0, 274, + 0, 0, 0, 877, 878, 645, 644, 654, 655, 647, + 648, 649, 650, 651, 652, 653, 646, 0, 84, 656, + 0, 368, 0, 0, 678, 0, 682, 683, 684, 685, + 686, 687, 688, 689, 690, 0, 693, 696, 696, 696, + 702, 696, 696, 702, 696, 710, 711, 712, 713, 714, + 715, 716, 0, 726, 0, 82, 681, 0, 0, 930, + 931, 0, 0, 0, 0, 0, 84, 84, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 412, 0, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1374, 0, + 0, 274, 0, 0, 0, 1376, 0, 0, 999, 0, + 0, 0, 0, 0, 84, 0, 1385, 1386, 0, 0, + 26, 27, 55, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1400, 1401, 1402, 46, + 1405, 0, 0, 0, 31, 51, 52, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1416, 0, 0, + 84, 84, 0, 0, 0, 0, 40, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 0, 0, 578, 0, 0, + 0, 0, 0, 0, 578, 578, 578, 0, 84, 0, + 84, 84, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 578, 0, 0, 0, 0, 578, 578, 578, + 0, 578, 578, 1091, 1092, 0, 616, 0, 274, 0, + 0, 578, 578, 33, 34, 36, 35, 38, 0, 53, + 0, 0, 0, 0, 1462, 0, 0, 0, 274, 0, + 0, 0, 0, 0, 84, 0, 0, 84, 84, 84, + 274, 0, 39, 47, 48, 84, 0, 49, 50, 37, + 0, 0, 0, 1488, 1489, 1490, 1491, 0, 1495, 0, + 1496, 1497, 0, 41, 42, 0, 43, 44, 0, 1122, + 0, 0, 1503, 412, 1504, 1505, 0, 412, 0, 412, + 0, 0, 0, 0, 0, 412, 0, 0, 1140, 0, + 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1524, 0, 0, 0, 0, 682, 0, + 0, 1529, 0, 0, 0, 0, 0, 84, 0, 0, + 0, 0, 0, 0, 634, 84, 0, 0, 0, 1534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 0, 84, 0, 56, + 0, 0, 976, 0, 0, 0, 726, 0, 0, 0, + 726, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1569, 1570, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 84, + 0, 84, 0, 0, 0, 0, 84, 412, 84, 84, + 84, 274, 0, 746, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 84, 274, 0, 0, 0, 0, 0, 0, 0, + 0, 578, 0, 578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1264, 0, 0, 0, + 578, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1294, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 274, 0, 0, + 726, 0, 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 84, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 274, 0, 726, 0, 0, - 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, - 1109, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, - 0, 412, 0, 0, 0, 0, 0, 0, 412, 412, - 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, - 0, 412, 412, 412, 0, 412, 412, 0, 1263, 0, - 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, - 1154, 1155, 0, 0, 726, 726, 726, 726, 726, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, - 0, 1178, 0, 0, 0, 1293, 0, 726, 0, 0, - 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 634, 0, 0, 412, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 613, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 918, 0, 0, - 0, 0, 0, 0, 0, 578, 0, 0, 0, 0, - 0, 0, 0, 945, 0, 0, 0, 0, 0, 272, - 0, 0, 298, 0, 0, 0, 0, 0, 0, 774, - 949, 950, 0, 0, 578, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 333, 0, - 0, 403, 0, 0, 0, 0, 272, 412, 272, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1393, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 681, 0, 0, 0, 0, 1304, 0, 54, 1408, - 0, 762, 1409, 0, 0, 1411, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 412, 0, 412, 0, 0, + 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, + 412, 412, 412, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, + 0, 0, 0, 412, 412, 412, 0, 412, 412, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 412, 0, + 0, 0, 0, 1155, 1156, 0, 0, 726, 726, 726, + 726, 726, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 976, 0, 1179, 0, 0, 0, 0, 0, + 726, 0, 869, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 634, 0, 0, 412, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1394, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 681, + 0, 0, 0, 0, 0, 0, 0, 1409, 0, 0, + 1410, 0, 0, 1412, 0, 774, 0, 0, 0, 919, + 0, 0, 0, 0, 0, 0, 0, 0, 578, 0, + 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 950, 951, 0, 0, 0, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 1438, 681, 0, 0, + 0, 0, 0, 0, 0, 613, 0, 0, 0, 412, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 412, 0, 0, 0, 0, 762, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 272, 0, 0, 298, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, + 0, 54, 0, 0, 0, 0, 775, 0, 0, 0, + 0, 0, 333, 0, 0, 403, 0, 412, 0, 412, + 272, 0, 272, 0, 0, 0, 0, 0, 0, 788, + 791, 792, 793, 794, 795, 796, 412, 797, 798, 799, + 800, 801, 776, 777, 778, 779, 760, 761, 789, 0, + 763, 0, 764, 765, 766, 767, 768, 769, 770, 771, + 772, 773, 780, 781, 782, 783, 784, 785, 786, 787, + 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, - 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1437, 681, - 0, 0, 0, 788, 791, 792, 793, 794, 795, 796, - 412, 797, 798, 799, 800, 801, 776, 777, 778, 779, - 760, 761, 789, 0, 763, 0, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 780, 781, 782, 783, - 784, 785, 786, 787, 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, 272, 0, 0, 1390, 0, 272, 26, 27, 55, - 29, 30, 272, 0, 0, 0, 0, 0, 272, 0, - 0, 0, 0, 0, 0, 790, 46, 0, 0, 0, - 0, 31, 51, 52, 0, 0, 1412, 1413, 1414, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 40, 0, 0, 0, 57, 0, 0, - 0, 0, 0, 333, 0, 0, 0, 0, 578, 0, + 0, 790, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 412, 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, 1413, + 1414, 1415, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1304, 0, 0, 1454, 0, 0, 0, 0, - 33, 34, 36, 35, 38, 0, 53, 0, 0, 0, - 1223, 412, 0, 0, 0, 0, 0, 0, 272, 272, - 272, 0, 0, 0, 0, 1482, 0, 0, 0, 39, - 47, 48, 0, 0, 49, 50, 37, 0, 0, 0, - 412, 0, 0, 0, 0, 0, 1304, 0, 54, 0, - 41, 42, 0, 43, 44, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 578, 0, 0, 0, 272, 0, 0, 0, 0, + 272, 0, 0, 0, 0, 412, 272, 0, 0, 0, + 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1305, 0, 0, 1455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1224, 412, 0, 0, 333, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1483, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 412, 0, 0, 0, 0, 0, 1305, + 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 945, 0, 0, 1307, 1309, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 1309, 0, - 0, 0, 0, 1554, 0, 0, 0, 0, 0, 0, - 0, 0, 412, 0, 412, 1335, 0, 0, 272, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 272, 272, - 0, 0, 0, 0, 0, 0, 272, 0, 0, 272, - 0, 0, 272, 0, 0, 0, 828, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1359, 0, - 0, 1364, 1365, 1366, 0, 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 272, 272, 272, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 946, 0, 0, 1308, 1310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, - 0, 0, 0, 0, 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1310, 0, 0, 0, 0, 1555, 0, 0, 0, + 0, 0, 0, 0, 0, 412, 0, 412, 1336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 412, 0, 0, 0, 0, 0, 0, 0, 1421, - 333, 0, 0, 0, 0, 333, 333, 0, 0, 333, - 333, 333, 0, 0, 412, 946, 0, 0, 0, 0, - 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 333, 333, 333, 333, 333, 0, - 272, 0, 0, 0, 0, 0, 0, 0, 272, 980, - 0, 0, 272, 272, 0, 0, 272, 988, 828, 0, - 0, 0, 1455, 1456, 0, 1457, 0, 0, 0, 0, - 1421, 0, 1421, 1421, 1421, 0, 0, 0, 1335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1421, 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, 272, 0, 0, 0, - 0, 0, 1512, 0, 0, 272, 272, 272, 272, 272, - 0, 272, 272, 412, 412, 272, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 945, 0, 0, - 1529, 0, 272, 0, 0, 0, 0, 272, 0, 1085, - 1086, 0, 0, 0, 272, 0, 0, 0, 0, 1535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1360, 0, 0, 1365, 1366, 1367, 0, 0, 0, + 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 272, 272, 0, 0, 0, 0, 0, 0, + 272, 0, 0, 272, 0, 0, 272, 0, 0, 0, + 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 272, 0, 0, 0, 946, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, + 0, 0, 1422, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, + 0, 0, 0, 272, 412, 0, 0, 0, 0, 0, 0, 0, 828, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 333, 272, 0, 0, 0, 0, - 1421, 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, 1456, 1457, 0, 1458, 0, + 0, 0, 0, 1422, 333, 1422, 1422, 1422, 0, 333, + 333, 1336, 0, 333, 333, 333, 0, 0, 0, 947, + 0, 0, 0, 0, 0, 0, 0, 0, 1422, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 333, + 333, 333, 333, 0, 272, 0, 0, 0, 0, 0, + 0, 0, 272, 981, 0, 0, 272, 272, 0, 0, + 272, 989, 828, 0, 0, 1513, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 333, 333, 0, 0, 0, 0, 0, 0, + 946, 0, 0, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 946, 272, 272, 272, 272, 272, 0, 0, 0, - 0, 0, 0, 0, 1172, 0, 0, 272, 0, 0, - 0, 980, 0, 0, 0, 272, 0, 0, 0, 0, + 272, 0, 0, 1422, 0, 0, 0, 0, 0, 272, + 272, 272, 272, 272, 0, 272, 272, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, + 0, 272, 0, 1086, 1087, 0, 0, 0, 272, 0, + 0, 0, 0, 0, 0, 0, 0, 828, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, + 272, 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, 0, 0, 0, 0, 0, 0, 333, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 947, 272, 272, 272, + 272, 272, 0, 0, 0, 0, 0, 0, 0, 1173, + 0, 0, 272, 0, 0, 0, 981, 0, 0, 0, + 272, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 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, 828, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 946, 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, 272, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 333, 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, 828, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 272, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 946, 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, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 522, 510, 0, 467, 525, 440, 457, 533, - 458, 461, 498, 425, 480, 173, 455, 980, 444, 420, - 451, 421, 442, 469, 117, 473, 439, 512, 483, 524, - 145, 445, 531, 147, 489, 0, 219, 161, 272, 0, - 0, 471, 514, 478, 507, 466, 499, 430, 488, 526, - 456, 496, 527, 0, 0, 0, 85, 86, 87, 0, - 1005, 1006, 0, 0, 0, 0, 0, 107, 0, 493, - 521, 453, 495, 497, 419, 490, 0, 423, 426, 532, - 517, 448, 449, 1194, 0, 0, 0, 0, 0, 0, - 470, 479, 504, 464, 0, 0, 0, 0, 0, 946, - 0, 0, 446, 0, 487, 0, 0, 0, 427, 424, - 0, 0, 468, 272, 0, 0, 429, 0, 447, 505, - 0, 417, 126, 509, 516, 465, 275, 520, 463, 462, - 523, 192, 0, 223, 129, 144, 103, 141, 89, 99, - 0, 128, 170, 199, 203, 513, 443, 452, 111, 450, - 201, 180, 239, 486, 182, 200, 148, 229, 193, 238, - 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, - 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, - 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, - 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, - 158, 152, 143, 120, 131, 190, 150, 191, 132, 163, - 162, 164, 0, 422, 0, 220, 242, 257, 105, 438, - 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, - 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, - 109, 241, 218, 434, 437, 432, 433, 481, 482, 528, - 529, 530, 506, 428, 0, 435, 436, 0, 511, 518, - 519, 485, 88, 97, 146, 254, 194, 122, 243, 418, - 431, 115, 441, 0, 0, 454, 459, 460, 472, 474, - 475, 476, 477, 484, 491, 492, 494, 500, 501, 502, - 503, 508, 515, 534, 90, 91, 98, 104, 110, 114, - 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, - 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, - 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, - 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, - 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, - 522, 510, 0, 467, 525, 440, 457, 533, 458, 461, - 498, 425, 480, 173, 455, 0, 444, 420, 451, 421, - 442, 469, 117, 473, 439, 512, 483, 524, 145, 445, - 531, 147, 489, 0, 219, 161, 0, 0, 0, 471, - 514, 478, 507, 466, 499, 430, 488, 526, 456, 496, - 527, 0, 0, 0, 85, 86, 87, 0, 1005, 1006, - 0, 0, 0, 0, 0, 107, 0, 493, 521, 453, - 495, 497, 419, 490, 0, 423, 426, 532, 517, 448, - 449, 0, 0, 0, 0, 0, 0, 0, 470, 479, - 504, 464, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 0, 487, 0, 0, 0, 427, 424, 0, 0, - 468, 0, 0, 0, 429, 0, 447, 505, 0, 417, - 126, 509, 516, 465, 275, 520, 463, 462, 523, 192, - 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, - 170, 199, 203, 513, 443, 452, 111, 450, 201, 180, - 239, 486, 182, 200, 148, 229, 193, 238, 248, 249, - 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, - 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, - 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, - 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, - 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, - 0, 422, 0, 220, 242, 257, 105, 438, 227, 251, - 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, - 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, - 218, 434, 437, 432, 433, 481, 482, 528, 529, 530, - 506, 428, 0, 435, 436, 0, 511, 518, 519, 485, - 88, 97, 146, 254, 194, 122, 243, 418, 431, 115, - 441, 0, 0, 454, 459, 460, 472, 474, 475, 476, - 477, 484, 491, 492, 494, 500, 501, 502, 503, 508, - 515, 534, 90, 91, 98, 104, 110, 114, 118, 121, - 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, - 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, - 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, - 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, - 215, 221, 224, 230, 231, 240, 247, 250, 522, 510, - 0, 467, 525, 440, 457, 533, 458, 461, 498, 425, - 480, 173, 455, 0, 444, 420, 451, 421, 442, 469, - 117, 473, 439, 512, 483, 524, 145, 445, 531, 147, - 489, 0, 219, 161, 0, 0, 0, 471, 514, 478, - 507, 466, 499, 430, 488, 526, 456, 496, 527, 57, - 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 107, 0, 493, 521, 453, 495, 497, - 419, 490, 0, 423, 426, 532, 517, 448, 449, 0, - 0, 0, 0, 0, 0, 0, 470, 479, 504, 464, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, - 487, 0, 0, 0, 427, 424, 0, 0, 468, 0, - 0, 0, 429, 0, 447, 505, 0, 417, 126, 509, - 516, 465, 275, 520, 463, 462, 523, 192, 0, 223, - 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, - 203, 513, 443, 452, 111, 450, 201, 180, 239, 486, - 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, - 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, - 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, - 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, - 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, - 131, 190, 150, 191, 132, 163, 162, 164, 0, 422, - 0, 220, 242, 257, 105, 438, 227, 251, 252, 0, - 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, - 142, 149, 196, 255, 179, 202, 109, 241, 218, 434, - 437, 432, 433, 481, 482, 528, 529, 530, 506, 428, - 0, 435, 436, 0, 511, 518, 519, 485, 88, 97, - 146, 254, 194, 122, 243, 418, 431, 115, 441, 0, - 0, 454, 459, 460, 472, 474, 475, 476, 477, 484, - 491, 492, 494, 500, 501, 502, 503, 508, 515, 534, - 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, - 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, - 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, - 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, - 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, - 224, 230, 231, 240, 247, 250, 522, 510, 0, 467, - 525, 440, 457, 533, 458, 461, 498, 425, 480, 173, - 455, 0, 444, 420, 451, 421, 442, 469, 117, 473, - 439, 512, 483, 524, 145, 445, 531, 147, 489, 0, - 219, 161, 0, 0, 0, 471, 514, 478, 507, 466, - 499, 430, 488, 526, 456, 496, 527, 0, 0, 0, - 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 493, 521, 453, 495, 497, 419, 490, - 0, 423, 426, 532, 517, 448, 449, 0, 0, 0, - 0, 0, 0, 0, 470, 479, 504, 464, 0, 0, - 0, 0, 0, 0, 1264, 0, 446, 0, 487, 0, - 0, 0, 427, 424, 0, 0, 468, 0, 0, 0, - 429, 0, 447, 505, 0, 417, 126, 509, 516, 465, - 275, 520, 463, 462, 523, 192, 0, 223, 129, 144, - 103, 141, 89, 99, 0, 128, 170, 199, 203, 513, - 443, 452, 111, 450, 201, 180, 239, 486, 182, 200, - 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, - 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, - 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, - 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, - 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, - 150, 191, 132, 163, 162, 164, 0, 422, 0, 220, - 242, 257, 105, 438, 227, 251, 252, 0, 0, 106, - 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 434, 437, 432, - 433, 481, 482, 528, 529, 530, 506, 428, 0, 435, - 436, 0, 511, 518, 519, 485, 88, 97, 146, 254, - 194, 122, 243, 418, 431, 115, 441, 0, 0, 454, - 459, 460, 472, 474, 475, 476, 477, 484, 491, 492, - 494, 500, 501, 502, 503, 508, 515, 534, 90, 91, - 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, - 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, - 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, - 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, - 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 522, 510, 0, 467, 525, 440, - 457, 533, 458, 461, 498, 425, 480, 173, 455, 0, - 444, 420, 451, 421, 442, 469, 117, 473, 439, 512, - 483, 524, 145, 445, 531, 147, 489, 0, 219, 161, - 0, 0, 0, 471, 514, 478, 507, 466, 499, 430, - 488, 526, 456, 496, 527, 0, 0, 0, 85, 86, - 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, - 0, 493, 521, 453, 495, 497, 419, 490, 0, 423, - 426, 532, 517, 448, 449, 0, 0, 0, 0, 0, - 0, 0, 470, 479, 504, 464, 0, 0, 0, 0, - 0, 0, 989, 0, 446, 0, 487, 0, 0, 0, - 427, 424, 0, 0, 468, 0, 0, 0, 429, 0, - 447, 505, 0, 417, 126, 509, 516, 465, 275, 520, - 463, 462, 523, 192, 0, 223, 129, 144, 103, 141, - 89, 99, 0, 128, 170, 199, 203, 513, 443, 452, - 111, 450, 201, 180, 239, 486, 182, 200, 148, 229, - 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, - 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, - 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, - 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, - 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, - 132, 163, 162, 164, 0, 422, 0, 220, 242, 257, - 105, 438, 227, 251, 252, 0, 0, 106, 125, 119, - 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, - 179, 202, 109, 241, 218, 434, 437, 432, 433, 481, - 482, 528, 529, 530, 506, 428, 0, 435, 436, 0, - 511, 518, 519, 485, 88, 97, 146, 254, 194, 122, - 243, 418, 431, 115, 441, 0, 0, 454, 459, 460, - 472, 474, 475, 476, 477, 484, 491, 492, 494, 500, - 501, 502, 503, 508, 515, 534, 90, 91, 98, 104, - 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, - 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, - 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, - 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, - 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, - 247, 250, 522, 510, 0, 467, 525, 440, 457, 533, - 458, 461, 498, 425, 480, 173, 455, 0, 444, 420, - 451, 421, 442, 469, 117, 473, 439, 512, 483, 524, - 145, 445, 531, 147, 489, 0, 219, 161, 0, 0, - 0, 471, 514, 478, 507, 466, 499, 430, 488, 526, - 456, 496, 527, 0, 0, 0, 85, 86, 87, 0, - 0, 0, 0, 0, 0, 0, 0, 107, 0, 493, - 521, 453, 495, 497, 419, 490, 0, 423, 426, 532, - 517, 448, 449, 0, 0, 0, 0, 0, 0, 0, - 470, 479, 504, 464, 0, 0, 0, 0, 0, 0, - 884, 0, 446, 0, 487, 0, 0, 0, 427, 424, - 0, 0, 468, 0, 0, 0, 429, 0, 447, 505, - 0, 417, 126, 509, 516, 465, 275, 520, 463, 462, - 523, 192, 0, 223, 129, 144, 103, 141, 89, 99, - 0, 128, 170, 199, 203, 513, 443, 452, 111, 450, - 201, 180, 239, 486, 182, 200, 148, 229, 193, 238, - 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, - 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, - 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, - 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, - 158, 152, 143, 120, 131, 190, 150, 191, 132, 163, - 162, 164, 0, 422, 0, 220, 242, 257, 105, 438, - 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, - 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, - 109, 241, 218, 434, 437, 432, 433, 481, 482, 528, - 529, 530, 506, 428, 0, 435, 436, 0, 511, 518, - 519, 485, 88, 97, 146, 254, 194, 122, 243, 418, - 431, 115, 441, 0, 0, 454, 459, 460, 472, 474, - 475, 476, 477, 484, 491, 492, 494, 500, 501, 502, - 503, 508, 515, 534, 90, 91, 98, 104, 110, 114, - 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, - 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, - 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, - 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, - 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, - 522, 510, 0, 467, 525, 440, 457, 533, 458, 461, - 498, 425, 480, 173, 455, 0, 444, 420, 451, 421, - 442, 469, 117, 473, 439, 512, 483, 524, 145, 445, - 531, 147, 489, 0, 219, 161, 0, 0, 0, 471, - 514, 478, 507, 466, 499, 430, 488, 526, 456, 496, - 527, 0, 0, 0, 85, 86, 87, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 0, 493, 521, 453, - 495, 497, 419, 490, 0, 423, 426, 532, 517, 448, - 449, 0, 0, 0, 0, 0, 0, 0, 470, 479, - 504, 464, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 0, 487, 0, 0, 0, 427, 424, 0, 0, - 468, 0, 0, 0, 429, 0, 447, 505, 0, 417, - 126, 509, 516, 465, 275, 520, 463, 462, 523, 192, - 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, - 170, 199, 203, 513, 443, 452, 111, 450, 201, 180, - 239, 486, 182, 200, 148, 229, 193, 238, 248, 249, - 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, - 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, - 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, - 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, - 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, - 0, 422, 0, 220, 242, 257, 105, 438, 227, 251, - 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, - 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, - 218, 434, 437, 432, 433, 481, 482, 528, 529, 530, - 506, 428, 0, 435, 436, 0, 511, 518, 519, 485, - 88, 97, 146, 254, 194, 122, 243, 418, 431, 115, - 441, 0, 0, 454, 459, 460, 472, 474, 475, 476, - 477, 484, 491, 492, 494, 500, 501, 502, 503, 508, - 515, 534, 90, 91, 98, 104, 110, 114, 118, 121, - 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, - 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, - 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, - 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, - 215, 221, 224, 230, 231, 240, 247, 250, 522, 510, - 0, 467, 525, 440, 457, 533, 458, 461, 498, 425, - 480, 173, 455, 0, 444, 420, 451, 421, 442, 469, - 117, 473, 439, 512, 483, 524, 145, 445, 531, 147, - 489, 0, 219, 161, 0, 0, 0, 471, 514, 478, - 507, 466, 499, 430, 488, 526, 456, 496, 527, 0, - 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 107, 0, 493, 521, 453, 495, 497, - 419, 490, 0, 423, 426, 532, 517, 448, 449, 0, - 0, 0, 0, 0, 0, 0, 470, 479, 504, 464, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 0, - 487, 0, 0, 0, 427, 424, 0, 0, 468, 0, - 0, 0, 429, 0, 447, 505, 0, 417, 126, 509, - 516, 465, 275, 520, 463, 462, 523, 192, 0, 223, - 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, - 203, 513, 443, 452, 111, 450, 201, 180, 239, 486, - 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, - 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, - 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, - 232, 233, 112, 256, 100, 245, 96, 415, 244, 166, - 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, - 131, 190, 150, 191, 132, 163, 162, 164, 0, 422, - 0, 220, 242, 257, 105, 438, 227, 251, 252, 0, - 0, 106, 125, 119, 189, 123, 416, 414, 134, 217, - 142, 149, 196, 255, 179, 202, 109, 241, 218, 434, - 437, 432, 433, 481, 482, 528, 529, 530, 506, 428, - 0, 435, 436, 0, 511, 518, 519, 485, 88, 97, - 146, 254, 194, 122, 243, 418, 431, 115, 441, 0, - 0, 454, 459, 460, 472, 474, 475, 476, 477, 484, - 491, 492, 494, 500, 501, 502, 503, 508, 515, 534, - 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, - 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, - 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, - 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, - 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, - 224, 230, 231, 240, 247, 250, 522, 510, 0, 467, - 525, 440, 457, 533, 458, 461, 498, 425, 480, 173, - 455, 0, 444, 420, 451, 421, 442, 469, 117, 473, - 439, 512, 483, 524, 145, 445, 531, 147, 489, 0, - 219, 161, 0, 0, 0, 471, 514, 478, 507, 466, - 499, 430, 488, 526, 456, 496, 527, 0, 0, 0, - 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 493, 521, 453, 495, 497, 419, 490, - 0, 423, 426, 532, 517, 448, 449, 0, 0, 0, - 0, 0, 0, 0, 470, 479, 504, 464, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 0, 487, 0, - 0, 0, 427, 424, 0, 0, 468, 0, 0, 0, - 429, 0, 447, 505, 0, 417, 126, 509, 516, 465, - 275, 520, 463, 462, 523, 192, 0, 223, 129, 144, - 103, 141, 89, 99, 0, 128, 170, 199, 203, 513, - 443, 452, 111, 450, 201, 180, 239, 486, 182, 200, - 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, - 92, 225, 738, 108, 211, 94, 235, 222, 159, 138, - 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, - 112, 256, 100, 245, 96, 415, 244, 166, 228, 236, - 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, - 150, 191, 132, 163, 162, 164, 0, 422, 0, 220, - 242, 257, 105, 438, 227, 251, 252, 0, 0, 106, - 125, 119, 189, 123, 416, 414, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 434, 437, 432, - 433, 481, 482, 528, 529, 530, 506, 428, 0, 435, - 436, 0, 511, 518, 519, 485, 88, 97, 146, 254, - 194, 122, 243, 418, 431, 115, 441, 0, 0, 454, - 459, 460, 472, 474, 475, 476, 477, 484, 491, 492, - 494, 500, 501, 502, 503, 508, 515, 534, 90, 91, - 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, - 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, - 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, - 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, - 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 522, 510, 0, 467, 525, 440, - 457, 533, 458, 461, 498, 425, 480, 173, 455, 0, - 444, 420, 451, 421, 442, 469, 117, 473, 439, 512, - 483, 524, 145, 445, 531, 147, 489, 0, 219, 161, - 0, 0, 0, 471, 514, 478, 507, 466, 499, 430, - 488, 526, 456, 496, 527, 0, 0, 0, 85, 86, - 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, - 0, 493, 521, 453, 495, 497, 419, 490, 0, 423, - 426, 532, 517, 448, 449, 0, 0, 0, 0, 0, - 0, 0, 470, 479, 504, 464, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 0, 487, 0, 0, 0, - 427, 424, 0, 0, 468, 0, 0, 0, 429, 0, - 447, 505, 0, 417, 126, 509, 516, 465, 275, 520, - 463, 462, 523, 192, 0, 223, 129, 144, 103, 141, - 89, 99, 0, 128, 170, 199, 203, 513, 443, 452, - 111, 450, 201, 180, 239, 486, 182, 200, 148, 229, - 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, - 406, 108, 211, 94, 235, 222, 159, 138, 139, 93, - 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, - 100, 245, 96, 415, 244, 166, 228, 236, 160, 153, - 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, - 132, 163, 162, 164, 0, 422, 0, 220, 242, 257, - 105, 438, 227, 251, 252, 0, 0, 106, 125, 119, - 189, 123, 416, 414, 409, 408, 142, 149, 196, 255, - 179, 202, 109, 241, 218, 434, 437, 432, 433, 481, - 482, 528, 529, 530, 506, 428, 0, 435, 436, 0, - 511, 518, 519, 485, 88, 97, 146, 254, 194, 122, - 243, 418, 431, 115, 441, 0, 0, 454, 459, 460, - 472, 474, 475, 476, 477, 484, 491, 492, 494, 500, - 501, 502, 503, 508, 515, 534, 90, 91, 98, 104, - 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, - 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, - 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, - 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, - 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, - 247, 250, 173, 0, 0, 920, 0, 340, 0, 0, - 0, 117, 0, 337, 0, 0, 0, 145, 921, 380, - 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, - 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, - 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, - 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 349, 350, 331, 0, 0, - 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, + 0, 272, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 947, 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, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 522, 510, 0, + 467, 525, 440, 457, 533, 458, 461, 498, 425, 480, + 173, 455, 981, 444, 420, 451, 421, 442, 469, 117, + 473, 439, 512, 483, 524, 145, 445, 531, 147, 489, + 0, 219, 161, 272, 0, 0, 471, 514, 478, 507, + 466, 499, 430, 488, 526, 456, 496, 527, 0, 0, + 0, 85, 86, 87, 0, 1006, 1007, 0, 0, 0, + 0, 0, 107, 0, 493, 521, 453, 495, 497, 419, + 490, 0, 423, 426, 532, 517, 448, 449, 1195, 0, + 0, 0, 0, 0, 0, 470, 479, 504, 464, 0, + 0, 0, 0, 0, 947, 0, 0, 446, 0, 487, + 0, 0, 0, 427, 424, 0, 0, 468, 272, 0, + 0, 429, 0, 447, 505, 0, 417, 126, 509, 516, + 465, 275, 520, 463, 462, 523, 192, 0, 223, 129, + 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, + 513, 443, 452, 111, 450, 201, 180, 239, 486, 182, + 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, + 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, + 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, + 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, + 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, + 190, 150, 191, 132, 163, 162, 164, 0, 422, 0, + 220, 242, 257, 105, 438, 227, 251, 252, 0, 0, + 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, + 149, 196, 255, 179, 202, 109, 241, 218, 434, 437, + 432, 433, 481, 482, 528, 529, 530, 506, 428, 0, + 435, 436, 0, 511, 518, 519, 485, 88, 97, 146, + 254, 194, 122, 243, 418, 431, 115, 441, 0, 0, + 454, 459, 460, 472, 474, 475, 476, 477, 484, 491, + 492, 494, 500, 501, 502, 503, 508, 515, 534, 90, + 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, + 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, + 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, + 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, + 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, + 230, 231, 240, 247, 250, 522, 510, 0, 467, 525, + 440, 457, 533, 458, 461, 498, 425, 480, 173, 455, + 0, 444, 420, 451, 421, 442, 469, 117, 473, 439, + 512, 483, 524, 145, 445, 531, 147, 489, 0, 219, + 161, 0, 0, 0, 471, 514, 478, 507, 466, 499, + 430, 488, 526, 456, 496, 527, 0, 0, 0, 85, + 86, 87, 0, 1006, 1007, 0, 0, 0, 0, 0, + 107, 0, 493, 521, 453, 495, 497, 419, 490, 0, + 423, 426, 532, 517, 448, 449, 0, 0, 0, 0, + 0, 0, 0, 470, 479, 504, 464, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 0, 487, 0, 0, + 0, 427, 424, 0, 0, 468, 0, 0, 0, 429, + 0, 447, 505, 0, 417, 126, 509, 516, 465, 275, + 520, 463, 462, 523, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 513, 443, + 452, 111, 450, 201, 180, 239, 486, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 422, 0, 220, 242, + 257, 105, 438, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 434, 437, 432, 433, + 481, 482, 528, 529, 530, 506, 428, 0, 435, 436, + 0, 511, 518, 519, 485, 88, 97, 146, 254, 194, + 122, 243, 418, 431, 115, 441, 0, 0, 454, 459, + 460, 472, 474, 475, 476, 477, 484, 491, 492, 494, + 500, 501, 502, 503, 508, 515, 534, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, 522, 510, 0, 467, 525, 440, 457, + 533, 458, 461, 498, 425, 480, 173, 455, 0, 444, + 420, 451, 421, 442, 469, 117, 473, 439, 512, 483, + 524, 145, 445, 531, 147, 489, 0, 219, 161, 0, + 0, 0, 471, 514, 478, 507, 466, 499, 430, 488, + 526, 456, 496, 527, 57, 0, 0, 85, 86, 87, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, + 493, 521, 453, 495, 497, 419, 490, 0, 423, 426, + 532, 517, 448, 449, 0, 0, 0, 0, 0, 0, + 0, 470, 479, 504, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 0, 487, 0, 0, 0, 427, + 424, 0, 0, 468, 0, 0, 0, 429, 0, 447, + 505, 0, 417, 126, 509, 516, 465, 275, 520, 463, + 462, 523, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 513, 443, 452, 111, + 450, 201, 180, 239, 486, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 422, 0, 220, 242, 257, 105, + 438, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 434, 437, 432, 433, 481, 482, + 528, 529, 530, 506, 428, 0, 435, 436, 0, 511, + 518, 519, 485, 88, 97, 146, 254, 194, 122, 243, + 418, 431, 115, 441, 0, 0, 454, 459, 460, 472, + 474, 475, 476, 477, 484, 491, 492, 494, 500, 501, + 502, 503, 508, 515, 534, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 522, 510, 0, 467, 525, 440, 457, 533, 458, + 461, 498, 425, 480, 173, 455, 0, 444, 420, 451, + 421, 442, 469, 117, 473, 439, 512, 483, 524, 145, + 445, 531, 147, 489, 0, 219, 161, 0, 0, 0, + 471, 514, 478, 507, 466, 499, 430, 488, 526, 456, + 496, 527, 0, 0, 0, 85, 86, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 107, 0, 493, 521, + 453, 495, 497, 419, 490, 0, 423, 426, 532, 517, + 448, 449, 0, 0, 0, 0, 0, 0, 0, 470, + 479, 504, 464, 0, 0, 0, 0, 0, 0, 1265, + 0, 446, 0, 487, 0, 0, 0, 427, 424, 0, + 0, 468, 0, 0, 0, 429, 0, 447, 505, 0, + 417, 126, 509, 516, 465, 275, 520, 463, 462, 523, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 513, 443, 452, 111, 450, 201, + 180, 239, 486, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 422, 0, 220, 242, 257, 105, 438, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, + 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 434, 437, 432, 433, 481, 482, 528, 529, + 530, 506, 428, 0, 435, 436, 0, 511, 518, 519, + 485, 88, 97, 146, 254, 194, 122, 243, 418, 431, + 115, 441, 0, 0, 454, 459, 460, 472, 474, 475, + 476, 477, 484, 491, 492, 494, 500, 501, 502, 503, + 508, 515, 534, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 522, + 510, 0, 467, 525, 440, 457, 533, 458, 461, 498, + 425, 480, 173, 455, 0, 444, 420, 451, 421, 442, + 469, 117, 473, 439, 512, 483, 524, 145, 445, 531, + 147, 489, 0, 219, 161, 0, 0, 0, 471, 514, + 478, 507, 466, 499, 430, 488, 526, 456, 496, 527, + 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 107, 0, 493, 521, 453, 495, + 497, 419, 490, 0, 423, 426, 532, 517, 448, 449, + 0, 0, 0, 0, 0, 0, 0, 470, 479, 504, + 464, 0, 0, 0, 0, 0, 0, 990, 0, 446, + 0, 487, 0, 0, 0, 427, 424, 0, 0, 468, + 0, 0, 0, 429, 0, 447, 505, 0, 417, 126, + 509, 516, 465, 275, 520, 463, 462, 523, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, - 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, - 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 199, 203, 513, 443, 452, 111, 450, 201, 180, 239, + 486, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, - 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, + 422, 0, 220, 242, 257, 105, 438, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, - 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, - 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, - 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 434, 437, 432, 433, 481, 482, 528, 529, 530, 506, + 428, 0, 435, 436, 0, 511, 518, 519, 485, 88, + 97, 146, 254, 194, 122, 243, 418, 431, 115, 441, + 0, 0, 454, 459, 460, 472, 474, 475, 476, 477, + 484, 491, 492, 494, 500, 501, 502, 503, 508, 515, + 534, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, + 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, + 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, + 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, + 221, 224, 230, 231, 240, 247, 250, 522, 510, 0, + 467, 525, 440, 457, 533, 458, 461, 498, 425, 480, + 173, 455, 0, 444, 420, 451, 421, 442, 469, 117, + 473, 439, 512, 483, 524, 145, 445, 531, 147, 489, + 0, 219, 161, 0, 0, 0, 471, 514, 478, 507, + 466, 499, 430, 488, 526, 456, 496, 527, 0, 0, + 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 107, 0, 493, 521, 453, 495, 497, 419, + 490, 0, 423, 426, 532, 517, 448, 449, 0, 0, + 0, 0, 0, 0, 0, 470, 479, 504, 464, 0, + 0, 0, 0, 0, 0, 885, 0, 446, 0, 487, + 0, 0, 0, 427, 424, 0, 0, 468, 0, 0, + 0, 429, 0, 447, 505, 0, 417, 126, 509, 516, + 465, 275, 520, 463, 462, 523, 192, 0, 223, 129, + 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, + 513, 443, 452, 111, 450, 201, 180, 239, 486, 182, + 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, + 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, + 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, + 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, + 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, + 190, 150, 191, 132, 163, 162, 164, 0, 422, 0, + 220, 242, 257, 105, 438, 227, 251, 252, 0, 0, + 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, + 149, 196, 255, 179, 202, 109, 241, 218, 434, 437, + 432, 433, 481, 482, 528, 529, 530, 506, 428, 0, + 435, 436, 0, 511, 518, 519, 485, 88, 97, 146, + 254, 194, 122, 243, 418, 431, 115, 441, 0, 0, + 454, 459, 460, 472, 474, 475, 476, 477, 484, 491, + 492, 494, 500, 501, 502, 503, 508, 515, 534, 90, + 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, + 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, + 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, + 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, + 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, + 230, 231, 240, 247, 250, 522, 510, 0, 467, 525, + 440, 457, 533, 458, 461, 498, 425, 480, 173, 455, + 0, 444, 420, 451, 421, 442, 469, 117, 473, 439, + 512, 483, 524, 145, 445, 531, 147, 489, 0, 219, + 161, 0, 0, 0, 471, 514, 478, 507, 466, 499, + 430, 488, 526, 456, 496, 527, 0, 0, 0, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 0, 493, 521, 453, 495, 497, 419, 490, 0, + 423, 426, 532, 517, 448, 449, 0, 0, 0, 0, + 0, 0, 0, 470, 479, 504, 464, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 0, 487, 0, 0, + 0, 427, 424, 0, 0, 468, 0, 0, 0, 429, + 0, 447, 505, 0, 417, 126, 509, 516, 465, 275, + 520, 463, 462, 523, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 513, 443, + 452, 111, 450, 201, 180, 239, 486, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 422, 0, 220, 242, + 257, 105, 438, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 434, 437, 432, 433, + 481, 482, 528, 529, 530, 506, 428, 0, 435, 436, + 0, 511, 518, 519, 485, 88, 97, 146, 254, 194, + 122, 243, 418, 431, 115, 441, 0, 0, 454, 459, + 460, 472, 474, 475, 476, 477, 484, 491, 492, 494, + 500, 501, 502, 503, 508, 515, 534, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, 522, 510, 0, 467, 525, 440, 457, + 533, 458, 461, 498, 425, 480, 173, 455, 0, 444, + 420, 451, 421, 442, 469, 117, 473, 439, 512, 483, + 524, 145, 445, 531, 147, 489, 0, 219, 161, 0, + 0, 0, 471, 514, 478, 507, 466, 499, 430, 488, + 526, 456, 496, 527, 0, 0, 0, 85, 86, 87, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, + 493, 521, 453, 495, 497, 419, 490, 0, 423, 426, + 532, 517, 448, 449, 0, 0, 0, 0, 0, 0, + 0, 470, 479, 504, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 0, 487, 0, 0, 0, 427, + 424, 0, 0, 468, 0, 0, 0, 429, 0, 447, + 505, 0, 417, 126, 509, 516, 465, 275, 520, 463, + 462, 523, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 513, 443, 452, 111, + 450, 201, 180, 239, 486, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 415, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 422, 0, 220, 242, 257, 105, + 438, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 416, 414, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 434, 437, 432, 433, 481, 482, + 528, 529, 530, 506, 428, 0, 435, 436, 0, 511, + 518, 519, 485, 88, 97, 146, 254, 194, 122, 243, + 418, 431, 115, 441, 0, 0, 454, 459, 460, 472, + 474, 475, 476, 477, 484, 491, 492, 494, 500, 501, + 502, 503, 508, 515, 534, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 522, 510, 0, 467, 525, 440, 457, 533, 458, + 461, 498, 425, 480, 173, 455, 0, 444, 420, 451, + 421, 442, 469, 117, 473, 439, 512, 483, 524, 145, + 445, 531, 147, 489, 0, 219, 161, 0, 0, 0, + 471, 514, 478, 507, 466, 499, 430, 488, 526, 456, + 496, 527, 0, 0, 0, 85, 86, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 107, 0, 493, 521, + 453, 495, 497, 419, 490, 0, 423, 426, 532, 517, + 448, 449, 0, 0, 0, 0, 0, 0, 0, 470, + 479, 504, 464, 0, 0, 0, 0, 0, 0, 0, + 0, 446, 0, 487, 0, 0, 0, 427, 424, 0, + 0, 468, 0, 0, 0, 429, 0, 447, 505, 0, + 417, 126, 509, 516, 465, 275, 520, 463, 462, 523, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 513, 443, 452, 111, 450, 201, + 180, 239, 486, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 738, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 415, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 422, 0, 220, 242, 257, 105, 438, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 416, + 414, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 434, 437, 432, 433, 481, 482, 528, 529, + 530, 506, 428, 0, 435, 436, 0, 511, 518, 519, + 485, 88, 97, 146, 254, 194, 122, 243, 418, 431, + 115, 441, 0, 0, 454, 459, 460, 472, 474, 475, + 476, 477, 484, 491, 492, 494, 500, 501, 502, 503, + 508, 515, 534, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 522, + 510, 0, 467, 525, 440, 457, 533, 458, 461, 498, + 425, 480, 173, 455, 0, 444, 420, 451, 421, 442, + 469, 117, 473, 439, 512, 483, 524, 145, 445, 531, + 147, 489, 0, 219, 161, 0, 0, 0, 471, 514, + 478, 507, 466, 499, 430, 488, 526, 456, 496, 527, + 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 107, 0, 493, 521, 453, 495, + 497, 419, 490, 0, 423, 426, 532, 517, 448, 449, + 0, 0, 0, 0, 0, 0, 0, 470, 479, 504, + 464, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 0, 487, 0, 0, 0, 427, 424, 0, 0, 468, + 0, 0, 0, 429, 0, 447, 505, 0, 417, 126, + 509, 516, 465, 275, 520, 463, 462, 523, 192, 0, + 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, + 199, 203, 513, 443, 452, 111, 450, 201, 180, 239, + 486, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 246, 253, 216, 92, 225, 406, 108, 211, 94, 235, + 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, + 172, 232, 233, 112, 256, 100, 245, 96, 415, 244, + 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, + 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, + 422, 0, 220, 242, 257, 105, 438, 227, 251, 252, + 0, 0, 106, 125, 119, 189, 123, 416, 414, 409, + 408, 142, 149, 196, 255, 179, 202, 109, 241, 218, + 434, 437, 432, 433, 481, 482, 528, 529, 530, 506, + 428, 0, 435, 436, 0, 511, 518, 519, 485, 88, + 97, 146, 254, 194, 122, 243, 418, 431, 115, 441, + 0, 0, 454, 459, 460, 472, 474, 475, 476, 477, + 484, 491, 492, 494, 500, 501, 502, 503, 508, 515, + 534, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, - 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, - 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, + 921, 0, 340, 0, 0, 0, 117, 0, 337, 0, + 0, 0, 145, 922, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, - 0, 0, 0, 996, 0, 57, 0, 0, 85, 86, + 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, - 360, 365, 366, 367, 997, 0, 0, 335, 352, 0, + 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 349, 350, 0, 0, 0, 0, 394, 0, 351, 0, + 349, 350, 331, 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, @@ -1733,9 +1709,9 @@ var yyAct = [...]int{ 247, 250, 173, 0, 0, 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, - 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 0, 608, 85, 86, 87, 359, 358, 361, 362, - 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 997, 0, + 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, + 363, 364, 0, 0, 107, 360, 365, 366, 367, 998, 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, 0, 0, @@ -1767,12 +1743,12 @@ var yyAct = [...]int{ 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, - 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, + 0, 0, 0, 0, 0, 57, 0, 608, 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 349, 350, 331, 0, 0, 0, 394, 0, 351, 0, + 349, 350, 0, 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, @@ -1801,7 +1777,7 @@ var yyAct = [...]int{ 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 0, 0, 85, 86, 87, 359, 935, 361, 362, + 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1835,7 +1811,7 @@ var yyAct = [...]int{ 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, - 87, 359, 932, 361, 362, 363, 364, 0, 0, 107, + 87, 359, 936, 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1864,41 +1840,41 @@ var yyAct = [...]int{ 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, - 247, 250, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 173, 0, 0, 0, 0, 340, - 0, 0, 0, 117, 0, 337, 0, 0, 0, 145, - 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, - 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, - 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, - 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, + 247, 250, 173, 0, 0, 0, 0, 340, 0, 0, + 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, + 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, + 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 0, 0, 85, 86, 87, 359, 933, 361, 362, + 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, + 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, - 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, - 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, - 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, - 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, - 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, - 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, - 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, - 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, - 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, - 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, - 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, - 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, - 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 381, 392, 387, 388, 385, 386, 384, 383, - 382, 395, 373, 374, 375, 376, 378, 0, 389, 390, - 377, 88, 97, 146, 254, 194, 122, 243, 0, 0, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 349, 350, 331, 0, 0, + 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, + 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, + 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, + 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, + 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, + 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, + 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, + 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, + 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, + 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, + 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, + 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, + 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, + 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, - 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, - 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, - 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, - 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, + 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, + 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, + 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, + 221, 224, 230, 231, 240, 247, 250, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, @@ -1932,13 +1908,13 @@ var yyAct = [...]int{ 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, + 231, 240, 247, 250, 173, 0, 0, 0, 0, 340, + 0, 0, 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, - 367, 0, 0, 0, 0, 352, 0, 379, 0, 0, + 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, @@ -1946,7 +1922,7 @@ var yyAct = [...]int{ 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, - 180, 239, 1561, 182, 200, 148, 229, 193, 238, 248, + 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, @@ -1969,7 +1945,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 0, 57, 0, 608, + 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, 0, 0, 0, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, @@ -1979,7 +1955,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, - 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, + 0, 0, 111, 0, 201, 180, 239, 1562, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, @@ -2003,7 +1979,7 @@ var yyAct = [...]int{ 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, + 0, 0, 57, 0, 608, 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, 0, 0, 0, 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2034,17 +2010,17 @@ var yyAct = [...]int{ 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, - 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 145, 0, 380, 147, 0, 0, + 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, + 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, + 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, + 0, 107, 360, 365, 366, 367, 0, 0, 0, 0, + 352, 0, 379, 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, 645, 644, - 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, - 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, + 0, 0, 349, 350, 0, 0, 0, 0, 394, 0, + 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, + 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, @@ -2055,9 +2031,9 @@ var yyAct = [...]int{ 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 97, 146, 254, + 196, 255, 179, 202, 109, 241, 218, 381, 392, 387, + 388, 385, 386, 384, 383, 382, 395, 373, 374, 375, + 376, 378, 0, 389, 390, 377, 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, @@ -2066,16 +2042,16 @@ var yyAct = [...]int{ 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 173, 0, 0, 0, 633, 0, + 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 0, 635, + 0, 0, 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, - 0, 0, 630, 629, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 645, 644, 654, 655, 647, 648, 649, + 650, 651, 652, 653, 646, 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, @@ -2100,18 +2076,18 @@ var yyAct = [...]int{ 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 633, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 0, 0, 0, 0, 0, 77, 0, 0, + 85, 86, 87, 0, 635, 0, 0, 0, 0, 0, + 0, 107, 0, 0, 0, 0, 0, 630, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 631, 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, 0, 126, 79, 80, 0, - 76, 0, 0, 0, 81, 192, 0, 223, 129, 144, + 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, + 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, @@ -2122,7 +2098,7 @@ var yyAct = [...]int{ 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 0, 78, 0, + 196, 255, 179, 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, @@ -2133,18 +2109,18 @@ var yyAct = [...]int{ 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 173, 0, 0, 0, 979, 0, + 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 0, 981, + 0, 0, 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, + 0, 0, 77, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 0, 0, 0, 275, 0, 0, 0, 0, + 0, 126, 79, 80, 0, 76, 0, 0, 0, 81, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, @@ -2156,7 +2132,7 @@ var yyAct = [...]int{ 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 218, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2166,47 +2142,47 @@ var yyAct = [...]int{ 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 26, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, + 0, 0, 0, 980, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, + 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, - 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, - 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, + 85, 86, 87, 0, 982, 0, 0, 0, 0, 0, + 0, 107, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, - 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, - 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, - 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, - 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, - 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, - 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, - 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, - 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, - 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, - 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, - 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, - 142, 149, 196, 255, 179, 202, 109, 241, 218, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, - 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, + 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, + 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, + 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, + 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, + 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, + 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, + 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, + 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, + 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, + 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, + 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, + 196, 255, 179, 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 97, 146, 254, + 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, - 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, - 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, - 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, - 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, - 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, - 979, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, + 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, + 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, + 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, + 231, 240, 247, 250, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 0, 981, 0, 0, 0, 0, 0, 0, 107, 0, + 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2215,7 +2191,7 @@ var yyAct = [...]int{ 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, - 0, 201, 180, 239, 0, 977, 200, 148, 229, 193, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, @@ -2235,12 +2211,12 @@ var yyAct = [...]int{ 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, - 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 250, 173, 0, 0, 0, 980, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 85, 86, 87, 0, 0, 869, 0, 0, - 870, 0, 0, 107, 0, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 982, 0, 0, 0, + 0, 0, 0, 107, 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, @@ -2249,7 +2225,7 @@ var yyAct = [...]int{ 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, - 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 978, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, @@ -2269,11 +2245,11 @@ var yyAct = [...]int{ 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 0, 748, 0, 0, + 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 0, 747, 0, 0, 0, 0, 0, 0, 107, 0, + 0, 0, 870, 0, 0, 871, 0, 0, 107, 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, @@ -2303,10 +2279,10 @@ var yyAct = [...]int{ 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, + 117, 0, 748, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 608, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 747, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2339,7 +2315,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, + 0, 0, 0, 0, 0, 0, 608, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2372,8 +2348,8 @@ var yyAct = [...]int{ 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 85, 86, 87, 0, 981, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2407,7 +2383,7 @@ var yyAct = [...]int{ 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 0, 635, 0, 0, 0, 0, 0, 0, 107, 0, + 0, 982, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2436,11 +2412,11 @@ var yyAct = [...]int{ 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, - 250, 173, 0, 0, 0, 0, 0, 0, 0, 718, + 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 635, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2469,41 +2445,41 @@ var yyAct = [...]int{ 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, - 224, 230, 231, 240, 247, 250, 398, 0, 0, 0, - 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, - 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, - 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 0, 0, 0, 0, 718, 117, 0, 0, 0, 0, + 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 85, 86, 87, 0, 0, 0, - 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 0, 0, 0, 0, 0, 0, 0, 0, 107, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, - 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, - 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, - 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, - 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, - 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, - 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, - 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, - 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, - 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, - 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, - 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, - 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, + 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, + 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, - 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, - 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, - 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, - 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, - 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 398, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2514,7 +2490,7 @@ var yyAct = [...]int{ 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, 126, 0, 270, 0, 275, + 0, 0, 0, 0, 0, 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, @@ -2548,7 +2524,7 @@ var yyAct = [...]int{ 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, - 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, + 126, 0, 270, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, @@ -2570,19 +2546,53 @@ var yyAct = [...]int{ 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, - 215, 221, 224, 230, 231, 240, 247, 250, + 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 0, 0, 0, 275, + 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, + 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, + 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 97, 146, 254, 194, + 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, } var yyPact = [...]int{ - 2811, -1000, -275, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1994, -1000, -273, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 966, 1024, -1000, -1000, -1000, -1000, - -1000, -1000, 321, 11781, 43, 128, -19, 15820, 127, 215, - 16155, -1000, 29, -1000, -1000, -268, -1000, -1000, -1000, -1000, - -1000, -53, -79, -1000, 694, -1000, -1000, -1000, -1000, -1000, - 953, 959, 791, 948, 951, -1000, 8419, 95, 95, 15485, - 7079, -1000, -1000, 320, 16155, 123, 16155, -149, 93, 93, - 93, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1020, 1053, -1000, -1000, -1000, -1000, + -1000, -1000, 349, 11856, -10, 157, -20, 15895, 149, 160, + 16230, -1000, 27, -1000, -1000, -268, -1000, -1000, -1000, -1000, + -1000, -84, -85, -1000, 829, -1000, -1000, -1000, -1000, -1000, + 999, 1017, 832, 1008, 955, -1000, 8494, 104, 104, 15560, + 7154, -1000, -1000, 306, 16230, 155, 16230, -150, 102, 102, + 102, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2599,23 +2609,23 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 126, 16155, - 524, 524, 202, -1000, 16155, 92, 524, 92, 92, 92, - 16155, -1000, 184, -1000, -1000, -1000, 16155, 524, 898, 316, - 82, 4643, -1000, 185, -1000, 4643, 37, 4643, -44, 986, - 38, -31, -1000, 4643, -1000, -1000, -1000, -1000, -1000, -1000, - 115, 330, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 482, 926, 9771, 9771, 966, -1000, 694, -1000, -1000, -1000, - 881, 8419, -1000, -1000, 945, -1000, -1000, -1000, -1000, 360, - 997, -1000, 11446, 183, -1000, 9771, 1664, 548, -1000, -1000, - 548, -1000, -1000, 166, -1000, -1000, 10776, 10776, 10776, 10776, - 10776, 10776, 10776, 10776, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 548, -1000, - 9436, 548, 548, 548, 548, 548, 548, 548, 548, 9771, - 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 15143, 14138, 16155, 840, - 801, -1000, -1000, 182, 708, 6731, -57, -1000, -1000, -1000, - 327, 13468, -1000, -1000, -1000, 895, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 146, 16230, + 572, 572, 289, -1000, 16230, 96, 572, 96, 96, 96, + 16230, -1000, 199, -1000, -1000, -1000, 16230, 572, 953, 356, + 82, 4718, -1000, 233, -1000, 4718, 36, 4718, -43, 1029, + 37, -31, -1000, 4718, -1000, -1000, -1000, -1000, -1000, -1000, + 154, 325, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 499, 941, 9846, 9846, 1020, -1000, 829, -1000, -1000, -1000, + 913, 8494, -1000, -1000, 937, -1000, -1000, -1000, -1000, 414, + 1039, -1000, 11521, 198, -1000, 9846, 1666, 775, -1000, -1000, + 775, -1000, -1000, 181, -1000, -1000, 10851, 10851, 10851, 10851, + 10851, 10851, 10851, 10851, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 775, -1000, + 9511, 775, 775, 775, 775, 775, 775, 775, 775, 9846, + 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, + 775, 775, 775, 775, 775, 775, 15218, 14213, 16230, 845, + 800, -1000, -1000, 197, 762, 6806, -60, -1000, -1000, -1000, + 316, 13543, -1000, -1000, -1000, 940, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2627,135 +2637,135 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 690, 16155, -1000, 2569, -1000, - 524, 4643, 106, 524, 324, 524, 16155, 16155, 4643, 4643, - 4643, 45, 78, 74, 16155, 706, 101, 16155, 936, 842, - 16155, 524, 524, -1000, 6035, -1000, 4643, 316, -1000, 475, - 9771, 4643, 4643, 4643, 16155, 4643, 4643, -1000, -1000, -1000, - 309, -1000, -1000, -1000, -1000, 4643, 4643, -1000, 996, 300, - -1000, -1000, -1000, -1000, 9771, 244, -1000, 839, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 723, 16230, -1000, 2535, -1000, + 572, 4718, 134, 572, 367, 572, 16230, 16230, 4718, 4718, + 4718, 43, 77, 73, 16230, 756, 108, 16230, 976, 842, + 16230, 572, 572, -1000, 6110, -1000, 4718, 356, -1000, 491, + 9846, 4718, 4718, 4718, 16230, 4718, 4718, -1000, -1000, -1000, + 344, -1000, -1000, -1000, -1000, 4718, 4718, -1000, 1038, 334, + -1000, -1000, -1000, -1000, 9846, 262, -1000, 839, -1000, -1000, -1000, -1000, -1000, -1000, -125, -1000, -1000, -1000, -1000, -1000, - 1019, 219, 503, 177, 702, -1000, 477, 953, 482, 945, - 13133, 765, -1000, 945, -1000, -1000, -1000, 16155, -1000, 9771, - 9771, 439, -1000, 14808, -1000, -1000, 5687, 250, 10776, 451, - 273, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, 10776, - 10776, 10776, 10776, 10776, 10776, 10776, 570, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 524, -1000, 694, 651, 651, - 193, 193, 193, 193, 193, 193, 193, 11111, 7414, 482, - 685, 263, 9436, 8419, 8419, 9771, 9771, 9089, 8754, 8419, - 908, 325, 263, 16155, -1000, -1000, 10441, -1000, -1000, -1000, - -1000, -1000, 482, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 16155, 16155, 8419, 8419, 8419, 8419, 8419, 58, 16155, -1000, - 741, 788, -1000, -1000, -1000, 930, 12463, 12798, 58, 608, - 14138, 16155, -1000, -1000, 14138, 16155, 5339, 6383, -57, -1000, - 612, -1000, -111, -122, 7749, 192, -1000, -1000, -1000, -1000, - 4295, 372, 501, 442, -33, -1000, -1000, -1000, 711, -1000, - 711, 711, 711, 711, -1, -1, -1, -1, -1000, -1000, - -1000, -1000, -1000, 784, 746, -1000, 711, 711, 711, -1000, + 1048, 253, 361, 196, 741, -1000, 599, 999, 499, 937, + 13208, 752, -1000, 937, -1000, -1000, -1000, 16230, -1000, 9846, + 9846, 516, -1000, 14883, -1000, -1000, 5762, 269, 10851, 477, + 327, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, + 10851, 10851, 10851, 10851, 10851, 10851, 566, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 572, -1000, 829, 589, 589, + 217, 217, 217, 217, 217, 217, 217, 11186, 7489, 499, + 716, 380, 9511, 8494, 8494, 9846, 9846, 9164, 8829, 8494, + 935, 337, 380, 16230, -1000, -1000, 10516, -1000, -1000, -1000, + -1000, -1000, 499, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 16230, 16230, 8494, 8494, 8494, 8494, 8494, 59, 16230, -1000, + 685, 961, -1000, -1000, -1000, 992, 12538, 12873, 59, 742, + 14213, 16230, -1000, -1000, 14213, 16230, 5414, 6458, -60, -1000, + 637, -1000, -120, -109, 7824, 208, -1000, -1000, -1000, -1000, + 4370, 373, 525, 374, -54, -1000, -1000, -1000, 778, -1000, + 778, 778, 778, 778, -7, -7, -7, -7, -1000, -1000, + -1000, -1000, -1000, 798, 796, -1000, 778, 778, 778, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 743, 743, 743, - 722, 722, 802, -1000, 16155, 4643, 933, 4643, -1000, 75, - -1000, -1000, -1000, 16155, 16155, 16155, 16155, 16155, 149, 16155, - 16155, 701, -1000, 16155, 4643, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 263, -1000, -1000, -1000, -1000, -1000, -1000, - 16155, -1000, -1000, -1000, -1000, 16155, 316, 16155, 16155, 263, - -1000, 461, 16155, -1000, -1000, -1000, -1000, 877, 9771, 9771, - 6035, 9771, -1000, -1000, -1000, 926, -1000, 963, -1000, 887, - 885, 979, 8419, 14138, 945, -1000, 250, 281, -1000, -1000, - 423, -1000, -1000, -1000, -1000, 176, 548, -1000, 1771, -1000, - -1000, -1000, -1000, 451, 10776, 10776, 10776, 357, 1771, 2235, - 1127, 428, 193, 547, 547, 201, 201, 201, 201, 201, - 833, 833, -1000, -1000, -1000, 482, -1000, -1000, -1000, 482, - 8419, 8419, 698, -1000, 9771, -1000, 482, 667, 667, 318, - 308, 274, 991, 667, 248, 988, 667, 667, 8419, -1000, - -1000, 338, -1000, 9771, 482, -1000, 173, -1000, 511, 624, - 614, 667, 482, 482, 667, 667, 704, 548, -1000, 16155, - 14138, 14138, 14138, 14138, 14138, -1000, 865, 855, -1000, 858, - 857, 864, 16155, -1000, 672, 12463, 170, 548, -1000, 14473, - -1000, -1000, 979, 14138, 569, -1000, 569, -1000, 171, -1000, - -1000, 612, -57, -64, -1000, -1000, -1000, -1000, 263, -1000, - 601, 599, 3947, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 725, 524, -1000, 922, 208, 236, 524, 921, -1000, -1000, - -1000, 901, -1000, 332, -61, -1000, -1000, 421, -1, -1, - -1000, -1000, 192, 893, 192, 192, 192, 460, 460, -1000, - -1000, -1000, -1000, 412, -1000, -1000, -1000, 410, -1000, 838, - 16155, 4643, -1000, -1000, -1000, -1000, 291, 291, 217, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 791, 791, 791, + 783, 783, 815, -1000, 16230, 4718, 972, 4718, -1000, 75, + -1000, -1000, -1000, 16230, 16230, 16230, 16230, 16230, 168, 16230, + 16230, 698, -1000, 16230, 4718, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 380, -1000, -1000, -1000, -1000, -1000, -1000, + 16230, -1000, -1000, -1000, -1000, 16230, 356, 16230, 16230, 380, + -1000, 480, 16230, -1000, -1000, -1000, -1000, -1000, 909, 9846, + 9846, 6110, 9846, -1000, -1000, -1000, 941, -1000, 1015, -1000, + 918, 917, 1028, 8494, 14213, 937, -1000, 269, 409, -1000, + -1000, 386, -1000, -1000, -1000, -1000, 195, 775, -1000, 1778, + -1000, -1000, -1000, -1000, 477, 10851, 10851, 10851, 148, 1778, + 1001, 1082, 1211, 217, 392, 392, 231, 231, 231, 231, + 231, 1264, 1264, -1000, -1000, -1000, 499, -1000, -1000, -1000, + 499, 8494, 8494, 693, -1000, 9846, -1000, 499, 701, 701, + 463, 371, 298, 1037, 701, 286, 1032, 701, 701, 8494, + -1000, -1000, 357, -1000, 9846, 499, -1000, 192, -1000, 424, + 676, 651, 701, 499, 499, 701, 701, 893, 775, -1000, + 16230, 14213, 14213, 14213, 14213, 14213, -1000, 872, 871, -1000, + 864, 863, 873, 16230, -1000, 703, 12538, 173, 775, -1000, + 14548, -1000, -1000, 1028, 14213, 590, -1000, 590, -1000, 190, + -1000, -1000, 637, -60, -64, -1000, -1000, -1000, -1000, 380, + -1000, 604, 634, 4022, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 786, 572, -1000, 962, 247, 242, 572, 960, -1000, + -1000, -1000, 938, -1000, 379, -76, -1000, -1000, 449, -7, + -7, -1000, -1000, 208, 927, 208, 208, 208, 475, 475, + -1000, -1000, -1000, -1000, 447, -1000, -1000, -1000, 444, -1000, + 838, 16230, 4718, -1000, -1000, -1000, -1000, 292, 292, 246, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 57, 719, -1000, -1000, -1000, -1000, 24, 44, 97, -1000, - 4643, -1000, 300, 300, -1000, -1000, -1000, -1000, -1000, 875, - 263, 263, 156, -1000, -1000, 16155, -1000, -1000, -1000, -1000, - 976, 9771, -1000, 590, -1000, -1000, -1000, -1000, 4991, 8419, - -1000, 357, 1771, 1901, -1000, 10776, 10776, -1000, -1000, 667, - 667, 263, -1000, -1000, -1000, 61, 570, 61, 10776, 10776, - -1000, 10776, 10776, -1000, -162, 718, 264, -1000, 9771, 310, - -1000, 6035, -1000, 10776, 10776, -1000, -1000, -1000, -1000, -1000, - 836, 16155, 548, -1000, 12463, 16155, 620, -1000, 322, 788, - 800, 823, 834, -1000, -1000, -1000, -1000, 843, -1000, 827, - -1000, -1000, -1000, -1000, -1000, 119, 110, 109, 16155, -1000, - 966, 569, -1000, -1000, 211, -1000, -1000, -123, -105, -1000, - -1000, -1000, 4295, -1000, 4295, 16155, 73, -1000, 524, 524, - -1000, -1000, -1000, 724, 821, 10776, -1000, -1000, -1000, 494, - 192, 192, -1000, 247, -1000, -1000, -1000, 663, -1000, 650, - 550, 647, 16155, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 57, 803, -1000, -1000, -1000, -1000, -4, 42, 106, + -1000, 4718, -1000, 334, 334, -1000, -1000, -1000, -1000, -1000, + 903, 380, 380, 179, -1000, -1000, 16230, -1000, -1000, -1000, + -1000, 1018, 9846, -1000, 617, -1000, -1000, -1000, -1000, 5066, + 8494, -1000, 148, 1778, 834, -1000, 10851, 10851, -1000, -1000, + 701, 701, 380, -1000, -1000, -1000, 145, 566, 145, 10851, + 10851, -1000, 10851, 10851, -1000, -164, 643, 339, -1000, 9846, + 476, -1000, 6110, -1000, 10851, 10851, -1000, -1000, -1000, -1000, + -1000, 836, 16230, 775, -1000, 12538, 16230, 766, -1000, 297, + 961, 825, 835, 721, -1000, -1000, -1000, -1000, 857, -1000, + 853, -1000, -1000, -1000, -1000, -1000, 152, 136, 130, 16230, + -1000, 1020, 590, -1000, -1000, 182, -1000, -1000, -129, -114, + -1000, -1000, -1000, 4370, -1000, 4370, 16230, 74, -1000, 572, + 572, -1000, -1000, -1000, 784, 833, 10851, -1000, -1000, -1000, + 508, 208, 208, -1000, 265, -1000, -1000, -1000, 690, -1000, + 672, 614, 667, 16230, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 16155, -1000, -1000, -1000, -1000, -1000, 16155, -169, - 524, 16155, 16155, 16155, 16155, -1000, 316, 316, -1000, 6035, - -1000, 969, 955, 263, -1000, -1000, 482, -1000, 10776, 1771, - 1771, -1000, -1000, 482, 711, 711, -1000, 711, 722, -1000, - 711, 19, 711, 15, 482, 482, 1841, 1686, 1570, 586, - 548, -156, -1000, 263, 9771, -1000, 1468, 538, -1000, 924, - 514, 521, -1000, -1000, 8084, 482, 645, 147, 641, -1000, - 966, 16155, 9771, -1000, -1000, 9771, 712, -1000, 9771, -1000, - -1000, -1000, 548, 548, 548, 641, 953, -1000, -1000, -1000, - -1000, 3947, -1000, 622, -1000, 711, -1000, -1000, -1000, 16155, - -28, 1018, 1771, -1000, -1000, -1000, -1000, -1000, -1, 455, - -1, 389, -1000, 388, 4643, -1000, -1000, -1000, -1000, 929, - -1000, 6035, -1000, -1000, 710, 787, -1000, -1000, -1000, -1000, - -1000, 9771, 9771, -1000, 1771, -1000, -1000, 130, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 10776, 10776, 10776, 10776, - 10776, 953, 447, 263, 10776, 10776, 920, -1000, 548, -1000, - -1000, 817, 16155, 16155, -1000, 16155, 953, -1000, 263, 263, - 16155, 263, 13803, 16155, 16155, 12116, -1000, 164, 16155, -1000, - 617, -1000, 221, -1000, -86, 192, -1000, 192, 487, 485, - -1000, 548, 542, -1000, 271, 16155, 16155, 263, 537, -1000, - -1000, 511, 511, 511, 511, 50, 482, -1000, 511, 511, - 1017, -1000, 548, -1000, 694, 142, -1000, -1000, -1000, 610, - 566, -1000, 566, 566, 170, 164, -1000, 524, 262, 436, - -1000, 70, 16155, 351, 918, -1000, 903, -1000, -1000, -1000, - -1000, -1000, 53, 6035, 4295, 544, -1000, -1000, -1000, -1000, - -1000, 482, 51, -173, -1000, -1000, -1000, 16155, 521, 482, - 16155, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 374, -1000, - -1000, 16155, -1000, -1000, 435, -1000, -1000, 531, -1000, 16155, - -1000, -1000, 719, -1000, 874, -166, -178, 509, -1000, -1000, - -1000, 705, -1000, -1000, 53, 884, -169, -1000, 872, -1000, - 16155, -1000, 54, -1000, -171, 499, 46, -175, 816, 548, - -179, 810, -1000, 995, 10106, -1000, -1000, 1001, 190, 190, - 511, 482, -1000, -1000, -1000, 80, 414, -1000, -1000, -1000, - -1000, -1000, -1000, + -1000, -1000, -1000, 16230, -1000, -1000, -1000, -1000, -1000, 16230, + -169, 572, 16230, 16230, 16230, 16230, -1000, 356, 356, -1000, + 6110, -1000, 1025, 1016, 380, -1000, -1000, 499, -1000, 10851, + 1778, 1778, -1000, -1000, 499, 778, 778, -1000, 778, 783, + -1000, 778, 15, 778, 12, 499, 499, 1684, 1613, 1572, + 582, 775, -158, -1000, 380, 9846, -1000, 538, 511, -1000, + 964, 550, 539, -1000, -1000, 8159, 499, 665, 177, 663, + -1000, 1020, 16230, 9846, -1000, -1000, 9846, 780, -1000, 9846, + -1000, -1000, -1000, 775, 775, 775, 663, 999, -1000, -1000, + -1000, -1000, 4022, -1000, 656, -1000, 778, -1000, -1000, -1000, + 16230, -40, 1047, 1778, -1000, -1000, -1000, -1000, -1000, -7, + 473, -7, 441, -1000, 421, 4718, -1000, -1000, -1000, -1000, + 967, -1000, 6110, -1000, -1000, 777, 809, -1000, -1000, -1000, + -1000, -1000, 9846, 9846, -1000, 1778, -1000, -1000, 129, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 10851, 10851, 10851, + 10851, 10851, 999, 471, 380, 10851, 10851, 959, -1000, 775, + -1000, -1000, 816, 16230, 16230, -1000, 16230, 999, -1000, 380, + 380, 16230, 380, 13878, 16230, 16230, 12191, -1000, 169, 16230, + -1000, 649, -1000, 214, -1000, -80, 208, -1000, 208, 506, + 502, -1000, 775, 611, -1000, 294, 16230, 16230, 380, 593, + -1000, -1000, 424, 424, 424, 424, 50, 499, -1000, 424, + 424, 1046, -1000, 775, -1000, 829, 174, -1000, -1000, -1000, + 647, 645, -1000, 645, 645, 173, 169, -1000, 572, 283, + 456, -1000, 71, 16230, 402, 958, -1000, 956, -1000, -1000, + -1000, -1000, -1000, 56, 6110, 4370, 640, -1000, -1000, -1000, + -1000, -1000, 499, 51, -174, -1000, -1000, -1000, 16230, 539, + 499, 16230, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 420, + -1000, -1000, 16230, -1000, -1000, 451, -1000, -1000, 523, -1000, + 16230, -1000, -1000, 803, -1000, 887, -167, -177, 534, -1000, + -1000, -1000, 776, -1000, -1000, 56, 916, -169, -1000, 884, + -1000, 16230, -1000, 49, -1000, -171, 513, 47, -175, 820, + 775, -179, 817, -1000, 1036, 10181, -1000, -1000, 1042, 193, + 193, 424, 499, -1000, -1000, -1000, 81, 440, -1000, -1000, + -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1240, 43, 564, 1239, 1220, 1219, 1218, 1217, 89, - 88, 87, 1215, 1213, 1212, 1211, 1208, 1205, 1203, 1202, - 1197, 1192, 1191, 1190, 1189, 1188, 1187, 1186, 1184, 100, - 1183, 1182, 1180, 1178, 1176, 1174, 1173, 1170, 1168, 46, - 56, 42, 59, 1161, 58, 1366, 1151, 69, 57, 60, - 1150, 31, 1149, 1147, 67, 1146, 1145, 52, 1144, 1142, - 45, 1140, 73, 1139, 12, 28, 1138, 1137, 1136, 1135, - 84, 140, 1134, 1133, 15, 1132, 1129, 86, 1128, 53, - 20, 14, 19, 18, 1126, 1316, 7, 1125, 55, 1124, - 1123, 1122, 1121, 26, 1118, 64, 1117, 54, 61, 1116, - 13, 78, 30, 21, 5, 1115, 1114, 17, 65, 50, - 62, 1113, 1110, 522, 1108, 1107, 47, 1106, 1105, 1104, - 29, 1103, 93, 423, 1100, 1095, 1093, 1091, 33, 883, - 1889, 11, 72, 1090, 1089, 1088, 2551, 39, 51, 23, - 1086, 63, 525, 37, 1085, 1084, 35, 1083, 1082, 1080, - 1079, 1078, 1077, 1073, 66, 1072, 1071, 1070, 137, 25, - 1069, 1068, 68, 24, 1066, 1063, 1059, 48, 79, 1057, - 1056, 49, 1055, 1054, 22, 1050, 1049, 1048, 1047, 1046, - 32, 6, 1045, 16, 1044, 10, 1042, 27, 1041, 4, - 1040, 8, 1038, 3, 0, 1034, 9, 36, 2, 1033, - 1, 1032, 1030, 1523, 709, 76, 1006, 95, + 0, 1299, 43, 599, 1298, 1297, 1295, 1294, 1293, 88, + 87, 86, 1292, 1284, 1280, 1279, 1278, 1277, 1276, 1275, + 1268, 1267, 1266, 1265, 1263, 1262, 1260, 1259, 1251, 96, + 1248, 1247, 1246, 1242, 1241, 1240, 1236, 1235, 1234, 39, + 193, 42, 56, 1233, 53, 1243, 1232, 69, 57, 61, + 1231, 31, 1230, 1229, 72, 1228, 1223, 50, 1221, 1219, + 45, 1218, 67, 1216, 12, 81, 1214, 1213, 1212, 1211, + 76, 140, 1209, 1208, 15, 1206, 1203, 79, 1198, 52, + 20, 14, 19, 18, 1192, 605, 7, 1191, 51, 1179, + 1177, 1174, 1171, 22, 1169, 58, 1163, 54, 59, 1162, + 13, 78, 30, 21, 5, 1151, 1150, 17, 64, 48, + 62, 1148, 1147, 510, 1146, 1145, 46, 1143, 1141, 1140, + 29, 1139, 89, 504, 1138, 1137, 1136, 1135, 33, 884, + 1891, 11, 65, 1134, 1132, 1129, 2625, 32, 49, 23, + 1127, 63, 167, 37, 1126, 1125, 35, 1124, 1123, 1122, + 1119, 1118, 1117, 1114, 66, 1113, 1111, 1096, 137, 25, + 1094, 1093, 68, 24, 1092, 1091, 1090, 47, 60, 1089, + 1088, 55, 1086, 1085, 26, 1084, 1083, 1081, 1080, 1079, + 28, 6, 1077, 16, 1076, 10, 1075, 27, 1074, 4, + 1073, 8, 1070, 3, 0, 1068, 9, 36, 2, 1066, + 1, 1064, 1060, 1525, 710, 73, 1047, 92, } var yyR1 = [...]int{ @@ -2791,43 +2801,43 @@ var yyR1 = [...]int{ 23, 23, 23, 23, 23, 23, 23, 23, 117, 117, 119, 119, 115, 115, 118, 118, 116, 116, 116, 120, 120, 120, 121, 121, 145, 145, 145, 24, 24, 26, - 26, 27, 28, 33, 33, 33, 33, 34, 34, 34, - 7, 7, 7, 7, 6, 25, 25, 25, 25, 25, - 25, 25, 19, 206, 29, 30, 30, 31, 31, 31, - 36, 36, 36, 35, 35, 35, 41, 41, 43, 43, - 43, 43, 43, 44, 44, 44, 44, 44, 44, 40, - 40, 42, 42, 42, 42, 133, 133, 133, 132, 132, - 46, 46, 47, 47, 48, 48, 49, 49, 49, 49, - 63, 63, 100, 100, 102, 102, 50, 50, 50, 50, - 51, 51, 52, 52, 53, 53, 140, 140, 139, 139, - 139, 138, 138, 56, 56, 56, 58, 57, 57, 57, - 57, 59, 59, 61, 61, 60, 60, 62, 64, 64, - 64, 64, 64, 65, 65, 45, 45, 45, 45, 45, - 45, 45, 114, 114, 67, 67, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 78, 78, 78, 78, - 78, 78, 68, 68, 68, 68, 68, 68, 68, 39, - 39, 79, 79, 79, 85, 80, 80, 71, 71, 71, + 26, 27, 28, 33, 33, 33, 33, 33, 34, 34, + 34, 7, 7, 7, 7, 6, 25, 25, 25, 25, + 25, 25, 25, 19, 206, 29, 30, 30, 31, 31, + 31, 36, 36, 36, 35, 35, 35, 41, 41, 43, + 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, + 40, 40, 42, 42, 42, 42, 133, 133, 133, 132, + 132, 46, 46, 47, 47, 48, 48, 49, 49, 49, + 49, 63, 63, 100, 100, 102, 102, 50, 50, 50, + 50, 51, 51, 52, 52, 53, 53, 140, 140, 139, + 139, 139, 138, 138, 56, 56, 56, 58, 57, 57, + 57, 57, 59, 59, 61, 61, 60, 60, 62, 64, + 64, 64, 64, 64, 65, 65, 45, 45, 45, 45, + 45, 45, 45, 114, 114, 67, 67, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 78, 78, 78, + 78, 78, 78, 68, 68, 68, 68, 68, 68, 68, + 39, 39, 79, 79, 79, 85, 80, 80, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 75, - 75, 75, 75, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, + 75, 75, 75, 75, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 207, 207, 77, 76, 76, 76, 76, 76, - 76, 76, 37, 37, 37, 37, 37, 143, 143, 146, + 74, 74, 74, 207, 207, 77, 76, 76, 76, 76, + 76, 76, 76, 37, 37, 37, 37, 37, 143, 143, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 89, 89, 38, 38, 87, 87, 88, 90, - 90, 86, 86, 86, 70, 70, 70, 70, 70, 70, - 70, 70, 72, 72, 72, 91, 91, 92, 92, 93, - 93, 94, 94, 95, 96, 96, 96, 97, 97, 97, - 97, 98, 98, 98, 69, 69, 69, 69, 69, 69, - 99, 99, 99, 99, 103, 103, 81, 81, 83, 83, - 82, 84, 104, 104, 107, 105, 105, 105, 108, 108, - 108, 108, 106, 106, 106, 135, 135, 135, 112, 112, - 122, 122, 123, 123, 113, 113, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 125, 125, 125, 126, - 126, 127, 127, 127, 134, 134, 130, 130, 131, 131, - 136, 136, 137, 137, 128, 128, 128, 128, 128, 128, + 146, 146, 146, 89, 89, 38, 38, 87, 87, 88, + 90, 90, 86, 86, 86, 70, 70, 70, 70, 70, + 70, 70, 70, 72, 72, 72, 91, 91, 92, 92, + 93, 93, 94, 94, 95, 96, 96, 96, 97, 97, + 97, 97, 98, 98, 98, 69, 69, 69, 69, 69, + 69, 99, 99, 99, 99, 103, 103, 81, 81, 83, + 83, 82, 84, 104, 104, 107, 105, 105, 105, 108, + 108, 108, 108, 106, 106, 106, 135, 135, 135, 112, + 112, 122, 122, 123, 123, 113, 113, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, + 126, 126, 127, 127, 127, 134, 134, 130, 130, 131, + 131, 136, 136, 137, 137, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, @@ -2839,7 +2849,7 @@ var yyR1 = [...]int{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, + 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, @@ -2856,7 +2866,7 @@ var yyR1 = [...]int{ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 203, 204, 141, 142, 142, 142, + 129, 129, 129, 129, 203, 204, 141, 142, 142, 142, } var yyR2 = [...]int{ @@ -2892,42 +2902,42 @@ var yyR2 = [...]int{ 2, 4, 4, 3, 3, 5, 2, 3, 1, 1, 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, 0, 1, 1, 2, 1, 1, - 2, 1, 1, 0, 3, 3, 3, 1, 1, 1, - 1, 1, 1, 1, 3, 2, 2, 2, 2, 2, - 3, 3, 2, 0, 2, 0, 2, 1, 2, 2, - 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, - 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, - 3, 1, 2, 3, 5, 0, 1, 2, 1, 1, - 0, 2, 1, 3, 1, 1, 1, 3, 1, 3, - 3, 7, 1, 3, 1, 3, 4, 4, 4, 3, - 2, 4, 0, 1, 0, 2, 0, 1, 0, 1, - 2, 1, 1, 1, 2, 2, 1, 2, 3, 2, - 3, 2, 2, 2, 1, 1, 3, 3, 0, 5, - 4, 5, 5, 0, 2, 1, 3, 3, 2, 3, - 1, 2, 0, 3, 1, 1, 3, 3, 4, 4, - 5, 3, 4, 5, 6, 2, 1, 2, 1, 2, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 1, 1, 1, 3, 1, 3, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, - 2, 2, 2, 2, 3, 1, 1, 1, 1, 4, - 5, 5, 6, 4, 4, 6, 6, 6, 8, 8, - 8, 8, 9, 8, 5, 4, 2, 2, 2, 2, + 2, 1, 1, 0, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, + 2, 3, 3, 2, 0, 2, 0, 2, 1, 2, + 2, 0, 1, 1, 0, 1, 1, 0, 1, 0, + 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, + 1, 3, 1, 2, 3, 5, 0, 1, 2, 1, + 1, 0, 2, 1, 3, 1, 1, 1, 3, 1, + 3, 3, 7, 1, 3, 1, 3, 4, 4, 4, + 3, 2, 4, 0, 1, 0, 2, 0, 1, 0, + 1, 2, 1, 1, 1, 2, 2, 1, 2, 3, + 2, 3, 2, 2, 2, 1, 1, 3, 3, 0, + 5, 4, 5, 5, 0, 2, 1, 3, 3, 2, + 3, 1, 2, 0, 3, 1, 1, 3, 3, 4, + 4, 5, 3, 4, 5, 6, 2, 1, 2, 1, + 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 1, 1, 1, 3, 1, 3, 1, 1, + 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, + 4, 5, 5, 6, 4, 4, 6, 6, 6, 8, + 8, 8, 8, 9, 8, 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 8, 8, 0, 2, 3, 4, 4, 4, 4, 4, - 4, 4, 0, 3, 4, 7, 3, 1, 1, 2, - 3, 3, 1, 2, 2, 1, 2, 1, 2, 2, - 1, 2, 0, 1, 0, 2, 1, 2, 4, 0, - 2, 1, 3, 5, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 0, 3, 0, 2, 0, - 3, 1, 3, 2, 0, 1, 1, 0, 2, 4, - 4, 0, 2, 4, 2, 1, 3, 5, 4, 6, - 1, 3, 3, 5, 0, 5, 1, 3, 1, 2, - 3, 1, 1, 3, 3, 1, 2, 3, 3, 3, - 3, 3, 1, 2, 1, 1, 1, 1, 1, 1, - 0, 2, 0, 3, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, - 1, 0, 1, 1, 0, 2, 1, 1, 1, 1, + 2, 8, 8, 0, 2, 3, 4, 4, 4, 4, + 4, 4, 4, 0, 3, 4, 7, 3, 1, 1, + 2, 3, 3, 1, 2, 2, 1, 2, 1, 2, + 2, 1, 2, 0, 1, 0, 2, 1, 2, 4, + 0, 2, 1, 3, 5, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 0, 3, 0, 2, + 0, 3, 1, 3, 2, 0, 1, 1, 0, 2, + 4, 4, 0, 2, 4, 2, 1, 3, 5, 4, + 6, 1, 3, 3, 5, 0, 5, 1, 3, 1, + 2, 3, 1, 1, 3, 3, 1, 2, 3, 3, + 3, 3, 3, 1, 2, 1, 1, 1, 1, 1, + 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 0, 1, 1, 0, 2, 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, 1, 1, 1, 1, @@ -2957,7 +2967,7 @@ var yyR2 = [...]int{ 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, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ @@ -2966,7 +2976,7 @@ var yyChk = [...]int{ -28, -6, -25, -19, -3, -4, 6, 7, -32, 9, 10, 30, -20, 119, 120, 122, 121, 155, 123, 148, 52, 169, 170, 172, 173, -34, 25, 149, 150, 153, - 154, 31, 32, 125, -203, 8, 255, 56, -202, 356, + 154, 31, 32, 125, -203, 8, 255, 56, -202, 357, -93, 15, -31, 5, -29, -206, -29, -29, -29, -29, -29, -176, -178, 56, 94, -127, 129, 76, 247, 126, 127, 133, -130, -194, -129, 59, 60, 61, 265, 141, @@ -3046,240 +3056,240 @@ var yyChk = [...]int{ 130, -54, 23, 54, -60, -194, -194, -137, -136, -128, -142, -120, 63, -45, -142, -142, -142, -60, -142, -142, -173, 11, 96, -142, -142, 11, -116, 11, 96, -45, - -121, 94, 54, 205, 354, 355, 9, 96, 57, 18, - 116, 57, -96, 24, 25, -97, -204, -72, -130, 64, - 67, -46, 57, 11, -44, -60, -45, -45, -78, 72, - 78, 73, 74, -132, 103, -137, -131, -128, -71, -79, - -82, -85, 68, 96, 94, 95, 80, -71, -71, -71, + -121, 94, 54, 205, 354, 355, 356, 9, 96, 57, + 18, 116, 57, -96, 24, 25, -97, -204, -72, -130, + 64, 67, -46, 57, 11, -44, -60, -45, -45, -78, + 72, 78, 73, 74, -132, 103, -137, -131, -128, -71, + -79, -82, -85, 68, 96, 94, 95, 80, -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, - -71, -71, -143, -194, 63, -194, -70, -70, -130, -41, - 21, 34, -40, -204, 57, -204, -2, -40, -40, -45, - -45, -86, 63, -40, -86, 63, -40, -40, -35, 21, - 34, -87, -88, 82, -86, -130, -136, -204, -71, -130, - -130, -40, -41, -41, -40, -40, -101, 157, -60, 30, - 57, -56, -58, -57, -59, 44, 48, 50, 45, 46, - 47, 51, -140, 22, -47, -203, -139, 157, -138, 22, - -136, 63, -101, 55, -47, -60, -47, -62, -136, 103, - -108, -110, 57, 238, 240, 241, 54, 75, -45, -159, - 111, -179, -180, -181, -131, 63, 64, -168, -169, -170, - -182, 143, -187, 134, 136, 133, -171, 144, 128, 28, - 58, -164, 72, 78, -160, 219, -154, 56, -154, -154, - -154, -154, -158, 194, -158, -158, -158, 56, 56, -154, - -154, -154, -162, 56, -162, -162, -163, 56, -163, -134, - 55, -60, -142, 23, -142, -124, 124, 121, 122, -190, - 120, 216, 194, 70, 29, 15, 256, 157, 271, -194, - 158, -60, -60, -60, -60, -60, 124, 121, -60, -60, - -60, -142, -60, -60, -120, -136, -136, 63, -60, 39, - -45, -45, -137, -95, -98, -112, 19, 11, 35, 35, - -65, 12, -42, -47, -44, 72, 73, 74, 116, -203, - -79, -71, -71, -71, -39, 152, 77, -204, -204, -40, - -40, -45, -204, -204, -204, 57, 55, 22, 11, 11, - -204, 11, 11, -204, -204, -40, -90, -88, 84, -45, - -204, 116, -204, 57, 57, -204, -204, -204, -204, -204, - -69, 30, 35, -2, -203, -203, -104, -107, -86, -48, - -49, -49, -48, -49, 44, 44, 44, 49, 44, 49, - 44, -57, -136, -204, -64, 52, 131, 53, -203, -138, - -65, -47, -65, -65, 116, -109, -111, 242, 239, 245, - -194, 63, 57, -181, 86, 56, -194, 28, -171, -171, - -174, -194, -174, 28, -156, 29, 72, -161, 220, 64, - -158, -158, -159, 30, -159, -159, -159, -167, 63, -167, - 64, 64, 54, -130, -142, -141, -197, 139, 135, 143, - 144, 137, 59, 60, 61, 128, 28, 134, 136, 157, - 133, -197, -125, -126, 130, 22, 128, 28, 157, -196, - 55, 163, 216, 163, 130, -142, -116, -116, 40, 116, - -60, -91, 13, -45, 103, -131, -41, -39, 77, -71, - -71, -204, -204, -146, 112, 191, 151, 189, 185, 205, - 196, 218, 187, 219, -143, -146, -71, -71, -71, -71, - 265, -93, 85, -45, 83, -131, -71, -71, -103, 54, - -104, -81, -83, -82, -203, -2, -99, -130, -102, -130, - -65, 57, 86, -52, -51, 54, 55, -53, 54, -51, - 44, 44, 128, 128, 128, -102, -93, -65, 239, 243, - 244, -180, -181, -184, -183, -130, -187, -174, -174, 56, - -157, 54, -71, 58, -159, -159, -194, 112, 58, 57, - 58, 57, 58, 57, -60, -141, -141, -60, -141, -130, - -193, 268, -195, -194, -130, -130, -130, -60, -120, -120, - -92, 14, 16, -204, -71, -204, -154, -154, -154, -163, - -154, 179, -154, 179, -204, -204, 19, 19, 19, 19, - -203, -38, 261, -45, 57, 57, 27, -103, 57, -204, - -204, -204, 57, 116, -204, 57, -93, -107, -45, -45, - 56, -45, -203, -203, -203, -204, -97, 58, 57, -154, - -100, -130, -165, 216, 9, -158, 63, -158, 64, 64, - -142, 26, -192, -191, -131, 56, 55, -45, -80, -158, - -194, -71, -71, -71, -71, -71, -97, 63, -71, -71, - 28, -83, 35, -2, -203, -130, -130, -130, -97, -100, - -100, -204, -100, -100, -139, -186, -185, 55, 138, 70, - -183, 58, 57, -166, 134, 28, 133, -74, -159, -159, - 58, 58, -203, 57, 86, -100, -60, -204, -204, -204, - -204, -37, 96, 268, -204, -204, -204, 9, -81, -2, - 116, 58, -204, -204, -204, -64, -185, -194, -175, 86, - 63, 146, -130, -155, 70, 28, 28, -188, -189, 157, - -191, -181, 58, -204, 266, 51, 269, -104, -204, -130, - 64, -60, 63, -204, 57, -130, -196, 40, 267, 270, - 56, -189, 35, -193, 40, -100, 159, 268, 58, 160, - 269, -199, -200, 54, -203, 270, -200, 54, 10, 9, - -71, 156, -198, 147, 142, 145, 30, -198, -204, -204, - 141, 29, 72, + -71, -71, -71, -143, -194, 63, -194, -70, -70, -130, + -41, 21, 34, -40, -204, 57, -204, -2, -40, -40, + -45, -45, -86, 63, -40, -86, 63, -40, -40, -35, + 21, 34, -87, -88, 82, -86, -130, -136, -204, -71, + -130, -130, -40, -41, -41, -40, -40, -101, 157, -60, + 30, 57, -56, -58, -57, -59, 44, 48, 50, 45, + 46, 47, 51, -140, 22, -47, -203, -139, 157, -138, + 22, -136, 63, -101, 55, -47, -60, -47, -62, -136, + 103, -108, -110, 57, 238, 240, 241, 54, 75, -45, + -159, 111, -179, -180, -181, -131, 63, 64, -168, -169, + -170, -182, 143, -187, 134, 136, 133, -171, 144, 128, + 28, 58, -164, 72, 78, -160, 219, -154, 56, -154, + -154, -154, -154, -158, 194, -158, -158, -158, 56, 56, + -154, -154, -154, -162, 56, -162, -162, -163, 56, -163, + -134, 55, -60, -142, 23, -142, -124, 124, 121, 122, + -190, 120, 216, 194, 70, 29, 15, 256, 157, 271, + -194, 158, -60, -60, -60, -60, -60, 124, 121, -60, + -60, -60, -142, -60, -60, -120, -136, -136, 63, -60, + 39, -45, -45, -137, -95, -98, -112, 19, 11, 35, + 35, -65, 12, -42, -47, -44, 72, 73, 74, 116, + -203, -79, -71, -71, -71, -39, 152, 77, -204, -204, + -40, -40, -45, -204, -204, -204, 57, 55, 22, 11, + 11, -204, 11, 11, -204, -204, -40, -90, -88, 84, + -45, -204, 116, -204, 57, 57, -204, -204, -204, -204, + -204, -69, 30, 35, -2, -203, -203, -104, -107, -86, + -48, -49, -49, -48, -49, 44, 44, 44, 49, 44, + 49, 44, -57, -136, -204, -64, 52, 131, 53, -203, + -138, -65, -47, -65, -65, 116, -109, -111, 242, 239, + 245, -194, 63, 57, -181, 86, 56, -194, 28, -171, + -171, -174, -194, -174, 28, -156, 29, 72, -161, 220, + 64, -158, -158, -159, 30, -159, -159, -159, -167, 63, + -167, 64, 64, 54, -130, -142, -141, -197, 139, 135, + 143, 144, 137, 59, 60, 61, 128, 28, 134, 136, + 157, 133, -197, -125, -126, 130, 22, 128, 28, 157, + -196, 55, 163, 216, 163, 130, -142, -116, -116, 40, + 116, -60, -91, 13, -45, 103, -131, -41, -39, 77, + -71, -71, -204, -204, -146, 112, 191, 151, 189, 185, + 205, 196, 218, 187, 219, -143, -146, -71, -71, -71, + -71, 265, -93, 85, -45, 83, -131, -71, -71, -103, + 54, -104, -81, -83, -82, -203, -2, -99, -130, -102, + -130, -65, 57, 86, -52, -51, 54, 55, -53, 54, + -51, 44, 44, 128, 128, 128, -102, -93, -65, 239, + 243, 244, -180, -181, -184, -183, -130, -187, -174, -174, + 56, -157, 54, -71, 58, -159, -159, -194, 112, 58, + 57, 58, 57, 58, 57, -60, -141, -141, -60, -141, + -130, -193, 268, -195, -194, -130, -130, -130, -60, -120, + -120, -92, 14, 16, -204, -71, -204, -154, -154, -154, + -163, -154, 179, -154, 179, -204, -204, 19, 19, 19, + 19, -203, -38, 261, -45, 57, 57, 27, -103, 57, + -204, -204, -204, 57, 116, -204, 57, -93, -107, -45, + -45, 56, -45, -203, -203, -203, -204, -97, 58, 57, + -154, -100, -130, -165, 216, 9, -158, 63, -158, 64, + 64, -142, 26, -192, -191, -131, 56, 55, -45, -80, + -158, -194, -71, -71, -71, -71, -71, -97, 63, -71, + -71, 28, -83, 35, -2, -203, -130, -130, -130, -97, + -100, -100, -204, -100, -100, -139, -186, -185, 55, 138, + 70, -183, 58, 57, -166, 134, 28, 133, -74, -159, + -159, 58, 58, -203, 57, 86, -100, -60, -204, -204, + -204, -204, -37, 96, 268, -204, -204, -204, 9, -81, + -2, 116, 58, -204, -204, -204, -64, -185, -194, -175, + 86, 63, 146, -130, -155, 70, 28, 28, -188, -189, + 157, -191, -181, 58, -204, 266, 51, 269, -104, -204, + -130, 64, -60, 63, -204, 57, -130, -196, 40, 267, + 270, 56, -189, 35, -193, 40, -100, 159, 268, 58, + 160, 269, -199, -200, 54, -203, 270, -200, 54, 10, + 9, -71, 156, -198, 147, 142, 145, 30, -198, -204, + -204, 141, 29, 72, } var yyDef = [...]int{ 25, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 599, 0, 343, 343, 343, 343, - 343, 343, 0, 671, 654, 0, 0, 0, 0, -2, - 318, 319, 0, 321, 322, 323, -2, -2, -2, 975, - 975, 0, 0, 975, 0, 40, 41, 973, 1, 3, - 607, 0, 0, 347, -2, 345, 0, 654, 654, 0, - 0, 69, 70, 0, 0, 0, 962, 0, 652, 652, - 652, 672, 673, 676, 677, 26, 27, 28, 802, 803, - 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, - 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, - 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, - 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, - 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, - 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, - 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, - 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, - 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, - 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, - 954, 955, 956, 957, 958, 959, 960, 961, 963, 964, - 965, 966, 967, 968, 969, 970, 971, 972, 0, 0, - 0, 0, 0, 655, 0, 650, 0, 650, 650, 650, - 0, 269, 425, 680, 681, 962, 0, 0, 0, 309, - 0, 976, 281, 0, 283, 976, 0, 976, 0, 290, - 0, 0, 296, 976, 301, 315, 316, 303, 317, 320, - 0, 0, 335, 336, 337, 338, 339, 975, 975, 342, - 34, 611, 0, 0, 599, 36, 0, 343, 348, 349, - 0, 0, -2, -2, 359, 365, 366, 367, 368, 344, - 0, 371, 375, 0, 435, 0, 440, 442, -2, -2, - 0, 477, 478, 479, 480, 481, 0, 0, 0, 0, - 0, 0, 0, 0, 505, 506, 507, 508, 584, 585, - 586, 587, 588, 589, 590, 591, 444, 445, 581, 631, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 572, - 0, 542, 542, 542, 542, 542, 542, 542, 542, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 51, 425, 55, 0, 951, 635, -2, -2, - 0, 0, 678, 679, -2, 815, -2, 684, 685, 686, - 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, - 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, - 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, - 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, - 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, - 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, - 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 0, 0, 88, 0, 86, - 0, 976, 0, 0, 0, 0, 0, 0, 976, 976, - 976, 0, 0, 0, 0, 260, 0, 0, 0, 0, - 0, 0, 0, 268, 0, 270, 976, 309, 273, 0, - 0, 976, 976, 976, 0, 976, 976, 280, 977, 978, - 0, 190, 191, 192, 284, 976, 976, 286, 0, 306, - 304, 305, 298, 299, 0, 312, 293, 294, 297, 334, - -2, 331, 332, 333, 0, 340, 341, 35, 974, 29, - 0, 0, 608, 0, 600, 601, 604, 607, 34, 358, - 0, 380, 369, 360, 363, 364, 346, 0, 372, 0, - 0, 0, 376, 0, 378, 379, 0, 438, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 462, 463, 464, - 465, 466, 467, 468, 441, 0, 455, 0, 0, 0, - 497, 498, 499, 500, 501, 502, 503, 0, 356, 34, - 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, - 353, 0, 573, 0, 526, 534, 0, 527, 535, 528, - 536, 529, 0, 530, 537, 531, 538, 532, 533, 539, - 0, 0, 0, 356, 356, 0, 0, 53, 0, 424, - 0, 382, 384, 385, 386, -2, 0, 408, -2, 0, - 0, 0, 47, 48, 0, 0, 0, 0, 951, 636, - 57, 58, 0, 0, 0, 166, 645, 646, 647, 643, + 21, 22, 23, 24, 600, 0, 344, 344, 344, 344, + 344, 344, 0, 672, 655, 0, 0, 0, 0, -2, + 318, 319, 0, 321, 322, 323, -2, -2, -2, 976, + 976, 0, 0, 976, 0, 40, 41, 974, 1, 3, + 608, 0, 0, 348, -2, 346, 0, 655, 655, 0, + 0, 69, 70, 0, 0, 0, 963, 0, 653, 653, + 653, 673, 674, 677, 678, 26, 27, 28, 803, 804, + 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, + 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, + 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, + 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, + 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, + 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, + 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, + 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, + 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 964, 965, + 966, 967, 968, 969, 970, 971, 972, 973, 0, 0, + 0, 0, 0, 656, 0, 651, 0, 651, 651, 651, + 0, 269, 426, 681, 682, 963, 0, 0, 0, 309, + 0, 977, 281, 0, 283, 977, 0, 977, 0, 290, + 0, 0, 296, 977, 301, 315, 316, 303, 317, 320, + 0, 0, 336, 337, 338, 339, 340, 976, 976, 343, + 34, 612, 0, 0, 600, 36, 0, 344, 349, 350, + 0, 0, -2, -2, 360, 366, 367, 368, 369, 345, + 0, 372, 376, 0, 436, 0, 441, 443, -2, -2, + 0, 478, 479, 480, 481, 482, 0, 0, 0, 0, + 0, 0, 0, 0, 506, 507, 508, 509, 585, 586, + 587, 588, 589, 590, 591, 592, 445, 446, 582, 632, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 573, + 0, 543, 543, 543, 543, 543, 543, 543, 543, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 49, 51, 426, 55, 0, 952, 636, -2, -2, + 0, 0, 679, 680, -2, 816, -2, 685, 686, 687, + 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, + 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, + 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, + 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, + 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, + 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, + 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, + 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, + 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, + 798, 799, 800, 801, 802, 0, 0, 88, 0, 86, + 0, 977, 0, 0, 0, 0, 0, 0, 977, 977, + 977, 0, 0, 0, 0, 260, 0, 0, 0, 0, + 0, 0, 0, 268, 0, 270, 977, 309, 273, 0, + 0, 977, 977, 977, 0, 977, 977, 280, 978, 979, + 0, 190, 191, 192, 284, 977, 977, 286, 0, 306, + 304, 305, 298, 299, 0, 312, 293, 294, 297, 335, + -2, 332, 333, 334, 0, 341, 342, 35, 975, 29, + 0, 0, 609, 0, 601, 602, 605, 608, 34, 359, + 0, 381, 370, 361, 364, 365, 347, 0, 373, 0, + 0, 0, 377, 0, 379, 380, 0, 439, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 463, 464, 465, + 466, 467, 468, 469, 442, 0, 456, 0, 0, 0, + 498, 499, 500, 501, 502, 503, 504, 0, 357, 34, + 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, + 354, 0, 574, 0, 527, 535, 0, 528, 536, 529, + 537, 530, 0, 531, 538, 532, 539, 533, 534, 540, + 0, 0, 0, 357, 357, 0, 0, 53, 0, 425, + 0, 383, 385, 386, 387, -2, 0, 409, -2, 0, + 0, 0, 47, 48, 0, 0, 0, 0, 952, 637, + 57, 58, 0, 0, 0, 166, 646, 647, 648, 644, 215, 0, 0, 154, 150, 94, 95, 96, 143, 98, 143, 143, 143, 143, 163, 163, 163, 163, 126, 127, 128, 129, 130, 0, 0, 113, 143, 143, 143, 117, 133, 134, 135, 136, 137, 138, 139, 140, 99, 100, 101, 102, 103, 104, 105, 106, 107, 145, 145, 145, - 147, 147, 674, 72, 0, 976, 0, 976, 84, 0, + 147, 147, 675, 72, 0, 977, 0, 977, 84, 0, 229, 231, 232, 0, 0, 0, 0, 0, 0, 0, - 0, 263, 651, 0, 976, 266, 267, 426, 682, 683, + 0, 263, 652, 0, 977, 266, 267, 427, 683, 684, 271, 272, 310, 311, 274, 275, 276, 277, 278, 279, 0, 193, 194, 285, 289, 0, 309, 0, 0, 291, - 292, 0, 0, 324, 325, 326, 612, 0, 0, 0, - 0, 0, 603, 605, 606, 611, 37, 0, 592, 0, - 0, 433, 0, 0, 361, 32, 436, 437, 439, 456, - 0, 458, 460, 377, 373, 0, 582, -2, 446, 447, - 471, 472, 473, 0, 0, 0, 0, 469, 451, 0, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 496, 557, 558, 0, 494, 495, 504, 0, - 0, 0, 357, 474, 0, 630, 34, 0, 0, 0, - 0, 479, 584, 0, 479, 584, 0, 0, 0, 354, - 355, 579, 576, 0, 0, 581, 0, 543, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, - 0, 0, 0, 0, 0, 413, 0, 0, 416, 0, - 0, 0, 0, 407, 0, 0, 428, 896, 409, 0, - 411, 412, 433, 0, 433, 50, 433, 52, 0, 427, - 637, 56, 0, 0, 61, 62, 638, 639, 640, 641, - 0, 85, 216, 218, 221, 222, 223, 89, 90, 91, - 0, 0, 203, 0, 0, 197, 197, 0, 195, 196, - 87, 157, 155, 0, 152, 151, 97, 0, 163, 163, - 120, 121, 166, 0, 166, 166, 166, 0, 0, 114, - 115, 116, 108, 0, 109, 110, 111, 0, 112, 0, - 0, 976, 74, 653, 75, 975, 0, 0, 666, 230, - 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 0, 76, 234, 236, 235, 239, 0, 0, 0, 261, - 976, 265, 306, 306, 288, 307, 308, 313, 295, 0, - 609, 610, 0, 602, 30, 0, 648, 649, 593, 594, - 595, 0, 370, 381, 362, 457, 459, 461, 0, 356, - 448, 469, 452, 0, 449, 0, 0, 443, 509, 0, - 0, 476, -2, 513, 514, 0, 0, 0, 0, 0, - 550, 0, 0, 551, 0, 599, 0, 577, 0, 0, - 525, 0, 544, 0, 0, 545, 546, 547, 548, 549, - 624, 0, 0, -2, 0, 0, 433, 632, 0, 383, - 402, 404, 0, 399, 414, 415, 417, 0, 419, 0, - 421, 422, 387, 389, 390, 0, 0, 0, 0, 410, - 599, 433, 45, 46, 0, 59, 60, 0, 0, 66, - 167, 168, 0, 219, 0, 0, 0, 185, 197, 197, - 188, 198, 189, 0, 159, 0, 156, 93, 153, 0, - 166, 166, 122, 0, 123, 124, 125, 0, 141, 0, - 0, 0, 0, 675, 73, 224, 975, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 975, 0, 975, 667, 668, 669, 670, 0, 79, - 0, 0, 0, 0, 0, 264, 309, 309, 613, 0, - 31, 597, 0, 434, 374, 583, 0, 450, 0, 470, - 453, 510, 511, 0, 143, 143, 562, 143, 147, 565, - 143, 567, 143, 570, 0, 0, 0, 0, 0, 0, - 0, 574, 524, 580, 0, 582, 0, 0, 38, 0, - 624, 614, 626, 628, 0, 34, 0, 620, 0, 394, - 599, 0, 0, 396, 403, 0, 0, 397, 0, 398, - 418, 420, 0, 0, 0, 0, 607, 44, 63, 64, - 65, 217, 220, 0, 199, 143, 202, 186, 187, 0, - 161, 0, 158, 144, 118, 119, 164, 165, 163, 0, - 163, 0, 148, 0, 976, 225, 226, 227, 228, 0, - 233, 0, 77, 78, 0, 0, 238, 262, 282, 287, - 33, 0, 0, 512, 454, 515, 559, 163, 563, 564, - 566, 568, 569, 571, 517, 516, 0, 0, 0, 0, - 0, 607, 0, 578, 0, 0, 0, 39, 0, 629, - -2, 0, 0, 0, 54, 0, 607, 633, 634, 400, - 0, 405, 0, 0, 0, 408, 43, 177, 0, 201, - 0, 392, 169, 162, 0, 166, 142, 166, 0, 0, - 71, 0, 80, 81, 0, 0, 0, 598, 596, 560, - 561, 0, 0, 0, 0, 552, 0, 575, 0, 0, - 0, 627, 0, -2, 0, 622, 621, 395, 42, 0, - 0, 430, 0, 0, 428, 176, 178, 0, 183, 0, - 200, 0, 0, 174, 0, 171, 173, 160, 131, 132, - 146, 149, 0, 0, 0, 0, 240, 518, 520, 519, - 521, 0, 0, 0, 523, 540, 541, 0, 617, 34, - 0, 401, 429, 431, 432, 391, 179, 180, 0, 184, - 182, 0, 393, 92, 0, 170, 172, 0, 256, 0, - 82, 83, 76, 522, 0, 0, 0, 625, -2, 623, - 181, 0, 175, 255, 0, 0, 79, 553, 0, 556, - 0, 257, 0, 237, 554, 0, 0, 0, 204, 0, - 0, 205, 206, 0, 0, 555, 207, 0, 0, 0, - 0, 0, 208, 210, 211, 0, 0, 209, 258, 259, - 212, 213, 214, + 292, 0, 0, 324, 325, 326, 327, 613, 0, 0, + 0, 0, 0, 604, 606, 607, 612, 37, 0, 593, + 0, 0, 434, 0, 0, 362, 32, 437, 438, 440, + 457, 0, 459, 461, 378, 374, 0, 583, -2, 447, + 448, 472, 473, 474, 0, 0, 0, 0, 470, 452, + 0, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 497, 558, 559, 0, 495, 496, 505, + 0, 0, 0, 358, 475, 0, 631, 34, 0, 0, + 0, 0, 480, 585, 0, 480, 585, 0, 0, 0, + 355, 356, 580, 577, 0, 0, 582, 0, 544, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 424, + 0, 0, 0, 0, 0, 0, 414, 0, 0, 417, + 0, 0, 0, 0, 408, 0, 0, 429, 897, 410, + 0, 412, 413, 434, 0, 434, 50, 434, 52, 0, + 428, 638, 56, 0, 0, 61, 62, 639, 640, 641, + 642, 0, 85, 216, 218, 221, 222, 223, 89, 90, + 91, 0, 0, 203, 0, 0, 197, 197, 0, 195, + 196, 87, 157, 155, 0, 152, 151, 97, 0, 163, + 163, 120, 121, 166, 0, 166, 166, 166, 0, 0, + 114, 115, 116, 108, 0, 109, 110, 111, 0, 112, + 0, 0, 977, 74, 654, 75, 976, 0, 0, 667, + 230, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 666, 0, 76, 234, 236, 235, 239, 0, 0, 0, + 261, 977, 265, 306, 306, 288, 307, 308, 313, 295, + 0, 610, 611, 0, 603, 30, 0, 649, 650, 594, + 595, 596, 0, 371, 382, 363, 458, 460, 462, 0, + 357, 449, 470, 453, 0, 450, 0, 0, 444, 510, + 0, 0, 477, -2, 514, 515, 0, 0, 0, 0, + 0, 551, 0, 0, 552, 0, 600, 0, 578, 0, + 0, 526, 0, 545, 0, 0, 546, 547, 548, 549, + 550, 625, 0, 0, -2, 0, 0, 434, 633, 0, + 384, 403, 405, 0, 400, 415, 416, 418, 0, 420, + 0, 422, 423, 388, 390, 391, 0, 0, 0, 0, + 411, 600, 434, 45, 46, 0, 59, 60, 0, 0, + 66, 167, 168, 0, 219, 0, 0, 0, 185, 197, + 197, 188, 198, 189, 0, 159, 0, 156, 93, 153, + 0, 166, 166, 122, 0, 123, 124, 125, 0, 141, + 0, 0, 0, 0, 676, 73, 224, 976, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 976, 0, 976, 668, 669, 670, 671, 0, + 79, 0, 0, 0, 0, 0, 264, 309, 309, 614, + 0, 31, 598, 0, 435, 375, 584, 0, 451, 0, + 471, 454, 511, 512, 0, 143, 143, 563, 143, 147, + 566, 143, 568, 143, 571, 0, 0, 0, 0, 0, + 0, 0, 575, 525, 581, 0, 583, 0, 0, 38, + 0, 625, 615, 627, 629, 0, 34, 0, 621, 0, + 395, 600, 0, 0, 397, 404, 0, 0, 398, 0, + 399, 419, 421, 0, 0, 0, 0, 608, 44, 63, + 64, 65, 217, 220, 0, 199, 143, 202, 186, 187, + 0, 161, 0, 158, 144, 118, 119, 164, 165, 163, + 0, 163, 0, 148, 0, 977, 225, 226, 227, 228, + 0, 233, 0, 77, 78, 0, 0, 238, 262, 282, + 287, 33, 0, 0, 513, 455, 516, 560, 163, 564, + 565, 567, 569, 570, 572, 518, 517, 0, 0, 0, + 0, 0, 608, 0, 579, 0, 0, 0, 39, 0, + 630, -2, 0, 0, 0, 54, 0, 608, 634, 635, + 401, 0, 406, 0, 0, 0, 409, 43, 177, 0, + 201, 0, 393, 169, 162, 0, 166, 142, 166, 0, + 0, 71, 0, 80, 81, 0, 0, 0, 599, 597, + 561, 562, 0, 0, 0, 0, 553, 0, 576, 0, + 0, 0, 628, 0, -2, 0, 623, 622, 396, 42, + 0, 0, 431, 0, 0, 429, 176, 178, 0, 183, + 0, 200, 0, 0, 174, 0, 171, 173, 160, 131, + 132, 146, 149, 0, 0, 0, 0, 240, 519, 521, + 520, 522, 0, 0, 0, 524, 541, 542, 0, 618, + 34, 0, 402, 430, 432, 433, 392, 179, 180, 0, + 184, 182, 0, 394, 92, 0, 170, 172, 0, 256, + 0, 82, 83, 76, 523, 0, 0, 0, 626, -2, + 624, 181, 0, 175, 255, 0, 0, 79, 554, 0, + 557, 0, 257, 0, 237, 555, 0, 0, 0, 204, + 0, 0, 205, 206, 0, 0, 556, 207, 0, 0, + 0, 0, 0, 208, 210, 211, 0, 0, 209, 258, + 259, 212, 213, 214, } var yyTok1 = [...]int{ @@ -3288,7 +3298,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 79, 3, 3, 3, 106, 98, 3, 56, 58, 103, 101, 57, 102, 116, 104, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 356, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 357, 87, 86, 88, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -3343,7 +3353,7 @@ var yyTok3 = [...]int{ 57665, 340, 57666, 341, 57667, 342, 57668, 343, 57669, 344, 57670, 345, 57671, 346, 57672, 347, 57673, 348, 57674, 349, 57675, 350, 57676, 351, 57677, 352, 57678, 353, 57679, 354, - 57680, 355, 0, + 57680, 355, 57681, 356, 0, } var yyErrorMessages = [...]struct { @@ -5530,10 +5540,10 @@ yydefault: yyVAL.str = VitessStr } case 327: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1830 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1828 { - yyVAL.bytes = yyDollar[1].bytes + yyVAL.str = TraditionalStr } case 328: yyDollar = yyS[yypt-1 : yypt+1] @@ -5549,15 +5559,15 @@ yydefault: } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1844 +//line sql.y:1842 { - yyVAL.statement = yyDollar[1].selStmt + yyVAL.bytes = yyDollar[1].bytes } case 331: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1848 { - yyVAL.statement = yyDollar[1].statement + yyVAL.statement = yyDollar[1].selStmt } case 332: yyDollar = yyS[yypt-1 : yypt+1] @@ -5572,16 +5582,16 @@ yydefault: yyVAL.statement = yyDollar[1].statement } case 334: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1862 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1860 { - yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} + yyVAL.statement = yyDollar[1].statement } case 335: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1868 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1866 { - yyVAL.statement = &OtherRead{} + yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} } case 336: yyDollar = yyS[yypt-2 : yypt+1] @@ -5599,7 +5609,7 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1880 { - yyVAL.statement = &OtherAdmin{} + yyVAL.statement = &OtherRead{} } case 339: yyDollar = yyS[yypt-2 : yypt+1] @@ -5608,7 +5618,7 @@ yydefault: yyVAL.statement = &OtherAdmin{} } case 340: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1888 { yyVAL.statement = &OtherAdmin{} @@ -5620,149 +5630,149 @@ yydefault: yyVAL.statement = &OtherAdmin{} } case 342: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1896 + { + yyVAL.statement = &OtherAdmin{} + } + case 343: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1898 +//line sql.y:1902 { yyVAL.statement = &DDL{Action: FlushStr} } - case 343: + case 344: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1902 +//line sql.y:1906 { setAllowComments(yylex, true) } - case 344: + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1906 +//line sql.y:1910 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 345: + case 346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1912 +//line sql.y:1916 { yyVAL.bytes2 = nil } - case 346: + case 347: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1916 +//line sql.y:1920 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 347: + case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1922 +//line sql.y:1926 { yyVAL.str = UnionStr } - case 348: + case 349: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1926 +//line sql.y:1930 { yyVAL.str = UnionAllStr } - case 349: + case 350: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1930 +//line sql.y:1934 { yyVAL.str = UnionDistinctStr } - case 350: + case 351: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1935 +//line sql.y:1939 { yyVAL.str = "" } - case 351: + case 352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1939 +//line sql.y:1943 { yyVAL.str = SQLNoCacheStr } - case 352: + case 353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1943 +//line sql.y:1947 { yyVAL.str = SQLCacheStr } - case 353: + case 354: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1948 +//line sql.y:1952 { yyVAL.str = "" } - case 354: + case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1952 +//line sql.y:1956 { yyVAL.str = DistinctStr } - case 355: + case 356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1956 +//line sql.y:1960 { yyVAL.str = DistinctStr } - case 356: + case 357: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1961 +//line sql.y:1965 { yyVAL.selectExprs = nil } - case 357: + case 358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1965 +//line sql.y:1969 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 358: + case 359: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1970 +//line sql.y:1974 { yyVAL.strs = nil } - case 359: + case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1974 +//line sql.y:1978 { yyVAL.strs = []string{yyDollar[1].str} } - case 360: + case 361: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1978 +//line sql.y:1982 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 361: + case 362: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1982 +//line sql.y:1986 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 362: + case 363: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1986 +//line sql.y:1990 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 363: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1992 - { - yyVAL.str = SQLNoCacheStr - } case 364: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1996 { - yyVAL.str = SQLCacheStr + yyVAL.str = SQLNoCacheStr } case 365: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2000 { - yyVAL.str = DistinctStr + yyVAL.str = SQLCacheStr } case 366: yyDollar = yyS[yypt-1 : yypt+1] @@ -5774,166 +5784,166 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2008 { - yyVAL.str = StraightJoinHint + yyVAL.str = DistinctStr } case 368: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2012 { - yyVAL.str = SQLCalcFoundRowsStr + yyVAL.str = StraightJoinHint } case 369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2018 +//line sql.y:2016 { - yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} + yyVAL.str = SQLCalcFoundRowsStr } case 370: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2022 { - yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) + yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 371: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2026 + { + yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) + } + case 372: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2028 +//line sql.y:2032 { yyVAL.selectExpr = &StarExpr{} } - case 372: + case 373: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2032 +//line sql.y:2036 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 373: + case 374: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2036 +//line sql.y:2040 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 374: + case 375: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2040 +//line sql.y:2044 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 375: + case 376: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2045 +//line sql.y:2049 { yyVAL.colIdent = ColIdent{} } - case 376: + case 377: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2049 +//line sql.y:2053 { yyVAL.colIdent = yyDollar[1].colIdent } - case 377: + case 378: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2053 +//line sql.y:2057 { yyVAL.colIdent = yyDollar[2].colIdent } - case 379: + case 380: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2060 +//line sql.y:2064 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 380: + case 381: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2065 +//line sql.y:2069 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 381: + case 382: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2069 +//line sql.y:2073 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 382: + case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2075 +//line sql.y:2079 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 383: + case 384: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2079 +//line sql.y:2083 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 386: + case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2089 +//line sql.y:2093 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 387: + case 388: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2093 +//line sql.y:2097 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 388: + case 389: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2097 +//line sql.y:2101 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") return 1 } - case 389: + case 390: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2103 +//line sql.y:2107 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 390: + case 391: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2109 +//line sql.y:2113 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 391: + case 392: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2113 +//line sql.y:2117 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 392: + case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2119 +//line sql.y:2123 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 393: + case 394: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2123 +//line sql.y:2127 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 394: + case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2129 +//line sql.y:2133 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 395: + case 396: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2133 +//line sql.y:2137 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 396: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2146 - { - yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} - } case 397: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2150 @@ -5947,91 +5957,91 @@ yydefault: yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 399: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2158 { - yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} + yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 400: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2162 + { + yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} + } + case 401: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2164 +//line sql.y:2168 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 401: + case 402: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2166 +//line sql.y:2170 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 402: + case 403: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2170 +//line sql.y:2174 { yyVAL.joinCondition = JoinCondition{} } - case 403: + case 404: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2172 +//line sql.y:2176 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 404: + case 405: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2176 +//line sql.y:2180 { yyVAL.joinCondition = JoinCondition{} } - case 405: + case 406: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2178 +//line sql.y:2182 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 406: + case 407: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2181 +//line sql.y:2185 { yyVAL.empty = struct{}{} } - case 407: + case 408: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2183 +//line sql.y:2187 { yyVAL.empty = struct{}{} } - case 408: + case 409: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2186 +//line sql.y:2190 { yyVAL.tableIdent = NewTableIdent("") } - case 409: + case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2190 +//line sql.y:2194 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 410: + case 411: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2194 +//line sql.y:2198 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 412: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2201 - { - yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) - } case 413: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2207 +//line sql.y:2205 { - yyVAL.str = JoinStr + yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 414: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2211 { yyVAL.str = JoinStr @@ -6043,44 +6053,50 @@ yydefault: yyVAL.str = JoinStr } case 416: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2221 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2219 { - yyVAL.str = StraightJoinStr + yyVAL.str = JoinStr } case 417: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2227 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2225 { - yyVAL.str = LeftJoinStr + yyVAL.str = StraightJoinStr } case 418: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2231 { yyVAL.str = LeftJoinStr } case 419: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2235 { - yyVAL.str = RightJoinStr + yyVAL.str = LeftJoinStr } case 420: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2239 { yyVAL.str = RightJoinStr } case 421: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2245 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2243 { - yyVAL.str = NaturalJoinStr + yyVAL.str = RightJoinStr } case 422: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2249 + { + yyVAL.str = NaturalJoinStr + } + case 423: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2253 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -6088,413 +6104,407 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 423: + case 424: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2259 +//line sql.y:2263 { yyVAL.tableName = yyDollar[2].tableName } - case 424: + case 425: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2263 +//line sql.y:2267 { yyVAL.tableName = yyDollar[1].tableName } - case 425: + case 426: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2269 +//line sql.y:2273 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 426: + case 427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2273 +//line sql.y:2277 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 427: + case 428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2279 +//line sql.y:2283 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 428: + case 429: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2284 +//line sql.y:2288 { yyVAL.indexHints = nil } - case 429: + case 430: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2288 +//line sql.y:2292 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 430: + case 431: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2292 +//line sql.y:2296 { yyVAL.indexHints = &IndexHints{Type: UseStr} } - case 431: + case 432: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2296 +//line sql.y:2300 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 432: + case 433: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2300 +//line sql.y:2304 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 433: + case 434: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2305 +//line sql.y:2309 { yyVAL.expr = nil } - case 434: + case 435: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2309 +//line sql.y:2313 { yyVAL.expr = yyDollar[2].expr } - case 435: + case 436: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2315 +//line sql.y:2319 { yyVAL.expr = yyDollar[1].expr } - case 436: + case 437: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2319 +//line sql.y:2323 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 437: + case 438: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2323 +//line sql.y:2327 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 438: + case 439: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2327 +//line sql.y:2331 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 439: + case 440: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2331 +//line sql.y:2335 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 440: + case 441: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2335 +//line sql.y:2339 { yyVAL.expr = yyDollar[1].expr } - case 441: + case 442: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2339 +//line sql.y:2343 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 442: + case 443: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2345 +//line sql.y:2349 { yyVAL.str = "" } - case 443: + case 444: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2349 +//line sql.y:2353 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 444: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2355 - { - yyVAL.boolVal = BoolVal(true) - } case 445: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2359 { - yyVAL.boolVal = BoolVal(false) + yyVAL.boolVal = BoolVal(true) } case 446: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2365 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2363 { - yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} + yyVAL.boolVal = BoolVal(false) } case 447: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2369 { - yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} + yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } case 448: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2373 { - yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} + yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } case 449: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2377 { - yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} + yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } case 450: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2381 { - yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} + yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } case 451: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2385 { - yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} + yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } case 452: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2389 { - yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} + yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } case 453: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2393 { - yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} + yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } case 454: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2397 { - yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} + yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } case 455: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2401 { - yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} + yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } case 456: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2407 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2405 { - yyVAL.str = IsNullStr + yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 457: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2411 { - yyVAL.str = IsNotNullStr + yyVAL.str = IsNullStr } case 458: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2415 { - yyVAL.str = IsTrueStr + yyVAL.str = IsNotNullStr } case 459: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2419 { - yyVAL.str = IsNotTrueStr + yyVAL.str = IsTrueStr } case 460: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2423 { - yyVAL.str = IsFalseStr + yyVAL.str = IsNotTrueStr } case 461: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2427 { - yyVAL.str = IsNotFalseStr + yyVAL.str = IsFalseStr } case 462: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2433 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2431 { - yyVAL.str = EqualStr + yyVAL.str = IsNotFalseStr } case 463: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2437 { - yyVAL.str = LessThanStr + yyVAL.str = EqualStr } case 464: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2441 { - yyVAL.str = GreaterThanStr + yyVAL.str = LessThanStr } case 465: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2445 { - yyVAL.str = LessEqualStr + yyVAL.str = GreaterThanStr } case 466: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2449 { - yyVAL.str = GreaterEqualStr + yyVAL.str = LessEqualStr } case 467: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2453 { - yyVAL.str = NotEqualStr + yyVAL.str = GreaterEqualStr } case 468: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2457 { - yyVAL.str = NullSafeEqualStr + yyVAL.str = NotEqualStr } case 469: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2462 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2461 { - yyVAL.expr = nil + yyVAL.str = NullSafeEqualStr } case 470: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2466 { - yyVAL.expr = yyDollar[2].expr + yyVAL.expr = nil } case 471: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2472 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2470 { - yyVAL.colTuple = yyDollar[1].valTuple + yyVAL.expr = yyDollar[2].expr } case 472: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2476 { - yyVAL.colTuple = yyDollar[1].subquery + yyVAL.colTuple = yyDollar[1].valTuple } case 473: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2480 { - yyVAL.colTuple = ListArg(yyDollar[1].bytes) + yyVAL.colTuple = yyDollar[1].subquery } case 474: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2486 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2484 { - yyVAL.subquery = &Subquery{yyDollar[2].selStmt} + yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 475: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2492 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2490 { - yyVAL.exprs = Exprs{yyDollar[1].expr} + yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 476: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2496 { - yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) + yyVAL.exprs = Exprs{yyDollar[1].expr} } case 477: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2502 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2500 { - yyVAL.expr = yyDollar[1].expr + yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 478: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2506 { - yyVAL.expr = yyDollar[1].boolVal + yyVAL.expr = yyDollar[1].expr } case 479: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2510 { - yyVAL.expr = yyDollar[1].colName + yyVAL.expr = yyDollar[1].boolVal } case 480: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2514 { - yyVAL.expr = yyDollar[1].expr + yyVAL.expr = yyDollar[1].colName } case 481: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2518 { - yyVAL.expr = yyDollar[1].subquery + yyVAL.expr = yyDollar[1].expr } case 482: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2522 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].subquery } case 483: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2526 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } case 484: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2530 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } case 485: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2534 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } case 486: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2538 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } case 487: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2542 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } case 488: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2546 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } case 489: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2550 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } case 490: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2554 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } case 491: yyDollar = yyS[yypt-3 : yypt+1] @@ -6506,53 +6516,59 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2562 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 493: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2566 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } case 494: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2570 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } case 495: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2574 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 496: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2578 { - yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 497: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2582 { - yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 498: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2586 { - yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } case 499: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2590 { - yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } case 500: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2594 + { + yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} + } + case 501: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2598 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -6560,9 +6576,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 501: + case 502: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2602 +//line sql.y:2606 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -6576,21 +6592,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 502: + case 503: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2616 +//line sql.y:2620 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 503: + case 504: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2620 +//line sql.y:2624 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 504: + case 505: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2624 +//line sql.y:2628 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -6598,17 +6614,11 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 509: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2642 - { - yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} - } case 510: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2646 { - yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} + yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 511: yyDollar = yyS[yypt-5 : yypt+1] @@ -6617,28 +6627,28 @@ yydefault: yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 512: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2654 { - yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} + yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 513: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2664 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:2658 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 514: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2668 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 515: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2672 { - yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} + yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 516: yyDollar = yyS[yypt-6 : yypt+1] @@ -6650,13 +6660,13 @@ yydefault: yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2680 { - yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} + yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 518: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:2684 { - yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 519: yyDollar = yyS[yypt-8 : yypt+1] @@ -6668,7 +6678,7 @@ yydefault: yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2692 { - yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 521: yyDollar = yyS[yypt-8 : yypt+1] @@ -6677,166 +6687,166 @@ yydefault: yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 522: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2700 { - yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} + yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 523: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] //line sql.y:2704 { - yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} + yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } case 524: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2708 { - yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} + yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } case 525: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2712 { - yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} + yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 526: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2722 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2716 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} + yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 527: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2726 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 528: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2730 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2735 +//line sql.y:2734 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 530: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2740 +//line sql.y:2739 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2745 +//line sql.y:2744 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2751 +//line sql.y:2749 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2756 +//line sql.y:2755 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2761 +//line sql.y:2760 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 535: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2765 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 536: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2769 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2774 +//line sql.y:2773 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2779 +//line sql.y:2778 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2784 +//line sql.y:2783 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 540: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2788 { - yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 541: yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:2792 { - yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} + yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 544: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2802 + case 542: + yyDollar = yyS[yypt-8 : yypt+1] +//line sql.y:2796 { - yyVAL.expr = yyDollar[2].expr + yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 545: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2812 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2806 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = yyDollar[2].expr } case 546: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2816 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 547: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2820 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 548: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2824 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 549: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2828 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 550: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2832 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 551: yyDollar = yyS[yypt-4 : yypt+1] @@ -6845,105 +6855,105 @@ yydefault: yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 552: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2842 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2840 { - yyVAL.str = "" + yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 553: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2846 { - yyVAL.str = BooleanModeStr + yyVAL.str = "" } case 554: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2850 { - yyVAL.str = NaturalLanguageModeStr + yyVAL.str = BooleanModeStr } case 555: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2854 { - yyVAL.str = NaturalLanguageModeWithQueryExpansionStr + yyVAL.str = NaturalLanguageModeStr } case 556: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2858 { - yyVAL.str = QueryExpansionStr + yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } case 557: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2864 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2862 { - yyVAL.str = string(yyDollar[1].colIdent.String()) + yyVAL.str = QueryExpansionStr } case 558: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2868 { - yyVAL.str = string(yyDollar[1].bytes) + yyVAL.str = string(yyDollar[1].colIdent.String()) } case 559: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2874 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2872 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.str = string(yyDollar[1].bytes) } case 560: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2878 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 561: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2882 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].colIdent.String())} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } case 562: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2886 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].colIdent.String())} } case 563: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2890 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 564: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2894 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} - yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 565: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2900 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2898 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } case 566: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2904 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 567: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2908 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 568: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2912 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} @@ -6952,143 +6962,149 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2916 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 570: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2920 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 571: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2924 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 572: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2928 + { + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} + } + case 573: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2929 +//line sql.y:2933 { yyVAL.expr = nil } - case 573: + case 574: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2933 +//line sql.y:2937 { yyVAL.expr = yyDollar[1].expr } - case 574: + case 575: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2938 +//line sql.y:2942 { yyVAL.str = string("") } - case 575: + case 576: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2942 +//line sql.y:2946 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 576: + case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2948 +//line sql.y:2952 { yyVAL.whens = []*When{yyDollar[1].when} } - case 577: + case 578: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2952 +//line sql.y:2956 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 578: + case 579: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2958 +//line sql.y:2962 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 579: + case 580: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2963 +//line sql.y:2967 { yyVAL.expr = nil } - case 580: + case 581: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2967 +//line sql.y:2971 { yyVAL.expr = yyDollar[2].expr } - case 581: + case 582: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2973 +//line sql.y:2977 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 582: + case 583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2977 +//line sql.y:2981 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 583: + case 584: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2981 +//line sql.y:2985 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 584: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2987 - { - yyVAL.expr = NewStrVal(yyDollar[1].bytes) - } case 585: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2991 { - yyVAL.expr = NewHexVal(yyDollar[1].bytes) + yyVAL.expr = NewStrVal(yyDollar[1].bytes) } case 586: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2995 { - yyVAL.expr = NewBitVal(yyDollar[1].bytes) + yyVAL.expr = NewHexVal(yyDollar[1].bytes) } case 587: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2999 { - yyVAL.expr = NewIntVal(yyDollar[1].bytes) + yyVAL.expr = NewBitVal(yyDollar[1].bytes) } case 588: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3003 { - yyVAL.expr = NewFloatVal(yyDollar[1].bytes) + yyVAL.expr = NewIntVal(yyDollar[1].bytes) } case 589: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3007 { - yyVAL.expr = NewHexNum(yyDollar[1].bytes) + yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } case 590: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3011 { - yyVAL.expr = NewValArg(yyDollar[1].bytes) + yyVAL.expr = NewHexNum(yyDollar[1].bytes) } case 591: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3015 { - yyVAL.expr = &NullVal{} + yyVAL.expr = NewValArg(yyDollar[1].bytes) } case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3021 +//line sql.y:3019 + { + yyVAL.expr = &NullVal{} + } + case 593: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3025 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7097,239 +7113,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 593: + case 594: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3030 +//line sql.y:3034 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 594: + case 595: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3034 +//line sql.y:3038 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 595: + case 596: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3039 +//line sql.y:3043 { yyVAL.exprs = nil } - case 596: + case 597: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3043 +//line sql.y:3047 { yyVAL.exprs = yyDollar[3].exprs } - case 597: + case 598: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3048 +//line sql.y:3052 { yyVAL.expr = nil } - case 598: + case 599: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3052 +//line sql.y:3056 { yyVAL.expr = yyDollar[2].expr } - case 599: + case 600: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3057 +//line sql.y:3061 { yyVAL.orderBy = nil } - case 600: + case 601: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3061 +//line sql.y:3065 { yyVAL.orderBy = yyDollar[3].orderBy } - case 601: + case 602: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3067 +//line sql.y:3071 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 602: + case 603: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3071 +//line sql.y:3075 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 603: + case 604: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3077 +//line sql.y:3081 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 604: + case 605: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3082 +//line sql.y:3086 { yyVAL.str = AscScr } - case 605: + case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3086 +//line sql.y:3090 { yyVAL.str = AscScr } - case 606: + case 607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3090 +//line sql.y:3094 { yyVAL.str = DescScr } - case 607: + case 608: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3095 +//line sql.y:3099 { yyVAL.limit = nil } - case 608: + case 609: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3099 +//line sql.y:3103 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 609: + case 610: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3103 +//line sql.y:3107 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 610: + case 611: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3107 +//line sql.y:3111 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 611: + case 612: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3112 +//line sql.y:3116 { yyVAL.str = "" } - case 612: + case 613: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3116 +//line sql.y:3120 { yyVAL.str = ForUpdateStr } - case 613: + case 614: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3120 +//line sql.y:3124 { yyVAL.str = ShareModeStr } - case 614: + case 615: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3133 +//line sql.y:3137 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 615: + case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3137 +//line sql.y:3141 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 616: + case 617: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3141 +//line sql.y:3145 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 617: + case 618: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3146 +//line sql.y:3150 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 618: + case 619: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3150 +//line sql.y:3154 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 619: + case 620: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3154 +//line sql.y:3158 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 620: + case 621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3161 +//line sql.y:3165 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 621: + case 622: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3165 +//line sql.y:3169 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 622: + case 623: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3169 +//line sql.y:3173 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 623: + case 624: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3173 +//line sql.y:3177 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 624: + case 625: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3178 +//line sql.y:3182 { yyVAL.updateExprs = nil } - case 625: + case 626: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3182 +//line sql.y:3186 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 626: + case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3188 +//line sql.y:3192 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 627: + case 628: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3192 +//line sql.y:3196 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 628: + case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3198 +//line sql.y:3202 { yyVAL.valTuple = yyDollar[1].valTuple } - case 629: + case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3202 +//line sql.y:3206 { yyVAL.valTuple = ValTuple{} } - case 630: + case 631: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3208 +//line sql.y:3212 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 631: + case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3214 +//line sql.y:3218 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -7337,202 +7353,196 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 632: + case 633: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3224 +//line sql.y:3228 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 633: + case 634: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3228 +//line sql.y:3232 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 634: + case 635: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3234 +//line sql.y:3238 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 635: + case 636: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3240 +//line sql.y:3244 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 636: + case 637: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3244 +//line sql.y:3248 { yyDollar[2].setExpr.Scope = yyDollar[1].str yyVAL.setExprs = SetExprs{yyDollar[2].setExpr} } - case 637: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3249 - { - yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) - } case 638: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3255 +//line sql.y:3253 { - yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} + yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } case 639: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3259 { - yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} + yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } case 640: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3263 { - yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} + yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } case 641: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3267 + { + yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} + } + case 642: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3271 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 643: + case 644: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3274 +//line sql.y:3278 { yyVAL.bytes = []byte("charset") } - case 645: + case 646: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3281 +//line sql.y:3285 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 646: + case 647: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3285 +//line sql.y:3289 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 647: + case 648: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3289 +//line sql.y:3293 { yyVAL.expr = &Default{} } - case 650: + case 651: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3298 +//line sql.y:3302 { yyVAL.byt = 0 } - case 651: + case 652: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3300 +//line sql.y:3304 { yyVAL.byt = 1 } - case 652: + case 653: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3303 +//line sql.y:3307 { yyVAL.empty = struct{}{} } - case 653: + case 654: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3305 +//line sql.y:3309 { yyVAL.empty = struct{}{} } - case 654: + case 655: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3308 +//line sql.y:3312 { yyVAL.str = "" } - case 655: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3310 - { - yyVAL.str = IgnoreStr - } case 656: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3314 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 657: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3316 +//line sql.y:3318 { yyVAL.empty = struct{}{} } case 658: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3318 +//line sql.y:3320 { yyVAL.empty = struct{}{} } case 659: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3320 +//line sql.y:3322 { yyVAL.empty = struct{}{} } case 660: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3322 +//line sql.y:3324 { yyVAL.empty = struct{}{} } case 661: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3324 +//line sql.y:3326 { yyVAL.empty = struct{}{} } case 662: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3326 +//line sql.y:3328 { yyVAL.empty = struct{}{} } case 663: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3328 +//line sql.y:3330 { yyVAL.empty = struct{}{} } case 664: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3330 +//line sql.y:3332 { yyVAL.empty = struct{}{} } case 665: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3332 +//line sql.y:3334 { yyVAL.empty = struct{}{} } case 666: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3335 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3336 { yyVAL.empty = struct{}{} } case 667: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3337 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3339 { yyVAL.empty = struct{}{} } case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3339 +//line sql.y:3341 { yyVAL.empty = struct{}{} } @@ -7544,105 +7554,105 @@ yydefault: } case 670: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3345 +//line sql.y:3347 { yyVAL.empty = struct{}{} } case 671: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3348 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3349 { yyVAL.empty = struct{}{} } case 672: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3350 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3352 { yyVAL.empty = struct{}{} } case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3352 +//line sql.y:3354 { yyVAL.empty = struct{}{} } case 674: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3355 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3356 { - yyVAL.colIdent = ColIdent{} + yyVAL.empty = struct{}{} } case 675: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3357 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3359 { - yyVAL.colIdent = yyDollar[2].colIdent + yyVAL.colIdent = ColIdent{} } case 676: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3361 { - yyVAL.colIdent = yyDollar[1].colIdent + yyVAL.colIdent = yyDollar[2].colIdent } case 677: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3365 { - yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + yyVAL.colIdent = yyDollar[1].colIdent } - case 679: + case 678: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3372 +//line sql.y:3369 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3378 +//line sql.y:3376 { - yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) + yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 681: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3382 + { + yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) + } + case 682: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3386 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 683: + case 684: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3389 +//line sql.y:3393 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 973: + case 974: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3704 +//line sql.y:3708 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 974: + case 975: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3713 +//line sql.y:3717 { decNesting(yylex) } - case 975: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3718 - { - skipToEnd(yylex) - } case 976: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3723 +//line sql.y:3722 { skipToEnd(yylex) } case 977: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:3727 { skipToEnd(yylex) @@ -7653,6 +7663,12 @@ yydefault: { skipToEnd(yylex) } + case 979: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3735 + { + skipToEnd(yylex) + } } goto yystack /* stack new state and value */ } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index af24c2ad70d..f8d4559b63f 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -214,7 +214,7 @@ func skipToEnd(yylex interface{}) { %token THREAD_PRIORITY TIES UNBOUNDED VCPU VISIBLE // Explain tokens -%token FORMAT TREE VITESS +%token FORMAT TREE VITESS TRADITIONAL %type command %type select_statement base_select union_lhs union_rhs @@ -1824,6 +1824,10 @@ explain_format_opt: { $$ = VitessStr } +| FORMAT '=' TRADITIONAL + { + $$ = TraditionalStr + } explain_synonyms: EXPLAIN diff --git a/go/vt/sqlparser/token.go b/go/vt/sqlparser/token.go index 1909ea43c19..5636a11efd5 100644 --- a/go/vt/sqlparser/token.go +++ b/go/vt/sqlparser/token.go @@ -368,6 +368,7 @@ var keywords = map[string]int{ "trailing": UNUSED, "transaction": TRANSACTION, "tree": TREE, + "traditional": TRADITIONAL, "trigger": TRIGGER, "true": TRUE, "truncate": TRUNCATE, From f9adbb359114676beeb35da1ac2a70fd1f0e8524 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Mon, 27 Apr 2020 10:42:18 +0200 Subject: [PATCH 09/12] Add executor unit test Signed-off-by: Andres Taylor --- go/vt/vtgate/plan_executor_test.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/go/vt/vtgate/plan_executor_test.go b/go/vt/vtgate/plan_executor_test.go index d2c0c401c03..222f9709c57 100644 --- a/go/vt/vtgate/plan_executor_test.go +++ b/go/vt/vtgate/plan_executor_test.go @@ -1029,11 +1029,10 @@ func TestPlanExecutorComment(t *testing.T) { "1|foo", ), }, - // TODO (harshit): remove the comments, once set as plan is supported. - //{ - // sql: "/*!50708 set @x = 42 */", - // qr: &sqltypes.Result{}, - //}, + { + sql: "/*!50708 set @x = 42 */", + qr: &sqltypes.Result{}, + }, } for _, tc := range tcs { @@ -1117,6 +1116,21 @@ func TestPlanExecutorOtherRead(t *testing.T) { } } +func TestPlanExecutorExplain(t *testing.T) { + executor, _, _, _ := createExecutorEnvUsing(planAllTheThings) + executor.normalize = true + logChan := QueryLogger.Subscribe("Test") + defer QueryLogger.Unsubscribe(logChan) + + sql := "explain format = vitess select * from user" + result, err := executorExec(executor, sql, map[string]*querypb.BindVariable{}) + require.NoError(t, err) + + resultText := fmt.Sprintf("%v", result.Rows) + utils.MustMatch(t, `[[VARCHAR("Route") VARCHAR("SelectScatter") VARCHAR("TestExecutor") VARCHAR("") VARCHAR("UNKNOWN") VARCHAR("select * from user")]]`, resultText, "") + +} + func TestPlanExecutorOtherAdmin(t *testing.T) { executor, sbc1, sbc2, sbclookup := createExecutorEnvUsing(planAllTheThings) From b0247d3e751e86842d7b972c8d9264bd38ac03d3 Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Mon, 27 Apr 2020 10:49:55 +0200 Subject: [PATCH 10/12] Added EXPLAIN as a new StatementType Signed-off-by: Andres Taylor --- go/vt/sqlparser/analyzer.go | 11 +++++++++-- go/vt/sqlparser/analyzer_test.go | 6 +++--- go/vt/vtgate/executor.go | 4 ++-- .../vtgate/planbuilder/testdata/other_read_cases.txt | 8 ++++---- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/go/vt/sqlparser/analyzer.go b/go/vt/sqlparser/analyzer.go index d3e0bd6daf0..11e6260af18 100644 --- a/go/vt/sqlparser/analyzer.go +++ b/go/vt/sqlparser/analyzer.go @@ -52,6 +52,7 @@ const ( StmtUnknown StmtComment StmtPriv + StmtExplain ) //ASTToStatementType returns a StatementType from an AST stmt @@ -73,8 +74,10 @@ func ASTToStatementType(stmt Statement) StatementType { return StmtDDL case *Use: return StmtUse - case *OtherRead, *OtherAdmin, *Explain: + case *OtherRead, *OtherAdmin: return StmtOther + case *Explain: + return StmtExplain case *Begin: return StmtBegin case *Commit: @@ -158,7 +161,9 @@ func Preview(sql string) StatementType { return StmtShow case "use": return StmtUse - case "analyze", "describe", "desc", "explain", "repair", "optimize": + case "describe", "desc", "explain": + return StmtExplain + case "analyze", "repair", "optimize": return StmtOther case "grant", "revoke": return StmtPriv @@ -198,6 +203,8 @@ func (s StatementType) String() string { return "OTHER" case StmtPriv: return "PRIV" + case StmtExplain: + return "EXPLAIN" default: return "UNKNOWN" } diff --git a/go/vt/sqlparser/analyzer_test.go b/go/vt/sqlparser/analyzer_test.go index 5ec11870b21..cdb3ef6baee 100644 --- a/go/vt/sqlparser/analyzer_test.go +++ b/go/vt/sqlparser/analyzer_test.go @@ -66,9 +66,9 @@ func TestPreview(t *testing.T) { {"show", StmtShow}, {"use", StmtUse}, {"analyze", StmtOther}, - {"describe", StmtOther}, - {"desc", StmtOther}, - {"explain", StmtOther}, + {"describe", StmtExplain}, + {"desc", StmtExplain}, + {"explain", StmtExplain}, {"repair", StmtOther}, {"optimize", StmtOther}, {"grant", StmtPriv}, diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 6b74c39d77b..7e9a2c19ec3 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -219,7 +219,7 @@ func (e *Executor) execute(ctx context.Context, safeSession *SafeSession, sql st return e.handleSet(ctx, safeSession, sql, logStats) case sqlparser.StmtShow: return e.handleShow(ctx, safeSession, sql, bindVars, dest, destKeyspace, destTabletType, logStats) - case sqlparser.StmtOther: + case sqlparser.StmtOther, sqlparser.StmtExplain: return e.handleOther(ctx, safeSession, sql, bindVars, dest, destKeyspace, destTabletType, logStats) case sqlparser.StmtComment: return e.handleComment(sql) @@ -1495,7 +1495,7 @@ func (e *Executor) prepare(ctx context.Context, safeSession *SafeSession, sql st case sqlparser.StmtSelect: return e.handlePrepare(ctx, safeSession, sql, bindVars, destKeyspace, destTabletType, logStats) case sqlparser.StmtDDL, sqlparser.StmtBegin, sqlparser.StmtCommit, sqlparser.StmtRollback, sqlparser.StmtSet, sqlparser.StmtInsert, sqlparser.StmtReplace, sqlparser.StmtUpdate, sqlparser.StmtDelete, - sqlparser.StmtUse, sqlparser.StmtOther, sqlparser.StmtComment: + sqlparser.StmtUse, sqlparser.StmtOther, sqlparser.StmtComment, sqlparser.StmtExplain: return nil, nil case sqlparser.StmtShow: res, err := e.handleShow(ctx, safeSession, sql, bindVars, dest, destKeyspace, destTabletType, logStats) diff --git a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt index 2971f11154f..d183afb081c 100644 --- a/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/other_read_cases.txt @@ -1,7 +1,7 @@ # Explain statement "explain select * from user" { - "QueryType": "OTHER", + "QueryType": "EXPLAIN", "Original": "explain select * from user", "Instructions": { "OperatorType": "Send", @@ -19,7 +19,7 @@ # Explain Vitess statement "explain format=vitess select * from user" { - "QueryType": "OTHER", + "QueryType": "EXPLAIN", "Original": "explain format=vitess select * from user", "Instructions": { "OperatorType": "Rows" @@ -47,7 +47,7 @@ # Describe statement "describe select * from t" { - "QueryType": "OTHER", + "QueryType": "EXPLAIN", "Original": "describe select * from t", "Instructions": { "OperatorType": "Send", @@ -65,7 +65,7 @@ # Desc statement "desc select * from t" { - "QueryType": "OTHER", + "QueryType": "EXPLAIN", "Original": "desc select * from t", "Instructions": { "OperatorType": "Send", From f4bed2176c5e9986f5878c6846f90119f65ad79f Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Tue, 28 Apr 2020 08:07:14 +0200 Subject: [PATCH 11/12] Expanded parser to cover all EXPLAIN variations Signed-off-by: Andres Taylor --- go/vt/sqlparser/ast.go | 10 +- go/vt/sqlparser/constants.go | 1 + go/vt/sqlparser/parse_test.go | 10 +- go/vt/sqlparser/sql.go | 4950 ++++++++++++++------------- go/vt/sqlparser/sql.y | 36 +- go/vt/vtgate/planbuilder/builder.go | 2 +- 6 files changed, 2534 insertions(+), 2475 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 8b30319ce97..9c86eb21c66 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -229,7 +229,7 @@ type ( // Explain represents an EXPLAIN statement Explain struct { - Fmt string + Type string Statement Statement } @@ -1305,8 +1305,12 @@ func (node *Rollback) Format(buf *TrackedBuffer) { // Format formats the node. func (node *Explain) Format(buf *TrackedBuffer) { format := "" - if node.Fmt != "" { - format = "format = " + node.Fmt + " " + switch node.Type { + case "": // do nothing + case AnalyzeStr: + format = AnalyzeStr + " " + default: + format = "format = " + node.Type + " " } buf.astPrintf(node, "explain %s%v", format, node.Statement) } diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index 3b3afaf82eb..d2f0961f43b 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -169,4 +169,5 @@ const ( JSONStr = "json" VitessStr = "vitess" TraditionalStr = "traditional" + AnalyzeStr = "analyze" ) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 4427414ed2f..8b7ff0e991d 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1378,10 +1378,18 @@ var ( }, { input: "desc select * from t", output: "explain select * from t", + }, { + input: "explain t1", + output: "otherread", + }, { + input: "explain t1 col", + output: "otherread", }, { input: "explain select * from t", }, { input: "explain format = traditional select * from t", + }, { + input: "explain analyze select * from t", }, { input: "explain format = tree select * from t", }, { @@ -1623,7 +1631,7 @@ func TestValid(t *testing.T) { tcase.output = tcase.input } tree, err := Parse(tcase.input) - require.NoError(t, err) + require.NoError(t, err, tcase.input) out := String(tree) if diff := cmp.Diff(tcase.output, out); diff != "" { t.Errorf("Parse(%q):\n%s", tcase.input, diff) diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 25fe53e1866..028fe13fa4d 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -826,496 +826,455 @@ var yyExca = [...]int{ 165, 314, 166, 314, -2, 302, - -1, 46, - 1, 976, - 357, 976, - -2, 330, - -1, 47, - 1, 976, - 357, 976, - -2, 329, - -1, 48, - 1, 976, - 357, 976, - -2, 328, -1, 64, - 37, 351, - -2, 359, - -1, 322, - 37, 352, - -2, 364, - -1, 323, 37, 353, - -2, 365, + -2, 361, + -1, 321, + 37, 354, + -2, 366, + -1, 322, + 37, 355, + -2, 367, + -1, 337, + 116, 683, + -2, 679, -1, 338, - 116, 681, - -2, 677, - -1, 339, - 116, 682, - -2, 678, - -1, 408, - 86, 932, + 116, 684, + -2, 680, + -1, 407, + 86, 934, -2, 67, - -1, 409, - 86, 849, + -1, 408, + 86, 851, -2, 68, - -1, 414, - 86, 817, - -2, 643, - -1, 416, - 86, 880, + -1, 413, + 86, 819, -2, 645, - -1, 600, + -1, 415, + 86, 882, + -2, 647, + -1, 602, 5, 34, - -2, 331, - -1, 725, - 1, 389, - 5, 389, - 12, 389, - 13, 389, - 14, 389, - 15, 389, - 17, 389, - 19, 389, - 30, 389, - 31, 389, - 44, 389, - 45, 389, - 46, 389, - 47, 389, - 48, 389, - 50, 389, - 51, 389, - 54, 389, - 55, 389, - 57, 389, - 58, 389, - 357, 389, - -2, 407, - -1, 728, + -2, 332, + -1, 727, + 1, 391, + 5, 391, + 12, 391, + 13, 391, + 14, 391, + 15, 391, + 17, 391, + 19, 391, + 30, 391, + 31, 391, + 44, 391, + 45, 391, + 46, 391, + 47, 391, + 48, 391, + 50, 391, + 51, 391, + 54, 391, + 55, 391, + 57, 391, + 58, 391, + 357, 391, + -2, 409, + -1, 730, 55, 49, 57, 49, -2, 53, - -1, 888, - 116, 684, - -2, 680, - -1, 1123, + -1, 890, + 116, 686, + -2, 682, + -1, 1125, 5, 35, - -2, 475, - -1, 1154, + -2, 477, + -1, 1156, 5, 34, - -2, 616, - -1, 1401, + -2, 618, + -1, 1403, 5, 35, - -2, 617, - -1, 1454, - 5, 34, -2, 619, - -1, 1529, + -1, 1456, + 5, 34, + -2, 621, + -1, 1531, 5, 35, - -2, 620, + -2, 622, } const yyPrivate = 57344 -const yyLast = 16583 +const yyLast = 16948 var yyAct = [...]int{ - 338, 1553, 1563, 1361, 1519, 1157, 1004, 343, 1434, 1250, - 1467, 579, 1175, 1421, 1302, 356, 1335, 1158, 1303, 369, - 680, 1299, 60, 977, 1047, 1000, 1201, 1013, 1003, 568, - 1309, 1315, 827, 413, 83, 1274, 1227, 913, 273, 1115, - 293, 273, 920, 679, 3, 727, 846, 1218, 741, 979, - 964, 943, 890, 324, 311, 1017, 622, 721, 615, 609, - 537, 722, 740, 302, 407, 632, 1027, 402, 1043, 975, - 273, 83, 399, 730, 538, 273, 341, 273, 957, 695, - 853, 1101, 410, 271, 59, 301, 7, 6, 5, 557, - 1066, 1556, 694, 1540, 1551, 1527, 64, 1548, 310, 1362, - 1539, 1291, 1526, 1393, 1065, 542, 269, 265, 266, 267, - 1329, 303, 304, 305, 306, 401, 261, 309, 994, 259, - 539, 263, 541, 330, 66, 67, 68, 69, 70, 1330, - 1331, 995, 996, 597, 85, 86, 87, 1033, 308, 307, - 336, 85, 86, 87, 1209, 1064, 1493, 645, 644, 654, - 655, 647, 648, 649, 650, 651, 652, 653, 646, 1252, - 26, 656, 55, 29, 30, 1026, 381, 577, 387, 388, - 385, 386, 384, 383, 382, 1189, 1424, 742, 1188, 743, - 592, 1190, 389, 390, 593, 590, 591, 1034, 85, 86, - 87, 1384, 596, 923, 1382, 1061, 1058, 1059, 299, 1057, - 816, 585, 586, 595, 815, 1254, 813, 1550, 1547, 574, - 57, 576, 1253, 1520, 1249, 262, 958, 1512, 1018, 85, - 86, 87, 1571, 1567, 1468, 1176, 1178, 268, 558, 854, - 855, 856, 1068, 1071, 544, 263, 1255, 260, 820, 1470, - 814, 817, 1476, 573, 575, 645, 644, 654, 655, 647, - 648, 649, 650, 651, 652, 653, 646, 1275, 1325, 656, - 273, 549, 550, 804, 1324, 273, 582, 559, 1246, 1063, - 1020, 273, 277, 547, 1248, 1020, 276, 273, 566, 280, - 1323, 572, 83, 540, 264, 990, 83, 287, 83, 1078, - 1501, 1062, 1077, 1404, 83, 1260, 1277, 1132, 668, 669, - 1116, 85, 86, 87, 1177, 548, 1185, 1469, 1142, 1129, - 556, 1109, 861, 736, 636, 564, 563, 1525, 1494, 1001, - 1237, 285, 565, 1034, 85, 86, 87, 292, 656, 571, - 1279, 1067, 1283, 83, 1278, 1565, 1276, 617, 1566, 646, - 1564, 1281, 656, 554, 600, 847, 1069, 1477, 1475, 858, - 1280, 1233, 1234, 1235, 278, 841, 851, 560, 561, 562, - 618, 581, 631, 1282, 1284, 85, 86, 87, 570, 1510, - 1019, 605, 606, 583, 1247, 1019, 1245, 1348, 623, 860, - 1485, 289, 281, 1313, 290, 291, 297, 603, 601, 602, - 282, 284, 294, 1128, 279, 296, 295, 273, 273, 273, - 536, 1020, 744, 668, 669, 73, 83, 897, 551, 56, - 552, 604, 83, 553, 619, 668, 669, 410, 859, 944, - 1236, 895, 896, 894, 1293, 1241, 1238, 1229, 1239, 1232, - 848, 1228, 85, 86, 87, 1230, 1231, 630, 629, 944, - 842, 1139, 719, 74, 728, 806, 1023, 630, 629, 1240, - 569, 1207, 1024, 584, 631, 587, 630, 629, 1106, 1107, - 1108, 598, 698, 700, 631, 704, 706, 720, 709, 1572, - 739, 729, 1515, 631, 734, 697, 699, 701, 703, 705, - 707, 708, 608, 626, 1531, 1430, 629, 670, 671, 672, - 673, 674, 675, 676, 677, 649, 650, 651, 652, 653, - 646, 1019, 631, 656, 543, 1429, 1016, 1014, 1222, 1015, - 258, 1221, 1573, 1210, 1533, 621, 1012, 1018, 1127, 1511, - 1126, 645, 644, 654, 655, 647, 648, 649, 650, 651, - 652, 653, 646, 57, 1448, 656, 1427, 273, 1219, 630, - 629, 802, 83, 1088, 805, 893, 807, 273, 273, 83, - 83, 83, 630, 629, 832, 273, 631, 608, 273, 1295, - 1482, 273, 825, 826, 1481, 273, 1344, 83, 1396, 631, - 1473, 1549, 83, 83, 83, 273, 83, 83, 396, 397, - 1535, 608, 752, 1021, 545, 546, 83, 83, 880, 882, - 883, 1312, 808, 809, 881, 1395, 1399, 831, 829, 24, - 818, 1390, 1102, 401, 1300, 345, 824, 1312, 645, 644, - 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 837, 83, 656, 864, 865, 85, 86, 87, 273, 915, - 821, 85, 86, 87, 83, 645, 644, 654, 655, 647, - 648, 649, 650, 651, 652, 653, 646, 961, 887, 656, - 925, 359, 358, 361, 362, 363, 364, 914, 61, 891, - 360, 365, 315, 85, 86, 87, 916, 1192, 1484, 886, - 888, 1352, 866, 876, 961, 630, 629, 875, 83, 645, - 644, 654, 655, 647, 648, 649, 650, 651, 652, 653, - 646, 1193, 631, 656, 993, 932, 935, 1473, 1523, 884, - 873, 945, 1473, 608, 1473, 1502, 1473, 1472, 1145, 803, - 948, 83, 83, 1419, 1418, 960, 810, 811, 812, 273, - 1406, 608, 1403, 608, 1354, 1353, 927, 273, 273, 1350, - 1351, 273, 273, 1144, 830, 273, 273, 273, 83, 834, - 835, 836, 961, 838, 839, 917, 918, 1350, 1349, 410, - 873, 83, 538, 843, 844, 731, 953, 954, 873, 608, - 961, 608, 1005, 874, 959, 966, 969, 970, 971, 967, - 829, 968, 972, 925, 608, 1316, 1317, 986, 1102, 889, - 751, 750, 898, 899, 900, 901, 902, 903, 904, 905, - 906, 907, 908, 909, 910, 911, 912, 984, 862, 731, - 985, 992, 991, 988, 987, 273, 83, 983, 83, 873, - 1070, 732, 1008, 819, 273, 273, 273, 273, 273, 737, - 273, 273, 26, 1312, 273, 83, 1049, 1029, 1030, 1031, - 1032, 57, 1541, 1436, 1028, 26, 1411, 949, 317, 1048, - 1340, 273, 1196, 1040, 1041, 1042, 273, 1044, 273, 273, - 1052, 1453, 1039, 273, 1038, 733, 732, 735, 1251, 1072, - 1073, 1074, 1075, 1076, 1437, 1079, 1080, 1045, 1046, 1081, - 1051, 1558, 57, 887, 1554, 273, 1085, 928, 929, 1316, - 1317, 934, 937, 938, 339, 57, 1083, 1342, 57, 1319, - 1300, 1084, 1223, 852, 1093, 888, 823, 1322, 1089, 26, - 733, 1321, 731, 1035, 1036, 1037, 952, 1169, 1167, 955, - 956, 1269, 1170, 1168, 891, 1166, 1165, 1171, 84, 970, - 971, 1094, 274, 1152, 1545, 274, 1095, 1538, 1153, 1105, - 1103, 645, 644, 654, 655, 647, 648, 649, 650, 651, - 652, 653, 646, 1259, 1104, 656, 666, 1111, 1090, 57, - 620, 1543, 1100, 1099, 274, 84, 940, 1214, 325, 274, - 610, 274, 273, 273, 273, 273, 273, 1206, 1159, 941, - 749, 326, 611, 1053, 273, 1055, 325, 273, 624, 625, - 328, 273, 327, 567, 1517, 273, 1516, 1451, 1204, 326, - 1198, 1397, 1082, 1432, 1138, 1054, 322, 323, 328, 822, - 327, 1154, 1191, 725, 83, 966, 969, 970, 971, 967, - 1194, 968, 972, 1197, 974, 1005, 312, 1202, 1202, 1160, - 927, 607, 1163, 1172, 1161, 1162, 1098, 1164, 318, 319, - 1180, 1263, 1373, 313, 1097, 61, 1112, 1113, 1114, 1372, - 1102, 594, 1186, 1133, 1203, 1560, 1559, 65, 1130, 845, - 627, 1560, 83, 83, 1182, 1498, 1425, 857, 63, 1213, - 58, 1215, 1216, 1217, 1, 1181, 1552, 1183, 1363, 1184, - 1433, 1199, 1200, 1060, 1518, 1466, 1334, 1011, 1117, 1002, - 72, 535, 83, 71, 1509, 840, 580, 1220, 1010, 1009, - 1474, 1423, 1022, 1208, 1025, 1242, 1341, 273, 645, 644, - 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 83, 1205, 656, 1514, 757, 1120, 1121, 755, 756, 754, - 1226, 1266, 759, 758, 753, 286, 405, 973, 914, 745, - 1257, 1258, 1050, 1136, 628, 75, 1244, 1243, 1056, 850, - 283, 588, 1261, 589, 274, 288, 664, 1096, 1187, 274, - 411, 404, 1268, 1267, 1296, 274, 83, 83, 1301, 1292, - 1159, 274, 1307, 863, 1286, 1285, 84, 1211, 1212, 614, - 84, 1371, 84, 1304, 1262, 1093, 888, 1137, 84, 691, - 83, 654, 655, 647, 648, 649, 650, 651, 652, 653, - 646, 942, 344, 656, 83, 1320, 83, 83, 879, 1306, - 1202, 1202, 1333, 357, 1327, 1005, 354, 1005, 355, 868, - 1326, 1151, 638, 342, 334, 1347, 724, 84, 717, 965, - 1225, 963, 1332, 962, 273, 1337, 1338, 1339, 400, 1318, - 1314, 723, 872, 321, 1392, 1492, 320, 1345, 1346, 1311, - 939, 45, 300, 332, 273, 892, 28, 62, 329, 1256, - 83, 20, 1364, 83, 83, 83, 273, 1270, 1271, 19, - 18, 83, 22, 17, 1328, 16, 15, 555, 32, 1355, - 1287, 1288, 1266, 1289, 1290, 23, 14, 13, 12, 11, - 10, 274, 274, 274, 9, 1297, 1298, 1369, 1370, 1358, - 84, 1356, 8, 4, 599, 21, 84, 314, 25, 2, - 0, 1368, 0, 0, 1380, 0, 1357, 0, 1359, 644, - 654, 655, 647, 648, 649, 650, 651, 652, 653, 646, - 1159, 0, 656, 1398, 0, 0, 0, 0, 0, 867, - 1408, 0, 725, 83, 1407, 0, 725, 0, 0, 1194, - 725, 83, 1377, 1378, 1005, 1379, 0, 1343, 1381, 0, - 1383, 0, 0, 0, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 83, 0, 647, 648, 649, 650, 651, - 652, 653, 646, 0, 1435, 656, 0, 0, 0, 1441, - 0, 0, 1417, 0, 0, 0, 0, 0, 0, 0, - 924, 926, 0, 0, 1439, 0, 0, 0, 0, 0, - 0, 0, 0, 1420, 83, 83, 0, 83, 0, 0, - 1375, 0, 83, 0, 83, 83, 83, 273, 1452, 1304, - 83, 274, 0, 0, 0, 1460, 84, 1461, 1463, 1464, - 0, 274, 274, 84, 84, 84, 1471, 83, 273, 274, - 1465, 1478, 274, 0, 0, 274, 1454, 1447, 0, 274, - 1486, 84, 1479, 0, 1480, 0, 84, 84, 84, 274, - 84, 84, 1459, 0, 0, 0, 0, 0, 1499, 1508, - 84, 84, 0, 1304, 83, 0, 0, 1507, 1506, 0, - 725, 0, 0, 1487, 0, 83, 83, 1426, 0, 1428, - 0, 0, 1522, 1521, 0, 0, 1435, 1005, 0, 1500, - 892, 0, 83, 0, 1528, 84, 1159, 0, 0, 0, - 0, 0, 274, 273, 0, 0, 1440, 0, 84, 0, - 0, 83, 0, 1431, 0, 370, 54, 0, 1442, 1443, - 1444, 1445, 1446, 1537, 0, 0, 1449, 1450, 0, 0, - 1542, 1544, 83, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1557, 1546, 612, 616, 1532, 0, - 0, 0, 84, 1568, 0, 0, 0, 725, 725, 725, - 725, 725, 0, 0, 0, 0, 0, 0, 0, 637, - 54, 0, 725, 0, 0, 0, 0, 0, 316, 0, - 725, 1389, 0, 0, 0, 84, 84, 0, 0, 0, - 0, 0, 0, 274, 0, 0, 0, 0, 0, 0, - 0, 274, 274, 0, 681, 274, 274, 0, 0, 274, - 274, 274, 84, 692, 0, 0, 0, 1118, 0, 0, - 0, 1119, 1388, 0, 0, 84, 0, 0, 1123, 1124, - 1125, 0, 0, 0, 0, 1131, 0, 0, 1134, 1135, - 0, 0, 0, 0, 0, 0, 1141, 0, 0, 0, - 1143, 0, 0, 1146, 1147, 1148, 1149, 1150, 0, 645, - 644, 654, 655, 647, 648, 649, 650, 651, 652, 653, - 646, 0, 0, 656, 0, 0, 1174, 0, 0, 274, - 84, 0, 84, 0, 0, 0, 1561, 0, 274, 274, - 274, 274, 274, 1387, 274, 274, 0, 0, 274, 84, - 645, 644, 654, 655, 647, 648, 649, 650, 651, 652, - 653, 646, 0, 0, 656, 274, 0, 0, 0, 0, - 274, 0, 274, 274, 0, 0, 0, 274, 0, 0, - 0, 0, 0, 0, 640, 0, 643, 0, 0, 0, - 0, 0, 657, 658, 659, 660, 661, 662, 663, 274, - 641, 642, 639, 645, 644, 654, 655, 647, 648, 649, - 650, 651, 652, 653, 646, 0, 0, 656, 0, 0, - 0, 645, 644, 654, 655, 647, 648, 649, 650, 651, - 652, 653, 646, 0, 0, 656, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 578, 0, 0, - 0, 578, 0, 578, 833, 0, 0, 0, 0, 578, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, - 0, 1272, 1273, 0, 0, 0, 0, 0, 849, 0, - 0, 0, 54, 0, 0, 0, 274, 274, 274, 274, - 274, 0, 0, 0, 0, 0, 0, 0, 274, 0, - 0, 274, 0, 665, 0, 274, 667, 0, 0, 274, - 0, 0, 0, 877, 878, 645, 644, 654, 655, 647, - 648, 649, 650, 651, 652, 653, 646, 0, 84, 656, - 0, 368, 0, 0, 678, 0, 682, 683, 684, 685, - 686, 687, 688, 689, 690, 0, 693, 696, 696, 696, - 702, 696, 696, 702, 696, 710, 711, 712, 713, 714, - 715, 716, 0, 726, 0, 82, 681, 0, 0, 930, - 931, 0, 0, 0, 0, 0, 84, 84, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 412, 0, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1374, 0, - 0, 274, 0, 0, 0, 1376, 0, 0, 999, 0, - 0, 0, 0, 0, 84, 0, 1385, 1386, 0, 0, - 26, 27, 55, 29, 30, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1400, 1401, 1402, 46, - 1405, 0, 0, 0, 31, 51, 52, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1416, 0, 0, - 84, 84, 0, 0, 0, 0, 40, 0, 0, 0, - 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84, 0, 0, 578, 0, 0, - 0, 0, 0, 0, 578, 578, 578, 0, 84, 0, - 84, 84, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 578, 0, 0, 0, 0, 578, 578, 578, - 0, 578, 578, 1091, 1092, 0, 616, 0, 274, 0, - 0, 578, 578, 33, 34, 36, 35, 38, 0, 53, - 0, 0, 0, 0, 1462, 0, 0, 0, 274, 0, - 0, 0, 0, 0, 84, 0, 0, 84, 84, 84, - 274, 0, 39, 47, 48, 84, 0, 49, 50, 37, - 0, 0, 0, 1488, 1489, 1490, 1491, 0, 1495, 0, - 1496, 1497, 0, 41, 42, 0, 43, 44, 0, 1122, - 0, 0, 1503, 412, 1504, 1505, 0, 412, 0, 412, - 0, 0, 0, 0, 0, 412, 0, 0, 1140, 0, - 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1524, 0, 0, 0, 0, 682, 0, - 0, 1529, 0, 0, 0, 0, 0, 84, 0, 0, - 0, 0, 0, 0, 634, 84, 0, 0, 0, 1534, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 0, 0, 0, 0, 0, 0, 84, 0, 56, - 0, 0, 976, 0, 0, 0, 726, 0, 0, 0, - 726, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1569, 1570, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 84, - 0, 84, 0, 0, 0, 0, 84, 412, 84, 84, - 84, 274, 0, 746, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 274, 0, 0, 0, 0, 0, 0, 0, - 0, 578, 0, 578, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1264, 0, 0, 0, - 578, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 337, 1555, 1363, 1565, 1252, 1521, 1159, 342, 1436, 1469, + 355, 1177, 1304, 368, 1337, 681, 3, 682, 979, 1305, + 1002, 1160, 578, 1301, 60, 1049, 567, 1423, 1015, 1006, + 1203, 1317, 1035, 1005, 83, 304, 915, 1311, 273, 412, + 293, 273, 829, 1276, 1229, 1117, 273, 310, 1019, 848, + 1220, 922, 743, 981, 1103, 966, 977, 724, 945, 892, + 723, 624, 611, 617, 323, 925, 1045, 309, 742, 634, + 273, 83, 959, 406, 537, 273, 536, 273, 340, 696, + 732, 398, 855, 305, 59, 7, 308, 697, 6, 64, + 401, 5, 1558, 409, 1495, 647, 646, 656, 657, 649, + 650, 651, 652, 653, 654, 655, 648, 1542, 1553, 658, + 1529, 1068, 1550, 1364, 1541, 1528, 576, 66, 67, 68, + 69, 70, 1293, 1395, 541, 1067, 1331, 380, 329, 386, + 387, 384, 385, 383, 382, 381, 85, 86, 87, 556, + 1332, 1333, 996, 388, 389, 26, 596, 52, 29, 30, + 1211, 269, 265, 266, 267, 85, 86, 87, 261, 1191, + 307, 259, 1190, 263, 306, 1192, 1066, 997, 998, 744, + 591, 745, 1028, 1254, 592, 589, 590, 1426, 85, 86, + 87, 1029, 1036, 1386, 1384, 299, 818, 584, 585, 594, + 1256, 815, 817, 1552, 1549, 57, 1522, 1251, 960, 1569, + 1514, 776, 1020, 581, 573, 595, 575, 1573, 557, 1470, + 543, 263, 1277, 1257, 822, 1478, 1063, 1060, 1061, 1248, + 1059, 806, 1327, 1022, 1472, 1250, 1255, 819, 816, 1178, + 1180, 856, 857, 858, 1326, 1325, 539, 1022, 572, 574, + 546, 276, 264, 1080, 670, 671, 1079, 1503, 1406, 1262, + 1187, 1279, 1144, 1070, 1073, 1003, 1111, 262, 863, 738, + 273, 548, 549, 638, 563, 273, 1496, 558, 85, 86, + 87, 273, 268, 648, 553, 658, 658, 273, 565, 260, + 849, 571, 83, 764, 992, 1281, 83, 1285, 83, 1280, + 1065, 1278, 1471, 1134, 83, 860, 1283, 73, 580, 631, + 853, 83, 1512, 633, 1487, 1282, 1131, 843, 1179, 1315, + 582, 1567, 1064, 1036, 1568, 633, 1566, 602, 1284, 1286, + 1479, 1477, 777, 1021, 570, 1249, 746, 1247, 606, 1295, + 1527, 620, 83, 946, 1025, 74, 569, 1021, 619, 550, + 1026, 551, 607, 608, 552, 790, 793, 794, 795, 796, + 797, 798, 1069, 799, 800, 801, 802, 803, 778, 779, + 780, 781, 762, 763, 791, 850, 765, 1071, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 782, 783, + 784, 785, 786, 787, 788, 789, 623, 605, 625, 950, + 603, 1239, 844, 604, 53, 808, 273, 273, 273, 670, + 671, 1209, 583, 1022, 586, 83, 621, 559, 560, 561, + 597, 83, 670, 671, 899, 85, 86, 87, 568, 85, + 86, 87, 1235, 1236, 1237, 1517, 628, 409, 897, 898, + 896, 946, 542, 1141, 85, 86, 87, 792, 647, 646, + 656, 657, 649, 650, 651, 652, 653, 654, 655, 648, + 1533, 1574, 658, 722, 535, 1432, 1108, 1109, 1110, 632, + 631, 699, 701, 703, 705, 707, 709, 710, 1350, 700, + 702, 57, 706, 708, 1431, 711, 633, 1224, 741, 731, + 736, 1223, 610, 895, 651, 652, 653, 654, 655, 648, + 1212, 1238, 658, 1118, 1575, 1535, 1243, 1240, 1231, 1241, + 1234, 258, 1230, 1021, 1513, 1450, 1232, 1233, 1018, 1016, + 1429, 1017, 544, 545, 85, 86, 87, 1221, 1014, 1020, + 1242, 647, 646, 656, 657, 649, 650, 651, 652, 653, + 654, 655, 648, 1090, 834, 658, 273, 1475, 1551, 610, + 804, 83, 1484, 807, 1483, 809, 273, 273, 83, 83, + 83, 632, 631, 1346, 273, 1537, 610, 273, 1297, 24, + 273, 827, 828, 1023, 273, 1314, 83, 57, 633, 395, + 396, 83, 83, 83, 273, 83, 83, 649, 650, 651, + 652, 653, 654, 655, 648, 83, 83, 658, 642, 1401, + 645, 1475, 1525, 833, 1475, 610, 659, 660, 661, 662, + 663, 664, 665, 831, 643, 644, 641, 647, 646, 656, + 657, 649, 650, 651, 652, 653, 654, 655, 648, 1271, + 927, 658, 314, 83, 1486, 882, 884, 885, 1475, 1504, + 273, 883, 1104, 85, 86, 87, 83, 917, 823, 647, + 646, 656, 657, 649, 650, 651, 652, 653, 654, 655, + 648, 1302, 1130, 658, 1314, 893, 986, 805, 733, 916, + 1354, 889, 1475, 1474, 812, 813, 814, 868, 918, 1421, + 1420, 963, 1129, 862, 1128, 866, 867, 963, 890, 1195, + 83, 888, 832, 1408, 610, 1405, 610, 836, 837, 838, + 877, 840, 841, 632, 631, 1356, 1355, 934, 937, 609, + 929, 845, 846, 947, 995, 886, 632, 631, 1324, 1147, + 633, 1146, 861, 83, 83, 358, 357, 360, 361, 362, + 363, 273, 875, 633, 359, 364, 734, 632, 631, 273, + 273, 632, 631, 273, 273, 1352, 1353, 273, 273, 273, + 83, 85, 86, 87, 633, 1194, 1352, 1351, 633, 919, + 920, 930, 931, 83, 537, 936, 939, 940, 875, 610, + 963, 610, 409, 927, 610, 753, 752, 955, 956, 61, + 735, 962, 737, 733, 26, 1007, 1104, 864, 831, 821, + 954, 739, 1543, 957, 958, 1438, 1030, 1413, 1050, 987, + 1253, 1398, 1342, 989, 1318, 1319, 316, 1439, 963, 1198, + 1037, 1038, 1039, 985, 1046, 1041, 876, 273, 83, 994, + 83, 875, 1072, 993, 734, 26, 273, 273, 273, 273, + 273, 1314, 273, 273, 57, 338, 273, 83, 990, 1051, + 1010, 647, 646, 656, 657, 649, 650, 651, 652, 653, + 654, 655, 648, 273, 1455, 658, 57, 1040, 273, 1053, + 273, 273, 875, 1560, 1556, 273, 1344, 1323, 735, 84, + 733, 1321, 1302, 274, 1225, 57, 274, 1047, 1048, 854, + 825, 274, 1168, 1167, 1092, 1087, 1547, 273, 968, 971, + 972, 973, 969, 622, 970, 974, 889, 1171, 1318, 1319, + 1540, 1119, 1172, 1169, 1261, 274, 84, 1545, 1170, 1102, + 274, 1101, 274, 890, 1216, 26, 1095, 751, 566, 1208, + 893, 647, 646, 656, 657, 649, 650, 651, 652, 653, + 654, 655, 648, 612, 1055, 658, 1057, 942, 1096, 1154, + 1519, 1097, 1399, 1106, 1155, 613, 1173, 1105, 972, 973, + 943, 1518, 1107, 1084, 1031, 1032, 1033, 1034, 1453, 1206, + 1200, 1434, 1056, 824, 976, 57, 1113, 317, 318, 311, + 1042, 1043, 1044, 1100, 273, 273, 273, 273, 273, 1375, + 1161, 1099, 312, 61, 1374, 1156, 273, 1265, 1104, 273, + 593, 1562, 1561, 273, 1135, 1132, 847, 273, 629, 1122, + 1123, 1562, 324, 1500, 929, 968, 971, 972, 973, 969, + 1427, 970, 974, 1140, 1193, 325, 83, 1138, 859, 63, + 869, 65, 626, 627, 327, 1199, 326, 58, 1, 1204, + 1204, 1554, 1163, 1164, 1162, 1166, 1365, 1165, 1007, 1435, + 1174, 1062, 1520, 1468, 1336, 1196, 1182, 1013, 1004, 72, + 1183, 534, 1185, 1184, 1186, 71, 1511, 842, 1188, 579, + 1205, 1012, 1011, 1476, 83, 83, 1215, 1425, 1217, 1218, + 1219, 1024, 1210, 1027, 1213, 1214, 1201, 1202, 1343, 1207, + 1516, 926, 928, 759, 757, 758, 756, 761, 335, 760, + 755, 286, 404, 975, 83, 274, 747, 1052, 630, 75, + 274, 1246, 1222, 1245, 1228, 1058, 274, 852, 283, 273, + 587, 1397, 274, 324, 588, 1244, 288, 84, 666, 1098, + 1189, 84, 83, 84, 410, 403, 325, 1309, 865, 84, + 616, 1373, 1264, 321, 322, 327, 84, 326, 1139, 693, + 916, 944, 343, 881, 1268, 1259, 1260, 356, 353, 354, + 344, 647, 646, 656, 657, 649, 650, 651, 652, 653, + 654, 655, 648, 870, 1153, 658, 640, 84, 83, 83, + 1270, 1303, 1161, 1294, 1269, 341, 1287, 1298, 333, 1306, + 726, 1227, 719, 1308, 1288, 967, 965, 964, 399, 1320, + 1316, 725, 83, 874, 890, 320, 1394, 1095, 1494, 319, + 941, 45, 598, 301, 28, 62, 83, 1322, 83, 83, + 1258, 328, 1204, 1204, 20, 19, 18, 22, 1329, 17, + 1392, 16, 369, 51, 1313, 15, 554, 1349, 1007, 1328, + 1007, 274, 274, 274, 32, 23, 273, 1335, 1339, 1334, + 84, 14, 1340, 1341, 1347, 1348, 84, 13, 12, 1330, + 11, 10, 9, 8, 4, 601, 273, 21, 313, 25, + 2, 0, 83, 0, 1366, 83, 83, 83, 273, 0, + 0, 0, 0, 83, 51, 1358, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, + 1359, 0, 1361, 0, 0, 1268, 1371, 1372, 647, 646, + 656, 657, 649, 650, 651, 652, 653, 654, 655, 648, + 0, 0, 658, 0, 0, 0, 0, 1382, 1120, 0, + 0, 0, 1121, 0, 0, 0, 0, 0, 0, 1125, + 1126, 1127, 1161, 0, 0, 0, 1133, 1400, 0, 1136, + 1137, 0, 0, 0, 0, 83, 1410, 1143, 1409, 0, + 0, 1145, 0, 83, 1148, 1149, 1150, 1151, 1152, 0, + 0, 0, 0, 0, 0, 0, 0, 1007, 83, 0, + 0, 274, 0, 0, 1196, 83, 84, 1176, 0, 0, + 0, 274, 274, 84, 84, 84, 0, 1419, 0, 274, + 0, 1443, 274, 0, 1428, 274, 1430, 1437, 0, 274, + 0, 84, 0, 1441, 0, 0, 84, 84, 84, 274, + 84, 84, 0, 0, 0, 0, 83, 83, 0, 83, + 84, 84, 0, 1442, 83, 1306, 83, 83, 83, 273, + 1456, 1454, 83, 0, 672, 673, 674, 675, 676, 677, + 678, 679, 0, 0, 0, 0, 1473, 1467, 1480, 83, + 273, 1462, 1449, 1463, 1465, 1466, 0, 0, 84, 1481, + 0, 1482, 0, 0, 0, 274, 0, 1461, 0, 1379, + 1380, 84, 1381, 0, 0, 1383, 1488, 1385, 1501, 1306, + 0, 1510, 0, 1502, 1433, 0, 83, 0, 1509, 1508, + 668, 0, 0, 0, 0, 0, 0, 83, 83, 0, + 0, 0, 0, 0, 577, 1523, 0, 0, 577, 0, + 577, 0, 0, 0, 83, 84, 577, 1530, 1161, 1437, + 1007, 0, 1274, 1275, 51, 273, 0, 1524, 0, 0, + 1422, 0, 0, 83, 0, 0, 0, 0, 51, 0, + 1539, 0, 1391, 0, 0, 0, 0, 727, 84, 84, + 0, 0, 1546, 1544, 83, 0, 274, 0, 0, 667, + 0, 0, 669, 0, 274, 274, 1559, 0, 274, 274, + 0, 0, 274, 274, 274, 84, 1570, 0, 0, 0, + 0, 1548, 0, 0, 0, 0, 0, 0, 84, 0, + 680, 0, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 0, 695, 698, 698, 698, 704, 698, 698, 704, + 698, 712, 713, 714, 715, 716, 717, 718, 0, 728, + 647, 646, 656, 657, 649, 650, 651, 652, 653, 654, + 655, 648, 0, 0, 658, 1390, 0, 0, 0, 0, + 0, 0, 274, 84, 0, 84, 0, 0, 0, 0, + 0, 274, 274, 274, 274, 274, 0, 274, 274, 0, + 0, 274, 84, 0, 0, 0, 0, 0, 0, 1376, + 0, 0, 0, 0, 0, 0, 1378, 0, 274, 0, + 0, 0, 0, 274, 0, 274, 274, 1387, 1388, 0, + 274, 0, 0, 0, 0, 0, 0, 367, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1402, 1403, 1404, + 0, 1407, 274, 647, 646, 656, 657, 649, 650, 651, + 652, 653, 654, 655, 648, 0, 0, 658, 1418, 891, + 0, 82, 900, 901, 902, 903, 904, 905, 906, 907, + 908, 909, 910, 911, 912, 913, 914, 656, 657, 649, + 650, 651, 652, 653, 654, 655, 648, 0, 0, 658, + 85, 86, 87, 577, 0, 0, 0, 0, 411, 0, + 577, 577, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 729, 0, 0, 0, 951, 577, 0, + 0, 0, 894, 577, 577, 577, 0, 577, 577, 274, + 274, 274, 274, 274, 0, 0, 0, 577, 577, 0, + 0, 274, 0, 277, 274, 1464, 0, 0, 274, 0, + 280, 271, 274, 0, 0, 0, 0, 0, 287, 300, + 646, 656, 657, 649, 650, 651, 652, 653, 654, 655, + 648, 84, 0, 658, 1490, 1491, 1492, 1493, 0, 1497, + 0, 1498, 1499, 400, 0, 0, 0, 0, 538, 0, + 540, 0, 285, 1505, 0, 1506, 1507, 0, 292, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 727, + 0, 0, 0, 727, 0, 0, 0, 727, 1389, 84, + 84, 0, 51, 0, 1526, 278, 0, 0, 0, 0, + 0, 0, 1531, 0, 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1294, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 274, 0, 0, - 726, 0, 0, 0, 0, 84, 0, 0, 0, 0, - 0, 0, 0, 1110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 412, 0, 0, 0, 0, 0, 0, - 412, 412, 412, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, - 0, 0, 0, 412, 412, 412, 0, 412, 412, 0, - 0, 0, 0, 0, 0, 0, 0, 412, 412, 0, - 0, 0, 0, 1155, 1156, 0, 0, 726, 726, 726, - 726, 726, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 976, 0, 1179, 0, 0, 0, 0, 0, - 726, 0, 869, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 634, 0, 0, 412, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1394, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 681, - 0, 0, 0, 0, 0, 0, 0, 1409, 0, 0, - 1410, 0, 0, 1412, 0, 774, 0, 0, 0, 919, - 0, 0, 0, 0, 0, 0, 0, 0, 578, 0, - 0, 0, 0, 0, 0, 946, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 950, 951, 0, 0, 0, 578, 0, 0, - 0, 0, 0, 0, 0, 0, 1438, 681, 0, 0, - 0, 0, 0, 0, 0, 613, 0, 0, 0, 412, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 412, 0, 0, 0, 0, 762, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 272, 0, 0, 298, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1305, - 0, 54, 0, 0, 0, 0, 775, 0, 0, 0, - 0, 0, 333, 0, 0, 403, 0, 412, 0, 412, - 272, 0, 272, 0, 0, 0, 0, 0, 0, 788, - 791, 792, 793, 794, 795, 796, 412, 797, 798, 799, - 800, 801, 776, 777, 778, 779, 760, 761, 789, 0, - 763, 0, 764, 765, 766, 767, 768, 769, 770, 771, - 772, 773, 780, 781, 782, 783, 784, 785, 786, 787, - 0, 0, 0, 412, 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, 0, 0, 0, 0, 0, 0, - 0, 790, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1391, 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, 1413, - 1414, 1415, 946, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1536, 0, 289, 281, 0, 290, 291, 297, 0, 0, + 0, 282, 284, 294, 274, 279, 296, 295, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, + 0, 978, 0, 0, 0, 728, 0, 0, 0, 728, + 0, 0, 0, 1571, 1572, 0, 647, 646, 656, 657, + 649, 650, 651, 652, 653, 654, 655, 648, 0, 411, + 658, 0, 0, 411, 0, 411, 1114, 1115, 1116, 0, + 0, 411, 0, 84, 84, 0, 0, 0, 599, 647, + 646, 656, 657, 649, 650, 651, 652, 653, 654, 655, + 648, 0, 0, 658, 0, 0, 0, 84, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 727, 0, 636, + 577, 84, 577, 84, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 547, 0, 0, 0, 894, 555, 577, + 0, 0, 0, 0, 562, 0, 0, 0, 0, 0, + 564, 274, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, + 0, 274, 0, 0, 0, 0, 0, 84, 0, 0, + 84, 84, 84, 274, 0, 0, 0, 0, 84, 728, + 0, 0, 411, 0, 0, 0, 0, 0, 748, 0, + 0, 0, 1112, 0, 727, 727, 727, 727, 727, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 727, + 0, 0, 0, 0, 0, 0, 0, 727, 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, + 84, 0, 0, 0, 0, 0, 0, 0, 84, 721, + 0, 730, 1157, 1158, 0, 0, 728, 728, 728, 728, + 728, 0, 0, 84, 0, 0, 0, 0, 0, 0, + 84, 978, 0, 1181, 0, 0, 0, 1272, 1273, 728, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1289, 1290, 0, 1291, 1292, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1299, 1300, 0, 411, 0, + 0, 84, 84, 0, 84, 411, 411, 411, 0, 84, + 0, 84, 84, 84, 274, 0, 0, 84, 0, 0, + 0, 0, 0, 411, 0, 0, 0, 0, 411, 411, + 411, 0, 411, 411, 84, 274, 0, 577, 0, 0, + 0, 0, 411, 411, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1345, 0, 0, + 0, 0, 0, 0, 0, 0, 577, 0, 0, 0, + 0, 84, 0, 0, 0, 0, 0, 0, 0, 754, + 871, 0, 84, 84, 0, 0, 0, 615, 0, 810, + 811, 0, 0, 636, 0, 0, 411, 820, 0, 84, + 400, 0, 0, 826, 0, 0, 0, 0, 0, 0, + 274, 0, 0, 0, 0, 0, 0, 839, 84, 0, + 1377, 0, 0, 0, 0, 272, 0, 0, 298, 0, + 0, 0, 0, 272, 0, 0, 0, 921, 1307, 84, + 51, 0, 0, 0, 0, 0, 614, 618, 0, 0, + 0, 0, 0, 948, 332, 0, 0, 402, 0, 0, + 0, 0, 272, 0, 272, 0, 0, 0, 0, 639, + 952, 953, 0, 878, 0, 26, 27, 52, 29, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 0, 411, 0, 31, + 48, 49, 0, 0, 683, 0, 0, 0, 0, 0, + 411, 0, 0, 694, 0, 0, 0, 0, 0, 0, + 0, 40, 0, 0, 0, 57, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1444, 1445, + 1446, 1447, 1448, 0, 0, 0, 1451, 1452, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 961, 411, 0, 411, 0, 0, + 0, 0, 0, 0, 0, 0, 1393, 988, 0, 0, + 0, 0, 0, 0, 411, 0, 0, 0, 33, 34, + 36, 35, 38, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1415, 1416, + 1417, 0, 0, 0, 0, 0, 0, 39, 55, 54, + 0, 411, 46, 47, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, + 577, 43, 44, 0, 0, 0, 0, 272, 0, 0, + 1054, 0, 272, 0, 0, 0, 0, 0, 272, 1074, + 1075, 1076, 1077, 1078, 272, 1081, 1082, 0, 0, 1083, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1307, 0, 1085, 1457, 0, 0, + 0, 1086, 0, 0, 0, 0, 0, 0, 1091, 0, + 0, 0, 0, 0, 835, 0, 1563, 0, 332, 0, + 0, 0, 0, 0, 0, 0, 0, 1485, 0, 0, + 948, 0, 0, 0, 53, 0, 0, 0, 851, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1307, 0, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 411, 0, 0, 879, 880, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 272, 272, 272, 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, 1226, 411, 0, 0, 0, 0, 0, 0, 683, + 0, 0, 932, 933, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1557, 0, 0, 0, 0, + 0, 411, 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, 411, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1001, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 411, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 948, 0, 0, 1310, 1312, 0, 0, 0, + 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 272, 272, 0, 0, 0, 0, 1312, + 0, 272, 1263, 0, 272, 0, 0, 272, 0, 0, + 0, 830, 0, 411, 0, 411, 1338, 0, 0, 0, + 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 578, 0, 0, 0, 272, 0, 0, 0, 0, - 272, 0, 0, 0, 0, 412, 272, 0, 0, 0, - 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1305, 0, 0, 1455, 0, + 0, 0, 0, 0, 0, 0, 1093, 1094, 0, 618, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1362, + 0, 0, 1367, 1368, 1369, 0, 0, 272, 0, 0, + 411, 0, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1224, 412, 0, 0, 333, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 412, 0, 0, 0, 0, 0, 1305, - 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1124, 0, 0, 0, 0, 0, 332, 1357, + 0, 0, 948, 332, 332, 0, 0, 332, 332, 332, + 0, 1142, 0, 949, 0, 0, 0, 0, 0, 1360, + 0, 0, 411, 0, 0, 0, 0, 0, 0, 0, + 1424, 1370, 332, 332, 332, 332, 332, 0, 272, 0, + 0, 0, 0, 0, 0, 411, 272, 983, 0, 0, + 272, 272, 411, 0, 272, 991, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 272, 272, 272, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 946, 0, 0, 1308, 1310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1310, 0, 0, 0, 0, 1555, 0, 0, 0, - 0, 0, 0, 0, 0, 412, 0, 412, 1336, 0, + 0, 0, 0, 1458, 1459, 0, 1460, 0, 0, 0, + 0, 1424, 0, 1424, 1424, 1424, 0, 0, 0, 1338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 272, 0, 1424, 0, 0, 0, + 0, 0, 0, 272, 272, 272, 272, 272, 0, 272, + 272, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 272, 0, 0, 1515, 0, 272, 0, 1088, 1089, 1266, + 0, 0, 272, 0, 411, 411, 0, 0, 0, 0, + 0, 830, 0, 0, 0, 0, 0, 0, 948, 0, + 0, 1532, 0, 332, 272, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1296, 0, 0, 0, + 1538, 0, 0, 1489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1424, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 332, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1360, 0, 0, 1365, 1366, 1367, 0, 0, 0, - 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 272, 272, 0, 0, 0, 0, 0, 0, - 272, 0, 0, 272, 0, 0, 272, 0, 0, 0, - 828, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 272, 0, 0, 0, 946, 0, 0, 0, 0, 0, + 949, 272, 272, 272, 272, 272, 0, 0, 1534, 0, + 0, 0, 0, 1175, 0, 0, 272, 0, 0, 0, + 983, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 412, 0, 0, 0, 0, 0, - 0, 0, 1422, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 412, 0, 0, - 0, 0, 0, 272, 412, 0, 0, 0, 0, 0, - 0, 0, 828, 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, 1456, 1457, 0, 1458, 0, - 0, 0, 0, 1422, 333, 1422, 1422, 1422, 0, 333, - 333, 1336, 0, 333, 333, 333, 0, 0, 0, 947, - 0, 0, 0, 0, 0, 0, 0, 0, 1422, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 333, 333, - 333, 333, 333, 0, 272, 0, 0, 0, 0, 0, - 0, 0, 272, 981, 0, 0, 272, 272, 0, 0, - 272, 989, 828, 0, 0, 1513, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 946, 0, 0, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1536, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1396, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 683, 0, 0, 0, 0, 0, 0, 0, + 1411, 0, 0, 1412, 0, 0, 1414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 272, 0, 0, 1422, 0, 0, 0, 0, 0, 272, - 272, 272, 272, 272, 0, 272, 272, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, - 0, 272, 0, 1086, 1087, 0, 0, 0, 272, 0, - 0, 0, 0, 0, 0, 0, 0, 828, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, - 272, 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, 0, 0, 0, 0, 0, 0, 333, 333, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 947, 272, 272, 272, - 272, 272, 0, 0, 0, 0, 0, 0, 0, 1173, - 0, 0, 272, 0, 0, 0, 981, 0, 0, 0, - 272, 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, 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, + 332, 0, 0, 0, 0, 0, 0, 0, 0, 1440, + 683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 949, 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, 272, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 333, 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, 828, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 272, 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, 0, 0, 0, 272, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 272, 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, 949, 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, 947, 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, @@ -1323,831 +1282,863 @@ var yyAct = [...]int{ 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, - 0, 0, 0, 0, 0, 0, 0, 522, 510, 0, - 467, 525, 440, 457, 533, 458, 461, 498, 425, 480, - 173, 455, 981, 444, 420, 451, 421, 442, 469, 117, - 473, 439, 512, 483, 524, 145, 445, 531, 147, 489, - 0, 219, 161, 272, 0, 0, 471, 514, 478, 507, - 466, 499, 430, 488, 526, 456, 496, 527, 0, 0, - 0, 85, 86, 87, 0, 1006, 1007, 0, 0, 0, - 0, 0, 107, 0, 493, 521, 453, 495, 497, 419, - 490, 0, 423, 426, 532, 517, 448, 449, 1195, 0, - 0, 0, 0, 0, 0, 470, 479, 504, 464, 0, - 0, 0, 0, 0, 947, 0, 0, 446, 0, 487, - 0, 0, 0, 427, 424, 0, 0, 468, 272, 0, - 0, 429, 0, 447, 505, 0, 417, 126, 509, 516, - 465, 275, 520, 463, 462, 523, 192, 0, 223, 129, + 0, 521, 509, 0, 466, 524, 439, 456, 532, 457, + 460, 497, 424, 479, 173, 454, 983, 443, 419, 450, + 420, 441, 468, 117, 472, 438, 511, 482, 523, 145, + 444, 530, 147, 488, 0, 219, 161, 272, 0, 0, + 470, 513, 477, 506, 465, 498, 429, 487, 525, 455, + 495, 526, 0, 0, 0, 85, 86, 87, 0, 1008, + 1009, 0, 0, 0, 0, 0, 107, 0, 492, 520, + 452, 494, 496, 418, 489, 0, 422, 425, 531, 516, + 447, 448, 1197, 0, 0, 0, 0, 0, 0, 469, + 478, 503, 463, 0, 0, 0, 0, 0, 949, 0, + 0, 445, 0, 486, 0, 0, 0, 426, 423, 0, + 0, 467, 272, 0, 0, 428, 0, 446, 504, 0, + 416, 126, 508, 515, 464, 275, 519, 462, 461, 522, + 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, + 128, 170, 199, 203, 512, 442, 451, 111, 449, 201, + 180, 239, 485, 182, 200, 148, 229, 193, 238, 248, + 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, + 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, + 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, + 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, + 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, + 164, 0, 421, 0, 220, 242, 257, 105, 437, 227, + 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, + 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, + 241, 218, 433, 436, 431, 432, 480, 481, 527, 528, + 529, 505, 427, 0, 434, 435, 0, 510, 517, 518, + 484, 88, 97, 146, 254, 194, 122, 243, 417, 430, + 115, 440, 0, 0, 453, 458, 459, 471, 473, 474, + 475, 476, 483, 490, 491, 493, 499, 500, 501, 502, + 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, + 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, + 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, + 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, + 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 521, + 509, 0, 466, 524, 439, 456, 532, 457, 460, 497, + 424, 479, 173, 454, 0, 443, 419, 450, 420, 441, + 468, 117, 472, 438, 511, 482, 523, 145, 444, 530, + 147, 488, 0, 219, 161, 0, 0, 0, 470, 513, + 477, 506, 465, 498, 429, 487, 525, 455, 495, 526, + 0, 0, 0, 85, 86, 87, 0, 1008, 1009, 0, + 0, 0, 0, 0, 107, 0, 492, 520, 452, 494, + 496, 418, 489, 0, 422, 425, 531, 516, 447, 448, + 0, 0, 0, 0, 0, 0, 0, 469, 478, 503, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 445, + 0, 486, 0, 0, 0, 426, 423, 0, 0, 467, + 0, 0, 0, 428, 0, 446, 504, 0, 416, 126, + 508, 515, 464, 275, 519, 462, 461, 522, 192, 0, + 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, + 199, 203, 512, 442, 451, 111, 449, 201, 180, 239, + 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, + 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, + 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, + 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, + 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, + 421, 0, 220, 242, 257, 105, 437, 227, 251, 252, + 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, + 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, + 433, 436, 431, 432, 480, 481, 527, 528, 529, 505, + 427, 0, 434, 435, 0, 510, 517, 518, 484, 88, + 97, 146, 254, 194, 122, 243, 417, 430, 115, 440, + 0, 0, 453, 458, 459, 471, 473, 474, 475, 476, + 483, 490, 491, 493, 499, 500, 501, 502, 507, 514, + 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, + 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, + 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, + 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, + 221, 224, 230, 231, 240, 247, 250, 521, 509, 0, + 466, 524, 439, 456, 532, 457, 460, 497, 424, 479, + 173, 454, 0, 443, 419, 450, 420, 441, 468, 117, + 472, 438, 511, 482, 523, 145, 444, 530, 147, 488, + 0, 219, 161, 0, 0, 0, 470, 513, 477, 506, + 465, 498, 429, 487, 525, 455, 495, 526, 57, 0, + 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, + 0, 0, 107, 0, 492, 520, 452, 494, 496, 418, + 489, 0, 422, 425, 531, 516, 447, 448, 0, 0, + 0, 0, 0, 0, 0, 469, 478, 503, 463, 0, + 0, 0, 0, 0, 0, 0, 0, 445, 0, 486, + 0, 0, 0, 426, 423, 0, 0, 467, 0, 0, + 0, 428, 0, 446, 504, 0, 416, 126, 508, 515, + 464, 275, 519, 462, 461, 522, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, - 513, 443, 452, 111, 450, 201, 180, 239, 486, 182, + 512, 442, 451, 111, 449, 201, 180, 239, 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, - 190, 150, 191, 132, 163, 162, 164, 0, 422, 0, - 220, 242, 257, 105, 438, 227, 251, 252, 0, 0, + 190, 150, 191, 132, 163, 162, 164, 0, 421, 0, + 220, 242, 257, 105, 437, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, - 149, 196, 255, 179, 202, 109, 241, 218, 434, 437, - 432, 433, 481, 482, 528, 529, 530, 506, 428, 0, - 435, 436, 0, 511, 518, 519, 485, 88, 97, 146, - 254, 194, 122, 243, 418, 431, 115, 441, 0, 0, - 454, 459, 460, 472, 474, 475, 476, 477, 484, 491, - 492, 494, 500, 501, 502, 503, 508, 515, 534, 90, + 149, 196, 255, 179, 202, 109, 241, 218, 433, 436, + 431, 432, 480, 481, 527, 528, 529, 505, 427, 0, + 434, 435, 0, 510, 517, 518, 484, 88, 97, 146, + 254, 194, 122, 243, 417, 430, 115, 440, 0, 0, + 453, 458, 459, 471, 473, 474, 475, 476, 483, 490, + 491, 493, 499, 500, 501, 502, 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, - 230, 231, 240, 247, 250, 522, 510, 0, 467, 525, - 440, 457, 533, 458, 461, 498, 425, 480, 173, 455, - 0, 444, 420, 451, 421, 442, 469, 117, 473, 439, - 512, 483, 524, 145, 445, 531, 147, 489, 0, 219, - 161, 0, 0, 0, 471, 514, 478, 507, 466, 499, - 430, 488, 526, 456, 496, 527, 0, 0, 0, 85, - 86, 87, 0, 1006, 1007, 0, 0, 0, 0, 0, - 107, 0, 493, 521, 453, 495, 497, 419, 490, 0, - 423, 426, 532, 517, 448, 449, 0, 0, 0, 0, - 0, 0, 0, 470, 479, 504, 464, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 487, 0, 0, - 0, 427, 424, 0, 0, 468, 0, 0, 0, 429, - 0, 447, 505, 0, 417, 126, 509, 516, 465, 275, - 520, 463, 462, 523, 192, 0, 223, 129, 144, 103, - 141, 89, 99, 0, 128, 170, 199, 203, 513, 443, - 452, 111, 450, 201, 180, 239, 486, 182, 200, 148, + 230, 231, 240, 247, 250, 521, 509, 0, 466, 524, + 439, 456, 532, 457, 460, 497, 424, 479, 173, 454, + 0, 443, 419, 450, 420, 441, 468, 117, 472, 438, + 511, 482, 523, 145, 444, 530, 147, 488, 0, 219, + 161, 0, 0, 0, 470, 513, 477, 506, 465, 498, + 429, 487, 525, 455, 495, 526, 0, 0, 0, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 0, 492, 520, 452, 494, 496, 418, 489, 0, + 422, 425, 531, 516, 447, 448, 0, 0, 0, 0, + 0, 0, 0, 469, 478, 503, 463, 0, 0, 0, + 0, 0, 0, 1267, 0, 445, 0, 486, 0, 0, + 0, 426, 423, 0, 0, 467, 0, 0, 0, 428, + 0, 446, 504, 0, 416, 126, 508, 515, 464, 275, + 519, 462, 461, 522, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 512, 442, + 451, 111, 449, 201, 180, 239, 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, - 191, 132, 163, 162, 164, 0, 422, 0, 220, 242, - 257, 105, 438, 227, 251, 252, 0, 0, 106, 125, + 191, 132, 163, 162, 164, 0, 421, 0, 220, 242, + 257, 105, 437, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, - 255, 179, 202, 109, 241, 218, 434, 437, 432, 433, - 481, 482, 528, 529, 530, 506, 428, 0, 435, 436, - 0, 511, 518, 519, 485, 88, 97, 146, 254, 194, - 122, 243, 418, 431, 115, 441, 0, 0, 454, 459, - 460, 472, 474, 475, 476, 477, 484, 491, 492, 494, - 500, 501, 502, 503, 508, 515, 534, 90, 91, 98, + 255, 179, 202, 109, 241, 218, 433, 436, 431, 432, + 480, 481, 527, 528, 529, 505, 427, 0, 434, 435, + 0, 510, 517, 518, 484, 88, 97, 146, 254, 194, + 122, 243, 417, 430, 115, 440, 0, 0, 453, 458, + 459, 471, 473, 474, 475, 476, 483, 490, 491, 493, + 499, 500, 501, 502, 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, - 240, 247, 250, 522, 510, 0, 467, 525, 440, 457, - 533, 458, 461, 498, 425, 480, 173, 455, 0, 444, - 420, 451, 421, 442, 469, 117, 473, 439, 512, 483, - 524, 145, 445, 531, 147, 489, 0, 219, 161, 0, - 0, 0, 471, 514, 478, 507, 466, 499, 430, 488, - 526, 456, 496, 527, 57, 0, 0, 85, 86, 87, + 240, 247, 250, 521, 509, 0, 466, 524, 439, 456, + 532, 457, 460, 497, 424, 479, 173, 454, 0, 443, + 419, 450, 420, 441, 468, 117, 472, 438, 511, 482, + 523, 145, 444, 530, 147, 488, 0, 219, 161, 0, + 0, 0, 470, 513, 477, 506, 465, 498, 429, 487, + 525, 455, 495, 526, 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, - 493, 521, 453, 495, 497, 419, 490, 0, 423, 426, - 532, 517, 448, 449, 0, 0, 0, 0, 0, 0, - 0, 470, 479, 504, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 0, 487, 0, 0, 0, 427, - 424, 0, 0, 468, 0, 0, 0, 429, 0, 447, - 505, 0, 417, 126, 509, 516, 465, 275, 520, 463, - 462, 523, 192, 0, 223, 129, 144, 103, 141, 89, - 99, 0, 128, 170, 199, 203, 513, 443, 452, 111, - 450, 201, 180, 239, 486, 182, 200, 148, 229, 193, + 492, 520, 452, 494, 496, 418, 489, 0, 422, 425, + 531, 516, 447, 448, 0, 0, 0, 0, 0, 0, + 0, 469, 478, 503, 463, 0, 0, 0, 0, 0, + 0, 992, 0, 445, 0, 486, 0, 0, 0, 426, + 423, 0, 0, 467, 0, 0, 0, 428, 0, 446, + 504, 0, 416, 126, 508, 515, 464, 275, 519, 462, + 461, 522, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 512, 442, 451, 111, + 449, 201, 180, 239, 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, - 163, 162, 164, 0, 422, 0, 220, 242, 257, 105, - 438, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 163, 162, 164, 0, 421, 0, 220, 242, 257, 105, + 437, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, - 202, 109, 241, 218, 434, 437, 432, 433, 481, 482, - 528, 529, 530, 506, 428, 0, 435, 436, 0, 511, - 518, 519, 485, 88, 97, 146, 254, 194, 122, 243, - 418, 431, 115, 441, 0, 0, 454, 459, 460, 472, - 474, 475, 476, 477, 484, 491, 492, 494, 500, 501, - 502, 503, 508, 515, 534, 90, 91, 98, 104, 110, + 202, 109, 241, 218, 433, 436, 431, 432, 480, 481, + 527, 528, 529, 505, 427, 0, 434, 435, 0, 510, + 517, 518, 484, 88, 97, 146, 254, 194, 122, 243, + 417, 430, 115, 440, 0, 0, 453, 458, 459, 471, + 473, 474, 475, 476, 483, 490, 491, 493, 499, 500, + 501, 502, 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, - 250, 522, 510, 0, 467, 525, 440, 457, 533, 458, - 461, 498, 425, 480, 173, 455, 0, 444, 420, 451, - 421, 442, 469, 117, 473, 439, 512, 483, 524, 145, - 445, 531, 147, 489, 0, 219, 161, 0, 0, 0, - 471, 514, 478, 507, 466, 499, 430, 488, 526, 456, - 496, 527, 0, 0, 0, 85, 86, 87, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 0, 493, 521, - 453, 495, 497, 419, 490, 0, 423, 426, 532, 517, - 448, 449, 0, 0, 0, 0, 0, 0, 0, 470, - 479, 504, 464, 0, 0, 0, 0, 0, 0, 1265, - 0, 446, 0, 487, 0, 0, 0, 427, 424, 0, - 0, 468, 0, 0, 0, 429, 0, 447, 505, 0, - 417, 126, 509, 516, 465, 275, 520, 463, 462, 523, + 250, 521, 509, 0, 466, 524, 439, 456, 532, 457, + 460, 497, 424, 479, 173, 454, 0, 443, 419, 450, + 420, 441, 468, 117, 472, 438, 511, 482, 523, 145, + 444, 530, 147, 488, 0, 219, 161, 0, 0, 0, + 470, 513, 477, 506, 465, 498, 429, 487, 525, 455, + 495, 526, 0, 0, 0, 85, 86, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 107, 0, 492, 520, + 452, 494, 496, 418, 489, 0, 422, 425, 531, 516, + 447, 448, 0, 0, 0, 0, 0, 0, 0, 469, + 478, 503, 463, 0, 0, 0, 0, 0, 0, 887, + 0, 445, 0, 486, 0, 0, 0, 426, 423, 0, + 0, 467, 0, 0, 0, 428, 0, 446, 504, 0, + 416, 126, 508, 515, 464, 275, 519, 462, 461, 522, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, - 128, 170, 199, 203, 513, 443, 452, 111, 450, 201, - 180, 239, 486, 182, 200, 148, 229, 193, 238, 248, + 128, 170, 199, 203, 512, 442, 451, 111, 449, 201, + 180, 239, 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, - 164, 0, 422, 0, 220, 242, 257, 105, 438, 227, + 164, 0, 421, 0, 220, 242, 257, 105, 437, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 434, 437, 432, 433, 481, 482, 528, 529, - 530, 506, 428, 0, 435, 436, 0, 511, 518, 519, - 485, 88, 97, 146, 254, 194, 122, 243, 418, 431, - 115, 441, 0, 0, 454, 459, 460, 472, 474, 475, - 476, 477, 484, 491, 492, 494, 500, 501, 502, 503, - 508, 515, 534, 90, 91, 98, 104, 110, 114, 118, + 241, 218, 433, 436, 431, 432, 480, 481, 527, 528, + 529, 505, 427, 0, 434, 435, 0, 510, 517, 518, + 484, 88, 97, 146, 254, 194, 122, 243, 417, 430, + 115, 440, 0, 0, 453, 458, 459, 471, 473, 474, + 475, 476, 483, 490, 491, 493, 499, 500, 501, 502, + 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 522, - 510, 0, 467, 525, 440, 457, 533, 458, 461, 498, - 425, 480, 173, 455, 0, 444, 420, 451, 421, 442, - 469, 117, 473, 439, 512, 483, 524, 145, 445, 531, - 147, 489, 0, 219, 161, 0, 0, 0, 471, 514, - 478, 507, 466, 499, 430, 488, 526, 456, 496, 527, + 214, 215, 221, 224, 230, 231, 240, 247, 250, 521, + 509, 0, 466, 524, 439, 456, 532, 457, 460, 497, + 424, 479, 173, 454, 0, 443, 419, 450, 420, 441, + 468, 117, 472, 438, 511, 482, 523, 145, 444, 530, + 147, 488, 0, 219, 161, 0, 0, 0, 470, 513, + 477, 506, 465, 498, 429, 487, 525, 455, 495, 526, 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, - 0, 0, 0, 0, 107, 0, 493, 521, 453, 495, - 497, 419, 490, 0, 423, 426, 532, 517, 448, 449, - 0, 0, 0, 0, 0, 0, 0, 470, 479, 504, - 464, 0, 0, 0, 0, 0, 0, 990, 0, 446, - 0, 487, 0, 0, 0, 427, 424, 0, 0, 468, - 0, 0, 0, 429, 0, 447, 505, 0, 417, 126, - 509, 516, 465, 275, 520, 463, 462, 523, 192, 0, + 0, 0, 0, 0, 107, 0, 492, 520, 452, 494, + 496, 418, 489, 0, 422, 425, 531, 516, 447, 448, + 0, 0, 0, 0, 0, 0, 0, 469, 478, 503, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 445, + 0, 486, 0, 0, 0, 426, 423, 0, 0, 467, + 0, 0, 0, 428, 0, 446, 504, 0, 416, 126, + 508, 515, 464, 275, 519, 462, 461, 522, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, - 199, 203, 513, 443, 452, 111, 450, 201, 180, 239, - 486, 182, 200, 148, 229, 193, 238, 248, 249, 226, + 199, 203, 512, 442, 451, 111, 449, 201, 180, 239, + 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, - 422, 0, 220, 242, 257, 105, 438, 227, 251, 252, + 421, 0, 220, 242, 257, 105, 437, 227, 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, - 434, 437, 432, 433, 481, 482, 528, 529, 530, 506, - 428, 0, 435, 436, 0, 511, 518, 519, 485, 88, - 97, 146, 254, 194, 122, 243, 418, 431, 115, 441, - 0, 0, 454, 459, 460, 472, 474, 475, 476, 477, - 484, 491, 492, 494, 500, 501, 502, 503, 508, 515, - 534, 90, 91, 98, 104, 110, 114, 118, 121, 127, + 433, 436, 431, 432, 480, 481, 527, 528, 529, 505, + 427, 0, 434, 435, 0, 510, 517, 518, 484, 88, + 97, 146, 254, 194, 122, 243, 417, 430, 115, 440, + 0, 0, 453, 458, 459, 471, 473, 474, 475, 476, + 483, 490, 491, 493, 499, 500, 501, 502, 507, 514, + 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, - 221, 224, 230, 231, 240, 247, 250, 522, 510, 0, - 467, 525, 440, 457, 533, 458, 461, 498, 425, 480, - 173, 455, 0, 444, 420, 451, 421, 442, 469, 117, - 473, 439, 512, 483, 524, 145, 445, 531, 147, 489, - 0, 219, 161, 0, 0, 0, 471, 514, 478, 507, - 466, 499, 430, 488, 526, 456, 496, 527, 0, 0, + 221, 224, 230, 231, 240, 247, 250, 521, 509, 0, + 466, 524, 439, 456, 532, 457, 460, 497, 424, 479, + 173, 454, 0, 443, 419, 450, 420, 441, 468, 117, + 472, 438, 511, 482, 523, 145, 444, 530, 147, 488, + 0, 219, 161, 0, 0, 0, 470, 513, 477, 506, + 465, 498, 429, 487, 525, 455, 495, 526, 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, - 0, 0, 107, 0, 493, 521, 453, 495, 497, 419, - 490, 0, 423, 426, 532, 517, 448, 449, 0, 0, - 0, 0, 0, 0, 0, 470, 479, 504, 464, 0, - 0, 0, 0, 0, 0, 885, 0, 446, 0, 487, - 0, 0, 0, 427, 424, 0, 0, 468, 0, 0, - 0, 429, 0, 447, 505, 0, 417, 126, 509, 516, - 465, 275, 520, 463, 462, 523, 192, 0, 223, 129, + 0, 0, 107, 0, 492, 520, 452, 494, 496, 418, + 489, 0, 422, 425, 531, 516, 447, 448, 0, 0, + 0, 0, 0, 0, 0, 469, 478, 503, 463, 0, + 0, 0, 0, 0, 0, 0, 0, 445, 0, 486, + 0, 0, 0, 426, 423, 0, 0, 467, 0, 0, + 0, 428, 0, 446, 504, 0, 416, 126, 508, 515, + 464, 275, 519, 462, 461, 522, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, - 513, 443, 452, 111, 450, 201, 180, 239, 486, 182, + 512, 442, 451, 111, 449, 201, 180, 239, 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, - 233, 112, 256, 100, 245, 96, 101, 244, 166, 228, + 233, 112, 256, 100, 245, 96, 414, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, - 190, 150, 191, 132, 163, 162, 164, 0, 422, 0, - 220, 242, 257, 105, 438, 227, 251, 252, 0, 0, - 106, 125, 119, 189, 123, 165, 102, 134, 217, 142, - 149, 196, 255, 179, 202, 109, 241, 218, 434, 437, - 432, 433, 481, 482, 528, 529, 530, 506, 428, 0, - 435, 436, 0, 511, 518, 519, 485, 88, 97, 146, - 254, 194, 122, 243, 418, 431, 115, 441, 0, 0, - 454, 459, 460, 472, 474, 475, 476, 477, 484, 491, - 492, 494, 500, 501, 502, 503, 508, 515, 534, 90, + 190, 150, 191, 132, 163, 162, 164, 0, 421, 0, + 220, 242, 257, 105, 437, 227, 251, 252, 0, 0, + 106, 125, 119, 189, 123, 415, 413, 134, 217, 142, + 149, 196, 255, 179, 202, 109, 241, 218, 433, 436, + 431, 432, 480, 481, 527, 528, 529, 505, 427, 0, + 434, 435, 0, 510, 517, 518, 484, 88, 97, 146, + 254, 194, 122, 243, 417, 430, 115, 440, 0, 0, + 453, 458, 459, 471, 473, 474, 475, 476, 483, 490, + 491, 493, 499, 500, 501, 502, 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, - 230, 231, 240, 247, 250, 522, 510, 0, 467, 525, - 440, 457, 533, 458, 461, 498, 425, 480, 173, 455, - 0, 444, 420, 451, 421, 442, 469, 117, 473, 439, - 512, 483, 524, 145, 445, 531, 147, 489, 0, 219, - 161, 0, 0, 0, 471, 514, 478, 507, 466, 499, - 430, 488, 526, 456, 496, 527, 0, 0, 0, 85, + 230, 231, 240, 247, 250, 521, 509, 0, 466, 524, + 439, 456, 532, 457, 460, 497, 424, 479, 173, 454, + 0, 443, 419, 450, 420, 441, 468, 117, 472, 438, + 511, 482, 523, 145, 444, 530, 147, 488, 0, 219, + 161, 0, 0, 0, 470, 513, 477, 506, 465, 498, + 429, 487, 525, 455, 495, 526, 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 107, 0, 493, 521, 453, 495, 497, 419, 490, 0, - 423, 426, 532, 517, 448, 449, 0, 0, 0, 0, - 0, 0, 0, 470, 479, 504, 464, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 487, 0, 0, - 0, 427, 424, 0, 0, 468, 0, 0, 0, 429, - 0, 447, 505, 0, 417, 126, 509, 516, 465, 275, - 520, 463, 462, 523, 192, 0, 223, 129, 144, 103, - 141, 89, 99, 0, 128, 170, 199, 203, 513, 443, - 452, 111, 450, 201, 180, 239, 486, 182, 200, 148, + 107, 0, 492, 520, 452, 494, 496, 418, 489, 0, + 422, 425, 531, 516, 447, 448, 0, 0, 0, 0, + 0, 0, 0, 469, 478, 503, 463, 0, 0, 0, + 0, 0, 0, 0, 0, 445, 0, 486, 0, 0, + 0, 426, 423, 0, 0, 467, 0, 0, 0, 428, + 0, 446, 504, 0, 416, 126, 508, 515, 464, 275, + 519, 462, 461, 522, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 512, 442, + 451, 111, 449, 201, 180, 239, 485, 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, - 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 225, 740, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, - 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 256, 100, 245, 96, 414, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, - 191, 132, 163, 162, 164, 0, 422, 0, 220, 242, - 257, 105, 438, 227, 251, 252, 0, 0, 106, 125, - 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, - 255, 179, 202, 109, 241, 218, 434, 437, 432, 433, - 481, 482, 528, 529, 530, 506, 428, 0, 435, 436, - 0, 511, 518, 519, 485, 88, 97, 146, 254, 194, - 122, 243, 418, 431, 115, 441, 0, 0, 454, 459, - 460, 472, 474, 475, 476, 477, 484, 491, 492, 494, - 500, 501, 502, 503, 508, 515, 534, 90, 91, 98, + 191, 132, 163, 162, 164, 0, 421, 0, 220, 242, + 257, 105, 437, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 415, 413, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 433, 436, 431, 432, + 480, 481, 527, 528, 529, 505, 427, 0, 434, 435, + 0, 510, 517, 518, 484, 88, 97, 146, 254, 194, + 122, 243, 417, 430, 115, 440, 0, 0, 453, 458, + 459, 471, 473, 474, 475, 476, 483, 490, 491, 493, + 499, 500, 501, 502, 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, - 240, 247, 250, 522, 510, 0, 467, 525, 440, 457, - 533, 458, 461, 498, 425, 480, 173, 455, 0, 444, - 420, 451, 421, 442, 469, 117, 473, 439, 512, 483, - 524, 145, 445, 531, 147, 489, 0, 219, 161, 0, - 0, 0, 471, 514, 478, 507, 466, 499, 430, 488, - 526, 456, 496, 527, 0, 0, 0, 85, 86, 87, + 240, 247, 250, 521, 509, 0, 466, 524, 439, 456, + 532, 457, 460, 497, 424, 479, 173, 454, 0, 443, + 419, 450, 420, 441, 468, 117, 472, 438, 511, 482, + 523, 145, 444, 530, 147, 488, 0, 219, 161, 0, + 0, 0, 470, 513, 477, 506, 465, 498, 429, 487, + 525, 455, 495, 526, 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, - 493, 521, 453, 495, 497, 419, 490, 0, 423, 426, - 532, 517, 448, 449, 0, 0, 0, 0, 0, 0, - 0, 470, 479, 504, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 0, 487, 0, 0, 0, 427, - 424, 0, 0, 468, 0, 0, 0, 429, 0, 447, - 505, 0, 417, 126, 509, 516, 465, 275, 520, 463, - 462, 523, 192, 0, 223, 129, 144, 103, 141, 89, - 99, 0, 128, 170, 199, 203, 513, 443, 452, 111, - 450, 201, 180, 239, 486, 182, 200, 148, 229, 193, - 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 492, 520, 452, 494, 496, 418, 489, 0, 422, 425, + 531, 516, 447, 448, 0, 0, 0, 0, 0, 0, + 0, 469, 478, 503, 463, 0, 0, 0, 0, 0, + 0, 0, 0, 445, 0, 486, 0, 0, 0, 426, + 423, 0, 0, 467, 0, 0, 0, 428, 0, 446, + 504, 0, 416, 126, 508, 515, 464, 275, 519, 462, + 461, 522, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 512, 442, 451, 111, + 449, 201, 180, 239, 485, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 405, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, - 245, 96, 415, 244, 166, 228, 236, 160, 153, 95, + 245, 96, 414, 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, - 163, 162, 164, 0, 422, 0, 220, 242, 257, 105, - 438, 227, 251, 252, 0, 0, 106, 125, 119, 189, - 123, 416, 414, 134, 217, 142, 149, 196, 255, 179, - 202, 109, 241, 218, 434, 437, 432, 433, 481, 482, - 528, 529, 530, 506, 428, 0, 435, 436, 0, 511, - 518, 519, 485, 88, 97, 146, 254, 194, 122, 243, - 418, 431, 115, 441, 0, 0, 454, 459, 460, 472, - 474, 475, 476, 477, 484, 491, 492, 494, 500, 501, - 502, 503, 508, 515, 534, 90, 91, 98, 104, 110, + 163, 162, 164, 0, 421, 0, 220, 242, 257, 105, + 437, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 415, 413, 408, 407, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 433, 436, 431, 432, 480, 481, + 527, 528, 529, 505, 427, 0, 434, 435, 0, 510, + 517, 518, 484, 88, 97, 146, 254, 194, 122, 243, + 417, 430, 115, 440, 0, 0, 453, 458, 459, 471, + 473, 474, 475, 476, 483, 490, 491, 493, 499, 500, + 501, 502, 507, 514, 533, 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, - 250, 522, 510, 0, 467, 525, 440, 457, 533, 458, - 461, 498, 425, 480, 173, 455, 0, 444, 420, 451, - 421, 442, 469, 117, 473, 439, 512, 483, 524, 145, - 445, 531, 147, 489, 0, 219, 161, 0, 0, 0, - 471, 514, 478, 507, 466, 499, 430, 488, 526, 456, - 496, 527, 0, 0, 0, 85, 86, 87, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 0, 493, 521, - 453, 495, 497, 419, 490, 0, 423, 426, 532, 517, - 448, 449, 0, 0, 0, 0, 0, 0, 0, 470, - 479, 504, 464, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 0, 487, 0, 0, 0, 427, 424, 0, - 0, 468, 0, 0, 0, 429, 0, 447, 505, 0, - 417, 126, 509, 516, 465, 275, 520, 463, 462, 523, - 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, - 128, 170, 199, 203, 513, 443, 452, 111, 450, 201, - 180, 239, 486, 182, 200, 148, 229, 193, 238, 248, - 249, 226, 246, 253, 216, 92, 225, 738, 108, 211, - 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, - 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, - 415, 244, 166, 228, 236, 160, 153, 95, 234, 158, - 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, - 164, 0, 422, 0, 220, 242, 257, 105, 438, 227, - 251, 252, 0, 0, 106, 125, 119, 189, 123, 416, - 414, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 434, 437, 432, 433, 481, 482, 528, 529, - 530, 506, 428, 0, 435, 436, 0, 511, 518, 519, - 485, 88, 97, 146, 254, 194, 122, 243, 418, 431, - 115, 441, 0, 0, 454, 459, 460, 472, 474, 475, - 476, 477, 484, 491, 492, 494, 500, 501, 502, 503, - 508, 515, 534, 90, 91, 98, 104, 110, 114, 118, - 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, - 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, - 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, - 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 522, - 510, 0, 467, 525, 440, 457, 533, 458, 461, 498, - 425, 480, 173, 455, 0, 444, 420, 451, 421, 442, - 469, 117, 473, 439, 512, 483, 524, 145, 445, 531, - 147, 489, 0, 219, 161, 0, 0, 0, 471, 514, - 478, 507, 466, 499, 430, 488, 526, 456, 496, 527, - 0, 0, 0, 85, 86, 87, 0, 0, 0, 0, - 0, 0, 0, 0, 107, 0, 493, 521, 453, 495, - 497, 419, 490, 0, 423, 426, 532, 517, 448, 449, - 0, 0, 0, 0, 0, 0, 0, 470, 479, 504, - 464, 0, 0, 0, 0, 0, 0, 0, 0, 446, - 0, 487, 0, 0, 0, 427, 424, 0, 0, 468, - 0, 0, 0, 429, 0, 447, 505, 0, 417, 126, - 509, 516, 465, 275, 520, 463, 462, 523, 192, 0, - 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, - 199, 203, 513, 443, 452, 111, 450, 201, 180, 239, - 486, 182, 200, 148, 229, 193, 238, 248, 249, 226, - 246, 253, 216, 92, 225, 406, 108, 211, 94, 235, - 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, - 172, 232, 233, 112, 256, 100, 245, 96, 415, 244, - 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, - 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, - 422, 0, 220, 242, 257, 105, 438, 227, 251, 252, - 0, 0, 106, 125, 119, 189, 123, 416, 414, 409, - 408, 142, 149, 196, 255, 179, 202, 109, 241, 218, - 434, 437, 432, 433, 481, 482, 528, 529, 530, 506, - 428, 0, 435, 436, 0, 511, 518, 519, 485, 88, - 97, 146, 254, 194, 122, 243, 418, 431, 115, 441, - 0, 0, 454, 459, 460, 472, 474, 475, 476, 477, - 484, 491, 492, 494, 500, 501, 502, 503, 508, 515, - 534, 90, 91, 98, 104, 110, 114, 118, 121, 127, - 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, - 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, - 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, - 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, - 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, - 921, 0, 340, 0, 0, 0, 117, 0, 337, 0, - 0, 0, 145, 922, 380, 147, 0, 0, 219, 161, - 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, - 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, - 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, - 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, - 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 349, 350, 331, 0, 0, 0, 394, 0, 351, 0, - 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, - 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, - 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, - 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, - 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, - 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, - 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, - 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, - 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, - 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, - 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, - 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, - 179, 202, 109, 241, 218, 381, 392, 387, 388, 385, - 386, 384, 383, 382, 395, 373, 374, 375, 376, 378, - 0, 389, 390, 377, 88, 97, 146, 254, 194, 122, - 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 98, 104, - 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, - 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, - 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, - 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, - 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, - 247, 250, 173, 0, 0, 0, 0, 340, 0, 0, - 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, - 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, - 371, 372, 0, 0, 0, 0, 0, 0, 997, 0, - 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, - 363, 364, 0, 0, 107, 360, 365, 366, 367, 998, - 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 349, 350, 0, 0, 0, - 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, - 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, - 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, - 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, - 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, - 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, - 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, - 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, - 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, - 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, - 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, - 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, - 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, - 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, - 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 250, 173, 0, 0, 923, 0, 339, 0, 0, 0, + 117, 0, 336, 0, 0, 0, 145, 924, 379, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 0, 0, 85, 86, 87, 358, 357, 360, 361, 362, + 363, 0, 0, 107, 359, 364, 365, 366, 0, 0, + 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 348, 349, 330, 0, 0, 0, + 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 392, + 0, 0, 275, 0, 0, 390, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 380, + 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, + 373, 374, 375, 377, 0, 388, 389, 376, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, - 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, - 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, - 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, - 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, - 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, - 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, - 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, - 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, - 0, 0, 0, 0, 0, 57, 0, 608, 85, 86, - 87, 359, 358, 361, 362, 363, 364, 0, 0, 107, - 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, - 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 349, 350, 0, 0, 0, 0, 394, 0, 351, 0, - 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, - 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, - 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, - 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, - 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, - 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, - 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, - 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, - 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, - 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, - 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, - 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, - 179, 202, 109, 241, 218, 381, 392, 387, 388, 385, - 386, 384, 383, 382, 395, 373, 374, 375, 376, 378, - 0, 389, 390, 377, 88, 97, 146, 254, 194, 122, - 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 98, 104, - 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, - 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, - 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, - 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, - 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, - 247, 250, 173, 0, 0, 0, 0, 340, 0, 0, - 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, - 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, - 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 0, 0, 85, 86, 87, 359, 358, 361, 362, - 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, - 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 349, 350, 331, 0, 0, - 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, - 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, - 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, - 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, - 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, - 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, - 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, - 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, - 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, - 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, - 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, - 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, - 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, - 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, - 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 0, 339, 0, 0, 0, 117, 0, 336, 0, 0, + 0, 145, 0, 379, 147, 0, 0, 219, 161, 0, + 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 999, 0, 57, 0, 0, 85, 86, 87, + 358, 357, 360, 361, 362, 363, 0, 0, 107, 359, + 364, 365, 366, 1000, 0, 0, 334, 351, 0, 378, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 349, 0, 0, 0, 0, 393, 0, 350, 0, 0, + 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 392, 0, 0, 275, 0, 0, + 390, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 380, 391, 386, 387, 384, 385, + 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, + 388, 389, 376, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, - 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, - 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, - 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, - 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, - 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, - 0, 0, 340, 0, 0, 0, 117, 0, 337, 0, - 0, 0, 145, 0, 380, 147, 0, 0, 219, 161, - 0, 0, 0, 0, 0, 371, 372, 0, 0, 0, - 0, 0, 0, 0, 0, 57, 0, 0, 85, 86, - 87, 359, 936, 361, 362, 363, 364, 0, 0, 107, - 360, 365, 366, 367, 0, 0, 0, 335, 352, 0, - 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 349, 350, 331, 0, 0, 0, 394, 0, 351, 0, - 0, 346, 347, 348, 353, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 126, 393, 0, 0, 275, 0, - 0, 391, 0, 192, 0, 223, 129, 144, 103, 141, - 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, - 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, - 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, - 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, - 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, - 100, 245, 96, 101, 244, 166, 228, 236, 160, 153, - 95, 234, 158, 152, 143, 120, 131, 190, 150, 191, - 132, 163, 162, 164, 0, 0, 0, 220, 242, 257, - 105, 0, 227, 251, 252, 0, 0, 106, 125, 119, - 189, 123, 165, 102, 134, 217, 142, 149, 196, 255, - 179, 202, 109, 241, 218, 381, 392, 387, 388, 385, - 386, 384, 383, 382, 395, 373, 374, 375, 376, 378, - 0, 389, 390, 377, 88, 97, 146, 254, 194, 122, - 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 98, 104, - 110, 114, 118, 121, 127, 130, 133, 135, 136, 137, - 140, 151, 154, 155, 156, 157, 167, 168, 169, 171, - 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, - 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, - 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, - 247, 250, 173, 0, 0, 0, 0, 340, 0, 0, - 0, 117, 0, 337, 0, 0, 0, 145, 0, 380, - 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, - 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 0, 0, 85, 86, 87, 359, 933, 361, 362, - 363, 364, 0, 0, 107, 360, 365, 366, 367, 0, - 0, 0, 335, 352, 0, 379, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 349, 350, 331, 0, 0, - 0, 394, 0, 351, 0, 0, 346, 347, 348, 353, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 393, 0, 0, 275, 0, 0, 391, 0, 192, 0, - 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, - 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, - 0, 182, 200, 148, 229, 193, 238, 248, 249, 226, - 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, - 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, - 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, - 166, 228, 236, 160, 153, 95, 234, 158, 152, 143, - 120, 131, 190, 150, 191, 132, 163, 162, 164, 0, - 0, 0, 220, 242, 257, 105, 0, 227, 251, 252, - 0, 0, 106, 125, 119, 189, 123, 165, 102, 134, - 217, 142, 149, 196, 255, 179, 202, 109, 241, 218, - 381, 392, 387, 388, 385, 386, 384, 383, 382, 395, - 373, 374, 375, 376, 378, 0, 389, 390, 377, 88, - 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 173, 0, 0, 0, 0, 339, 0, 0, 0, + 117, 0, 336, 0, 0, 0, 145, 0, 379, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 0, 610, 85, 86, 87, 358, 357, 360, 361, 362, + 363, 0, 0, 107, 359, 364, 365, 366, 0, 0, + 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 348, 349, 0, 0, 0, 0, + 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 392, + 0, 0, 275, 0, 0, 390, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 380, + 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, + 373, 374, 375, 377, 0, 388, 389, 376, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 98, 104, 110, 114, 118, 121, 127, - 130, 133, 135, 136, 137, 140, 151, 154, 155, 156, - 157, 167, 168, 169, 171, 174, 175, 176, 177, 178, - 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, - 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, - 221, 224, 230, 231, 240, 247, 250, 26, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, - 0, 0, 0, 0, 340, 0, 0, 0, 117, 0, - 337, 0, 0, 0, 145, 0, 380, 147, 0, 0, - 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, - 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, - 0, 107, 360, 365, 366, 367, 0, 0, 0, 335, - 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 349, 350, 0, 0, 0, 0, 394, 0, - 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, - 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, - 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, - 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, - 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, - 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, - 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, - 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, - 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, - 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, - 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, - 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 381, 392, 387, - 388, 385, 386, 384, 383, 382, 395, 373, 374, 375, - 376, 378, 0, 389, 390, 377, 88, 97, 146, 254, - 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 0, 339, 0, 0, 0, 117, 0, 336, 0, 0, + 0, 145, 0, 379, 147, 0, 0, 219, 161, 0, + 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, + 358, 357, 360, 361, 362, 363, 0, 0, 107, 359, + 364, 365, 366, 0, 0, 0, 334, 351, 0, 378, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 349, 330, 0, 0, 0, 393, 0, 350, 0, 0, + 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 392, 0, 0, 275, 0, 0, + 390, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 380, 391, 386, 387, 384, 385, + 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, + 388, 389, 376, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 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, 90, 91, - 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, - 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, - 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, - 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, - 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 173, 0, 0, 0, 0, 340, - 0, 0, 0, 117, 0, 337, 0, 0, 0, 145, - 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, - 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 0, 57, 0, 0, 85, 86, 87, 359, 358, - 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, - 367, 0, 0, 0, 335, 352, 0, 379, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, - 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, - 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, - 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, - 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, - 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, - 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, - 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, - 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, - 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, - 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, - 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, - 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, - 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 381, 392, 387, 388, 385, 386, 384, 383, - 382, 395, 373, 374, 375, 376, 378, 0, 389, 390, - 377, 88, 97, 146, 254, 194, 122, 243, 0, 0, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 173, 0, 0, 0, 0, 339, 0, 0, 0, + 117, 0, 336, 0, 0, 0, 145, 0, 379, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 0, 0, 85, 86, 87, 358, 938, 360, 361, 362, + 363, 0, 0, 107, 359, 364, 365, 366, 0, 0, + 0, 334, 351, 0, 378, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 348, 349, 330, 0, 0, 0, + 393, 0, 350, 0, 0, 345, 346, 347, 352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 392, + 0, 0, 275, 0, 0, 390, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 380, + 391, 386, 387, 384, 385, 383, 382, 381, 394, 372, + 373, 374, 375, 377, 0, 388, 389, 376, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, - 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, - 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, - 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, - 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 145, 0, 380, 147, 0, 0, - 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, - 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, - 0, 107, 360, 365, 366, 367, 0, 0, 0, 0, - 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 349, 350, 0, 0, 0, 0, 394, 0, - 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, - 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, - 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, - 0, 0, 111, 0, 201, 180, 239, 1562, 182, 200, - 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, - 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, - 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, - 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, - 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, - 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, - 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, - 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 381, 392, 387, - 388, 385, 386, 384, 383, 382, 395, 373, 374, 375, - 376, 378, 0, 389, 390, 377, 88, 97, 146, 254, - 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, - 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, - 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, - 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, - 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, - 0, 380, 147, 0, 0, 219, 161, 0, 0, 0, - 0, 0, 371, 372, 0, 0, 0, 0, 0, 0, - 0, 0, 57, 0, 608, 85, 86, 87, 359, 358, - 361, 362, 363, 364, 0, 0, 107, 360, 365, 366, - 367, 0, 0, 0, 0, 352, 0, 379, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 349, 350, 0, - 0, 0, 0, 394, 0, 351, 0, 0, 346, 347, - 348, 353, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 393, 0, 0, 275, 0, 0, 391, 0, - 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, - 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, - 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, - 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, - 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, - 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, - 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, - 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, - 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, - 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, - 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 381, 392, 387, 388, 385, 386, 384, 383, - 382, 395, 373, 374, 375, 376, 378, 0, 389, 390, - 377, 88, 97, 146, 254, 194, 122, 243, 0, 0, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, + 0, 339, 0, 0, 0, 117, 0, 336, 0, 0, + 0, 145, 0, 379, 147, 0, 0, 219, 161, 0, + 0, 0, 0, 0, 370, 371, 0, 0, 0, 0, + 0, 0, 0, 0, 57, 0, 0, 85, 86, 87, + 358, 935, 360, 361, 362, 363, 0, 0, 107, 359, + 364, 365, 366, 0, 0, 0, 334, 351, 0, 378, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 348, + 349, 330, 0, 0, 0, 393, 0, 350, 0, 0, + 345, 346, 347, 352, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 392, 0, 0, 275, 0, 0, + 390, 0, 192, 0, 223, 129, 144, 103, 141, 89, + 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, + 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, + 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, + 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, + 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, + 245, 96, 101, 244, 166, 228, 236, 160, 153, 95, + 234, 158, 152, 143, 120, 131, 190, 150, 191, 132, + 163, 162, 164, 0, 0, 0, 220, 242, 257, 105, + 0, 227, 251, 252, 0, 0, 106, 125, 119, 189, + 123, 165, 102, 134, 217, 142, 149, 196, 255, 179, + 202, 109, 241, 218, 380, 391, 386, 387, 384, 385, + 383, 382, 381, 394, 372, 373, 374, 375, 377, 0, + 388, 389, 376, 88, 97, 146, 254, 194, 122, 243, + 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, - 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, - 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, - 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, - 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 145, 0, 380, 147, 0, 0, - 219, 161, 0, 0, 0, 0, 0, 371, 372, 0, - 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, - 85, 86, 87, 359, 358, 361, 362, 363, 364, 0, - 0, 107, 360, 365, 366, 367, 0, 0, 0, 0, - 352, 0, 379, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 349, 350, 0, 0, 0, 0, 394, 0, - 351, 0, 0, 346, 347, 348, 353, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 393, 0, 0, - 275, 0, 0, 391, 0, 192, 0, 223, 129, 144, - 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, - 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, - 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, - 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, - 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, - 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, - 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, - 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, - 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, - 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 381, 392, 387, - 388, 385, 386, 384, 383, 382, 395, 373, 374, 375, - 376, 378, 0, 389, 390, 377, 88, 97, 146, 254, - 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 90, 91, 98, 104, 110, + 114, 118, 121, 127, 130, 133, 135, 136, 137, 140, + 151, 154, 155, 156, 157, 167, 168, 169, 171, 174, + 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, + 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, + 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, + 250, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 173, 0, 0, 0, 0, 339, 0, + 0, 0, 117, 0, 336, 0, 0, 0, 145, 0, + 379, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 0, 0, 85, 86, 87, 358, 357, 360, + 361, 362, 363, 0, 0, 107, 359, 364, 365, 366, + 0, 0, 0, 334, 351, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, + 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, + 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 392, 0, 0, 275, 0, 0, 390, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 380, 391, 386, 387, 384, 385, 383, 382, 381, + 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, - 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, - 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, - 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, - 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, - 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, + 0, 0, 0, 339, 0, 0, 0, 117, 0, 336, + 0, 0, 0, 145, 0, 379, 147, 0, 0, 219, + 161, 0, 0, 0, 0, 0, 370, 371, 0, 0, + 0, 0, 0, 0, 0, 0, 57, 0, 0, 85, + 86, 87, 358, 357, 360, 361, 362, 363, 0, 0, + 107, 359, 364, 365, 366, 0, 0, 0, 334, 351, + 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 349, 0, 0, 0, 0, 393, 0, 350, + 0, 0, 345, 346, 347, 352, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 392, 0, 0, 275, + 0, 0, 390, 0, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, + 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, + 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 380, 391, 386, 387, + 384, 385, 383, 382, 381, 394, 372, 373, 374, 375, + 377, 0, 388, 389, 376, 88, 97, 146, 254, 194, + 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, + 379, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 0, 0, 85, 86, 87, 358, 357, 360, + 361, 362, 363, 0, 0, 107, 359, 364, 365, 366, + 0, 0, 0, 0, 351, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, + 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, + 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 392, 0, 0, 275, 0, 0, 390, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 1564, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 380, 391, 386, 387, 384, 385, 383, 382, 381, + 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 645, 644, 654, 655, 647, 648, 649, - 650, 651, 652, 653, 646, 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 0, 0, 0, 275, 0, 0, 0, 0, - 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, - 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, - 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, - 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, - 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, - 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, - 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, - 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, - 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, - 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, - 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 0, 145, 0, 379, 147, 0, 0, 219, + 161, 0, 0, 0, 0, 0, 370, 371, 0, 0, + 0, 0, 0, 0, 0, 0, 57, 0, 610, 85, + 86, 87, 358, 357, 360, 361, 362, 363, 0, 0, + 107, 359, 364, 365, 366, 0, 0, 0, 0, 351, + 0, 378, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 349, 0, 0, 0, 0, 393, 0, 350, + 0, 0, 345, 346, 347, 352, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 392, 0, 0, 275, + 0, 0, 390, 0, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, + 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, + 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 380, 391, 386, 387, + 384, 385, 383, 382, 381, 394, 372, 373, 374, 375, + 377, 0, 388, 389, 376, 88, 97, 146, 254, 194, + 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 88, 97, 146, 254, 194, 122, 243, 0, 0, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, + 379, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 0, 370, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 0, 0, 85, 86, 87, 358, 357, 360, + 361, 362, 363, 0, 0, 107, 359, 364, 365, 366, + 0, 0, 0, 0, 351, 0, 378, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 348, 349, 0, 0, + 0, 0, 393, 0, 350, 0, 0, 345, 346, 347, + 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 392, 0, 0, 275, 0, 0, 390, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 380, 391, 386, 387, 384, 385, 383, 382, 381, + 394, 372, 373, 374, 375, 377, 0, 388, 389, 376, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, - 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, - 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, - 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, - 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, - 0, 0, 0, 633, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, - 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 0, 635, 0, 0, 0, 0, 0, - 0, 107, 0, 0, 0, 0, 0, 630, 629, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 631, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 647, 646, 656, + 657, 649, 650, 651, 652, 653, 654, 655, 648, 0, + 0, 658, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 0, 0, 0, 275, + 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, + 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, + 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 97, 146, 254, 194, + 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, - 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, - 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, - 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, - 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, - 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, - 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, - 112, 256, 100, 245, 96, 101, 244, 166, 228, 236, - 160, 153, 95, 234, 158, 152, 143, 120, 131, 190, - 150, 191, 132, 163, 162, 164, 0, 0, 0, 220, - 242, 257, 105, 0, 227, 251, 252, 0, 0, 106, - 125, 119, 189, 123, 165, 102, 134, 217, 142, 149, - 196, 255, 179, 202, 109, 241, 218, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, 173, 0, 0, 0, 635, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, + 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 97, 146, 254, - 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 0, 637, 0, + 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, + 0, 632, 631, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 633, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 98, 104, 110, 114, 118, 121, 127, 130, 133, 135, - 136, 137, 140, 151, 154, 155, 156, 157, 167, 168, - 169, 171, 174, 175, 176, 177, 178, 181, 183, 184, - 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, - 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, - 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, - 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, - 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 107, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 79, 80, 0, 76, 0, 0, 0, 81, - 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, - 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, - 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, - 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, - 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, - 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, - 101, 244, 166, 228, 236, 160, 153, 95, 234, 158, - 152, 143, 120, 131, 190, 150, 191, 132, 163, 162, - 164, 0, 0, 0, 220, 242, 257, 105, 0, 227, - 251, 252, 0, 0, 106, 125, 119, 189, 123, 165, - 102, 134, 217, 142, 149, 196, 255, 179, 202, 109, - 241, 218, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 88, 97, 146, 254, 194, 122, 243, 0, 0, - 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 98, 104, 110, 114, 118, - 121, 127, 130, 133, 135, 136, 137, 140, 151, 154, - 155, 156, 157, 167, 168, 169, 171, 174, 175, 176, - 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, - 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, - 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, - 0, 0, 0, 980, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 0, 126, 79, 80, 0, 76, + 0, 0, 0, 81, 192, 0, 223, 129, 144, 103, + 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, + 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, + 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, + 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, + 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, + 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, + 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, + 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, + 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, + 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, + 255, 179, 202, 109, 241, 218, 0, 78, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 88, 97, 146, 254, 194, + 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 91, 98, + 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, + 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, + 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, + 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, + 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, + 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 303, 0, + 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, 302, 173, + 0, 0, 0, 982, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85, 86, 87, 0, 982, 0, 0, 0, 0, 0, + 85, 86, 87, 0, 984, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2211,11 +2202,11 @@ var yyAct = [...]int{ 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, - 250, 173, 0, 0, 0, 980, 0, 0, 0, 0, + 250, 173, 0, 0, 0, 982, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 85, 86, 87, 0, 982, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 984, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2225,7 +2216,7 @@ var yyAct = [...]int{ 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, - 978, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 980, 200, 148, 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, @@ -2249,7 +2240,7 @@ var yyAct = [...]int{ 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 0, 0, 870, 0, 0, 871, 0, 0, 107, 0, + 0, 0, 872, 0, 0, 873, 0, 0, 107, 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, @@ -2279,10 +2270,10 @@ var yyAct = [...]int{ 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 748, 0, 0, 0, 145, 0, 0, 147, + 117, 0, 750, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 85, 86, 87, 0, 747, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 749, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2315,7 +2306,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 608, 85, 86, 87, + 0, 0, 0, 0, 0, 0, 610, 85, 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2383,7 +2374,7 @@ var yyAct = [...]int{ 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 0, 982, 0, 0, 0, 0, 0, 0, 107, 0, + 0, 984, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2416,7 +2407,7 @@ var yyAct = [...]int{ 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 85, 86, 87, 0, 635, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 637, 0, 0, 0, 0, 0, 0, 107, 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, @@ -2446,7 +2437,7 @@ var yyAct = [...]int{ 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, 250, 173, 0, 0, 0, - 0, 0, 0, 0, 718, 117, 0, 0, 0, 0, + 0, 0, 0, 0, 720, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, @@ -2479,41 +2470,41 @@ var yyAct = [...]int{ 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, 240, 247, - 250, 398, 0, 0, 0, 0, 0, 0, 173, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, - 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, - 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, - 86, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 250, 173, 0, 0, 0, 0, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, + 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 85, 86, 87, 0, 600, 0, 0, 0, + 0, 0, 0, 107, 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, 0, 126, 0, 0, 0, 275, - 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, - 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, - 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, - 229, 193, 238, 248, 249, 226, 246, 253, 216, 92, - 225, 237, 108, 211, 94, 235, 222, 159, 138, 139, - 93, 0, 197, 116, 124, 113, 172, 232, 233, 112, - 256, 100, 245, 96, 101, 244, 166, 228, 236, 160, - 153, 95, 234, 158, 152, 143, 120, 131, 190, 150, - 191, 132, 163, 162, 164, 0, 0, 0, 220, 242, - 257, 105, 0, 227, 251, 252, 0, 0, 106, 125, - 119, 189, 123, 165, 102, 134, 217, 142, 149, 196, - 255, 179, 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 97, 146, 254, 194, - 122, 243, 0, 0, 115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, + 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, + 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, + 182, 200, 148, 229, 193, 238, 248, 249, 226, 246, + 253, 216, 92, 225, 237, 108, 211, 94, 235, 222, + 159, 138, 139, 93, 0, 197, 116, 124, 113, 172, + 232, 233, 112, 256, 100, 245, 96, 101, 244, 166, + 228, 236, 160, 153, 95, 234, 158, 152, 143, 120, + 131, 190, 150, 191, 132, 163, 162, 164, 0, 0, + 0, 220, 242, 257, 105, 0, 227, 251, 252, 0, + 0, 106, 125, 119, 189, 123, 165, 102, 134, 217, + 142, 149, 196, 255, 179, 202, 109, 241, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 98, - 104, 110, 114, 118, 121, 127, 130, 133, 135, 136, - 137, 140, 151, 154, 155, 156, 157, 167, 168, 169, - 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, - 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, - 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, - 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 97, + 146, 254, 194, 122, 243, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 90, 91, 98, 104, 110, 114, 118, 121, 127, 130, + 133, 135, 136, 137, 140, 151, 154, 155, 156, 157, + 167, 168, 169, 171, 174, 175, 176, 177, 178, 181, + 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, + 224, 230, 231, 240, 247, 250, 397, 0, 0, 0, + 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2524,7 +2515,7 @@ var yyAct = [...]int{ 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, - 126, 0, 270, 0, 275, 0, 0, 0, 0, 192, + 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, @@ -2557,7 +2548,7 @@ var yyAct = [...]int{ 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, 126, 0, 0, 0, 275, + 0, 0, 0, 0, 0, 126, 0, 270, 0, 275, 0, 0, 0, 0, 192, 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, 239, 0, 182, 200, 148, @@ -2580,21 +2571,52 @@ var yyAct = [...]int{ 171, 174, 175, 176, 177, 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, 215, 221, 224, 230, 231, - 240, 247, 250, + 240, 247, 250, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 145, 0, + 0, 147, 0, 0, 219, 161, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 85, 86, 87, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 0, 0, 0, 275, 0, 0, 0, 0, 192, + 0, 223, 129, 144, 103, 141, 89, 99, 0, 128, + 170, 199, 203, 0, 0, 0, 111, 0, 201, 180, + 239, 0, 182, 200, 148, 229, 193, 238, 248, 249, + 226, 246, 253, 216, 92, 225, 237, 108, 211, 94, + 235, 222, 159, 138, 139, 93, 0, 197, 116, 124, + 113, 172, 232, 233, 112, 256, 100, 245, 96, 101, + 244, 166, 228, 236, 160, 153, 95, 234, 158, 152, + 143, 120, 131, 190, 150, 191, 132, 163, 162, 164, + 0, 0, 0, 220, 242, 257, 105, 0, 227, 251, + 252, 0, 0, 106, 125, 119, 189, 123, 165, 102, + 134, 217, 142, 149, 196, 255, 179, 202, 109, 241, + 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 97, 146, 254, 194, 122, 243, 0, 0, 115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 90, 91, 98, 104, 110, 114, 118, 121, + 127, 130, 133, 135, 136, 137, 140, 151, 154, 155, + 156, 157, 167, 168, 169, 171, 174, 175, 176, 177, + 178, 181, 183, 184, 185, 186, 187, 188, 195, 198, + 204, 205, 206, 207, 208, 209, 210, 212, 213, 214, + 215, 221, 224, 230, 231, 240, 247, 250, } var yyPact = [...]int{ - 1994, -1000, -273, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1020, 1053, -1000, -1000, -1000, -1000, - -1000, -1000, 349, 11856, -10, 157, -20, 15895, 149, 160, - 16230, -1000, 27, -1000, -1000, -268, -1000, -1000, -1000, -1000, - -1000, -84, -85, -1000, 829, -1000, -1000, -1000, -1000, -1000, - 999, 1017, 832, 1008, 955, -1000, 8494, 104, 104, 15560, - 7154, -1000, -1000, 306, 16230, 155, 16230, -150, 102, 102, - 102, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2399, -1000, -273, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 958, 1004, -1000, -1000, -1000, -1000, + -1000, -1000, 241, 11550, 32, 115, 25, 16260, 114, 1691, + 16595, -1000, 14, -1000, -1000, 11885, -1000, -1000, -59, -63, + -1000, 768, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 942, 956, 790, 937, 1082, -1000, 8188, 80, 80, 15925, + 6848, -1000, -1000, 360, 16595, 108, 16595, -131, 78, 78, + 78, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2609,25 +2631,25 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 146, 16230, - 572, 572, 289, -1000, 16230, 96, 572, 96, 96, 96, - 16230, -1000, 199, -1000, -1000, -1000, 16230, 572, 953, 356, - 82, 4718, -1000, 233, -1000, 4718, 36, 4718, -43, 1029, - 37, -31, -1000, 4718, -1000, -1000, -1000, -1000, -1000, -1000, - 154, 325, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 499, 941, 9846, 9846, 1020, -1000, 829, -1000, -1000, -1000, - 913, 8494, -1000, -1000, 937, -1000, -1000, -1000, -1000, 414, - 1039, -1000, 11521, 198, -1000, 9846, 1666, 775, -1000, -1000, - 775, -1000, -1000, 181, -1000, -1000, 10851, 10851, 10851, 10851, - 10851, 10851, 10851, 10851, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 775, -1000, - 9511, 775, 775, 775, 775, 775, 775, 775, 775, 9846, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 15218, 14213, 16230, 845, - 800, -1000, -1000, 197, 762, 6806, -60, -1000, -1000, -1000, - 316, 13543, -1000, -1000, -1000, 940, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 113, 16595, + 455, 455, 220, -1000, 16595, 76, 455, 76, 76, 76, + 16595, -1000, 148, -1000, -1000, -1000, 16595, 455, 878, 324, + 77, 4412, -1000, 170, -1000, 4412, 22, 4412, -53, 968, + 23, -18, -1000, 4412, -1000, -1000, -1000, -1000, -1000, -1000, + 15583, 139, 242, -1000, -1000, -1000, -1000, -1000, -1000, 481, + 904, 9540, 9540, 958, -1000, 768, -1000, -1000, -1000, 846, + 8188, -1000, -1000, 971, -1000, -1000, -1000, -1000, 357, 977, + -1000, 11215, 147, -1000, 9540, 510, 511, -1000, -1000, 511, + -1000, -1000, 127, -1000, -1000, 10545, 10545, 10545, 10545, 10545, + 10545, 10545, 10545, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 511, -1000, 9205, + 511, 511, 511, 511, 511, 511, 511, 511, 9540, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 15248, 14243, 16595, 803, 715, + -1000, -1000, 143, 724, 6500, -68, -1000, -1000, -1000, 240, + 13573, -1000, -1000, -1000, 877, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2637,223 +2659,209 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 723, 16230, -1000, 2535, -1000, - 572, 4718, 134, 572, 367, 572, 16230, 16230, 4718, 4718, - 4718, 43, 77, 73, 16230, 756, 108, 16230, 976, 842, - 16230, 572, 572, -1000, 6110, -1000, 4718, 356, -1000, 491, - 9846, 4718, 4718, 4718, 16230, 4718, 4718, -1000, -1000, -1000, - 344, -1000, -1000, -1000, -1000, 4718, 4718, -1000, 1038, 334, - -1000, -1000, -1000, -1000, 9846, 262, -1000, 839, -1000, -1000, - -1000, -1000, -1000, -1000, -125, -1000, -1000, -1000, -1000, -1000, - 1048, 253, 361, 196, 741, -1000, 599, 999, 499, 937, - 13208, 752, -1000, 937, -1000, -1000, -1000, 16230, -1000, 9846, - 9846, 516, -1000, 14883, -1000, -1000, 5762, 269, 10851, 477, - 327, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, 10851, - 10851, 10851, 10851, 10851, 10851, 10851, 566, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 572, -1000, 829, 589, 589, - 217, 217, 217, 217, 217, 217, 217, 11186, 7489, 499, - 716, 380, 9511, 8494, 8494, 9846, 9846, 9164, 8829, 8494, - 935, 337, 380, 16230, -1000, -1000, 10516, -1000, -1000, -1000, - -1000, -1000, 499, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 16230, 16230, 8494, 8494, 8494, 8494, 8494, 59, 16230, -1000, - 685, 961, -1000, -1000, -1000, 992, 12538, 12873, 59, 742, - 14213, 16230, -1000, -1000, 14213, 16230, 5414, 6458, -60, -1000, - 637, -1000, -120, -109, 7824, 208, -1000, -1000, -1000, -1000, - 4370, 373, 525, 374, -54, -1000, -1000, -1000, 778, -1000, - 778, 778, 778, 778, -7, -7, -7, -7, -1000, -1000, - -1000, -1000, -1000, 798, 796, -1000, 778, 778, 778, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 791, 791, 791, - 783, 783, 815, -1000, 16230, 4718, 972, 4718, -1000, 75, - -1000, -1000, -1000, 16230, 16230, 16230, 16230, 16230, 168, 16230, - 16230, 698, -1000, 16230, 4718, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 380, -1000, -1000, -1000, -1000, -1000, -1000, - 16230, -1000, -1000, -1000, -1000, 16230, 356, 16230, 16230, 380, - -1000, 480, 16230, -1000, -1000, -1000, -1000, -1000, 909, 9846, - 9846, 6110, 9846, -1000, -1000, -1000, 941, -1000, 1015, -1000, - 918, 917, 1028, 8494, 14213, 937, -1000, 269, 409, -1000, - -1000, 386, -1000, -1000, -1000, -1000, 195, 775, -1000, 1778, - -1000, -1000, -1000, -1000, 477, 10851, 10851, 10851, 148, 1778, - 1001, 1082, 1211, 217, 392, 392, 231, 231, 231, 231, - 231, 1264, 1264, -1000, -1000, -1000, 499, -1000, -1000, -1000, - 499, 8494, 8494, 693, -1000, 9846, -1000, 499, 701, 701, - 463, 371, 298, 1037, 701, 286, 1032, 701, 701, 8494, - -1000, -1000, 357, -1000, 9846, 499, -1000, 192, -1000, 424, - 676, 651, 701, 499, 499, 701, 701, 893, 775, -1000, - 16230, 14213, 14213, 14213, 14213, 14213, -1000, 872, 871, -1000, - 864, 863, 873, 16230, -1000, 703, 12538, 173, 775, -1000, - 14548, -1000, -1000, 1028, 14213, 590, -1000, 590, -1000, 190, - -1000, -1000, 637, -60, -64, -1000, -1000, -1000, -1000, 380, - -1000, 604, 634, 4022, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 786, 572, -1000, 962, 247, 242, 572, 960, -1000, - -1000, -1000, 938, -1000, 379, -76, -1000, -1000, 449, -7, - -7, -1000, -1000, 208, 927, 208, 208, 208, 475, 475, - -1000, -1000, -1000, -1000, 447, -1000, -1000, -1000, 444, -1000, - 838, 16230, 4718, -1000, -1000, -1000, -1000, 292, 292, 246, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 57, 803, -1000, -1000, -1000, -1000, -4, 42, 106, - -1000, 4718, -1000, 334, 334, -1000, -1000, -1000, -1000, -1000, - 903, 380, 380, 179, -1000, -1000, 16230, -1000, -1000, -1000, - -1000, 1018, 9846, -1000, 617, -1000, -1000, -1000, -1000, 5066, - 8494, -1000, 148, 1778, 834, -1000, 10851, 10851, -1000, -1000, - 701, 701, 380, -1000, -1000, -1000, 145, 566, 145, 10851, - 10851, -1000, 10851, 10851, -1000, -164, 643, 339, -1000, 9846, - 476, -1000, 6110, -1000, 10851, 10851, -1000, -1000, -1000, -1000, - -1000, 836, 16230, 775, -1000, 12538, 16230, 766, -1000, 297, - 961, 825, 835, 721, -1000, -1000, -1000, -1000, 857, -1000, - 853, -1000, -1000, -1000, -1000, -1000, 152, 136, 130, 16230, - -1000, 1020, 590, -1000, -1000, 182, -1000, -1000, -129, -114, - -1000, -1000, -1000, 4370, -1000, 4370, 16230, 74, -1000, 572, - 572, -1000, -1000, -1000, 784, 833, 10851, -1000, -1000, -1000, - 508, 208, 208, -1000, 265, -1000, -1000, -1000, 690, -1000, - 672, 614, 667, 16230, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 708, 16595, -1000, 171, -1000, 455, + 4412, 92, 455, 317, 455, 16595, 16595, 4412, 4412, 4412, + 28, 65, 59, 16595, 722, 84, 16595, 930, 816, 16595, + 455, 455, -1000, 5804, -1000, 4412, 324, -1000, 471, 9540, + 4412, 4412, 4412, 16595, 4412, 4412, -1000, -1000, -1000, 296, + -1000, -1000, -1000, -1000, 4412, 4412, -1000, 975, 269, -1000, + -1000, -1000, -1000, 9540, 206, -1000, 815, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -123, -1000, -1000, -1000, + -1000, -1000, 999, 199, 655, 142, 720, -1000, 651, 942, + 481, 971, 13238, 795, -1000, 971, -1000, -1000, -1000, 16595, + -1000, 9540, 9540, 553, -1000, 14913, -1000, -1000, 5456, 210, + 10545, 415, 334, 10545, 10545, 10545, 10545, 10545, 10545, 10545, + 10545, 10545, 10545, 10545, 10545, 10545, 10545, 10545, 574, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 455, -1000, 768, + 653, 653, 164, 164, 164, 164, 164, 164, 164, 10880, + 7183, 481, 706, 383, 9205, 8188, 8188, 9540, 9540, 8858, + 8523, 8188, 906, 251, 383, 16595, -1000, -1000, 10210, -1000, + -1000, -1000, -1000, -1000, 481, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 16595, 16595, 8188, 8188, 8188, 8188, 8188, 41, + 16595, -1000, 741, 951, -1000, -1000, -1000, 932, 12568, 12903, + 41, 601, 14243, 16595, -1000, -1000, 14243, 16595, 5108, 6152, + -68, -1000, 647, -1000, -96, -73, 7518, 144, -1000, -1000, + -1000, -1000, 4064, 375, 505, 262, -47, -1000, -1000, -1000, + 730, -1000, 730, 730, 730, 730, -12, -12, -12, -12, + -1000, -1000, -1000, -1000, -1000, 791, 749, -1000, 730, 730, + 730, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 748, + 748, 748, 732, 732, 794, -1000, 16595, 4412, 929, 4412, + -1000, 96, -1000, -1000, -1000, 16595, 16595, 16595, 16595, 16595, + 122, 16595, 16595, 716, -1000, 16595, 4412, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 383, -1000, -1000, -1000, -1000, + -1000, -1000, 16595, -1000, -1000, -1000, -1000, 16595, 324, 16595, + 16595, 383, -1000, 470, 16595, -1000, -1000, -1000, -1000, -1000, + 835, 9540, 9540, 5804, 9540, -1000, -1000, -1000, 904, -1000, + 952, -1000, 866, 864, 966, 8188, 14243, 971, -1000, 210, + 222, -1000, -1000, 384, -1000, -1000, -1000, -1000, 140, 511, + -1000, 1892, -1000, -1000, -1000, -1000, 415, 10545, 10545, 10545, + 341, 1892, 814, 1638, 1722, 164, 381, 381, 165, 165, + 165, 165, 165, 476, 476, -1000, -1000, -1000, 481, -1000, + -1000, -1000, 481, 8188, 8188, 665, -1000, 9540, -1000, 481, + 701, 701, 617, 630, 295, 974, 701, 282, 973, 701, + 701, 8188, -1000, -1000, 349, -1000, 9540, 481, -1000, 136, + -1000, 424, 654, 652, 701, 481, 481, 701, 701, 899, + 511, -1000, 16595, 14243, 14243, 14243, 14243, 14243, -1000, 829, + 828, -1000, 849, 843, 892, 16595, -1000, 703, 12568, 177, + 511, -1000, 14578, -1000, -1000, 966, 14243, 620, -1000, 620, + -1000, 134, -1000, -1000, 647, -68, -80, -1000, -1000, -1000, + -1000, 383, -1000, 682, 622, 3716, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 743, 455, -1000, 922, 195, 209, 455, + 921, -1000, -1000, -1000, 880, -1000, 329, -70, -1000, -1000, + 426, -12, -12, -1000, -1000, 144, 874, 144, 144, 144, + 454, 454, -1000, -1000, -1000, -1000, 417, -1000, -1000, -1000, + 413, -1000, 810, 16595, 4412, -1000, -1000, -1000, -1000, 363, + 363, 197, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 40, 735, -1000, -1000, -1000, -1000, 10, + 27, 83, -1000, 4412, -1000, 269, 269, -1000, -1000, -1000, + -1000, -1000, 854, 383, 383, 133, -1000, -1000, 16595, -1000, + -1000, -1000, -1000, 964, 9540, -1000, 614, -1000, -1000, -1000, + -1000, 4760, 8188, -1000, 341, 1892, 542, -1000, 10545, 10545, + -1000, -1000, 701, 701, 383, -1000, -1000, -1000, 100, 574, + 100, 10545, 10545, -1000, 10545, 10545, -1000, -143, 754, 244, + -1000, 9540, 475, -1000, 5804, -1000, 10545, 10545, -1000, -1000, + -1000, -1000, -1000, 808, 16595, 511, -1000, 12568, 16595, 764, + -1000, 223, 951, 740, 807, 834, -1000, -1000, -1000, -1000, + 813, -1000, 664, -1000, -1000, -1000, -1000, -1000, 107, 106, + 94, 16595, -1000, 958, 620, -1000, -1000, 181, -1000, -1000, + -113, -103, -1000, -1000, -1000, 4064, -1000, 4064, 16595, 58, + -1000, 455, 455, -1000, -1000, -1000, 736, 802, 10545, -1000, + -1000, -1000, 495, 144, 144, -1000, 356, -1000, -1000, -1000, + 689, -1000, 678, 603, 638, 16595, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 16230, -1000, -1000, -1000, -1000, -1000, 16230, - -169, 572, 16230, 16230, 16230, 16230, -1000, 356, 356, -1000, - 6110, -1000, 1025, 1016, 380, -1000, -1000, 499, -1000, 10851, - 1778, 1778, -1000, -1000, 499, 778, 778, -1000, 778, 783, - -1000, 778, 15, 778, 12, 499, 499, 1684, 1613, 1572, - 582, 775, -158, -1000, 380, 9846, -1000, 538, 511, -1000, - 964, 550, 539, -1000, -1000, 8159, 499, 665, 177, 663, - -1000, 1020, 16230, 9846, -1000, -1000, 9846, 780, -1000, 9846, - -1000, -1000, -1000, 775, 775, 775, 663, 999, -1000, -1000, - -1000, -1000, 4022, -1000, 656, -1000, 778, -1000, -1000, -1000, - 16230, -40, 1047, 1778, -1000, -1000, -1000, -1000, -1000, -7, - 473, -7, 441, -1000, 421, 4718, -1000, -1000, -1000, -1000, - 967, -1000, 6110, -1000, -1000, 777, 809, -1000, -1000, -1000, - -1000, -1000, 9846, 9846, -1000, 1778, -1000, -1000, 129, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 10851, 10851, 10851, - 10851, 10851, 999, 471, 380, 10851, 10851, 959, -1000, 775, - -1000, -1000, 816, 16230, 16230, -1000, 16230, 999, -1000, 380, - 380, 16230, 380, 13878, 16230, 16230, 12191, -1000, 169, 16230, - -1000, 649, -1000, 214, -1000, -80, 208, -1000, 208, 506, - 502, -1000, 775, 611, -1000, 294, 16230, 16230, 380, 593, - -1000, -1000, 424, 424, 424, 424, 50, 499, -1000, 424, - 424, 1046, -1000, 775, -1000, 829, 174, -1000, -1000, -1000, - 647, 645, -1000, 645, 645, 173, 169, -1000, 572, 283, - 456, -1000, 71, 16230, 402, 958, -1000, 956, -1000, -1000, - -1000, -1000, -1000, 56, 6110, 4370, 640, -1000, -1000, -1000, - -1000, -1000, 499, 51, -174, -1000, -1000, -1000, 16230, 539, - 499, 16230, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 420, - -1000, -1000, 16230, -1000, -1000, 451, -1000, -1000, 523, -1000, - 16230, -1000, -1000, 803, -1000, 887, -167, -177, 534, -1000, - -1000, -1000, 776, -1000, -1000, 56, 916, -169, -1000, 884, - -1000, 16230, -1000, 49, -1000, -171, 513, 47, -175, 820, - 775, -179, 817, -1000, 1036, 10181, -1000, -1000, 1042, 193, - 193, 424, 499, -1000, -1000, -1000, 81, 440, -1000, -1000, - -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 16595, -1000, -1000, -1000, -1000, + -1000, 16595, -155, 455, 16595, 16595, 16595, 16595, -1000, 324, + 324, -1000, 5804, -1000, 960, 953, 383, -1000, -1000, 481, + -1000, 10545, 1892, 1892, -1000, -1000, 481, 730, 730, -1000, + 730, 732, -1000, 730, 5, 730, 4, 481, 481, 1859, + 1606, 1513, 1191, 511, -138, -1000, 383, 9540, -1000, 1044, + 734, -1000, 905, 597, 532, -1000, -1000, 7853, 481, 628, + 132, 626, -1000, 958, 16595, 9540, -1000, -1000, 9540, 731, + -1000, 9540, -1000, -1000, -1000, 511, 511, 511, 626, 942, + -1000, -1000, -1000, -1000, 3716, -1000, 612, -1000, 730, -1000, + -1000, -1000, 16595, -39, 991, 1892, -1000, -1000, -1000, -1000, + -1000, -12, 447, -12, 410, -1000, 391, 4412, -1000, -1000, + -1000, -1000, 925, -1000, 5804, -1000, -1000, 729, 742, -1000, + -1000, -1000, -1000, -1000, 9540, 9540, -1000, 1892, -1000, -1000, + 119, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 10545, + 10545, 10545, 10545, 10545, 942, 442, 383, 10545, 10545, 920, + -1000, 511, -1000, -1000, 809, 16595, 16595, -1000, 16595, 942, + -1000, 383, 383, 16595, 383, 13908, 16595, 16595, 12221, -1000, + 154, 16595, -1000, 605, -1000, 187, -1000, -119, 144, -1000, + 144, 486, 484, -1000, 511, 567, -1000, 218, 16595, 16595, + 383, 563, -1000, -1000, 424, 424, 424, 424, -2, 481, + -1000, 424, 424, 984, -1000, 511, -1000, 768, 131, -1000, + -1000, -1000, 571, 537, -1000, 537, 537, 177, 154, -1000, + 455, 216, 441, -1000, 54, 16595, 355, 913, -1000, 902, + -1000, -1000, -1000, -1000, -1000, 39, 5804, 4064, 534, -1000, + -1000, -1000, -1000, -1000, 481, 64, -159, -1000, -1000, -1000, + 16595, 532, 481, 16595, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 386, -1000, -1000, 16595, -1000, -1000, 432, -1000, -1000, + 498, -1000, 16595, -1000, -1000, 735, -1000, 850, -153, -163, + 508, -1000, -1000, -1000, 726, -1000, -1000, 39, 862, -155, + -1000, 836, -1000, 16595, -1000, 35, -1000, -156, 480, 33, + -161, 800, 511, -178, 799, -1000, 972, 9875, -1000, -1000, + 982, 169, 169, 424, 481, -1000, -1000, -1000, 66, 422, + -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1299, 43, 599, 1298, 1297, 1295, 1294, 1293, 88, - 87, 86, 1292, 1284, 1280, 1279, 1278, 1277, 1276, 1275, - 1268, 1267, 1266, 1265, 1263, 1262, 1260, 1259, 1251, 96, - 1248, 1247, 1246, 1242, 1241, 1240, 1236, 1235, 1234, 39, - 193, 42, 56, 1233, 53, 1243, 1232, 69, 57, 61, - 1231, 31, 1230, 1229, 72, 1228, 1223, 50, 1221, 1219, - 45, 1218, 67, 1216, 12, 81, 1214, 1213, 1212, 1211, - 76, 140, 1209, 1208, 15, 1206, 1203, 79, 1198, 52, - 20, 14, 19, 18, 1192, 605, 7, 1191, 51, 1179, - 1177, 1174, 1171, 22, 1169, 58, 1163, 54, 59, 1162, - 13, 78, 30, 21, 5, 1151, 1150, 17, 64, 48, - 62, 1148, 1147, 510, 1146, 1145, 46, 1143, 1141, 1140, - 29, 1139, 89, 504, 1138, 1137, 1136, 1135, 33, 884, - 1891, 11, 65, 1134, 1132, 1129, 2625, 32, 49, 23, - 1127, 63, 167, 37, 1126, 1125, 35, 1124, 1123, 1122, - 1119, 1118, 1117, 1114, 66, 1113, 1111, 1096, 137, 25, - 1094, 1093, 68, 24, 1092, 1091, 1090, 47, 60, 1089, - 1088, 55, 1086, 1085, 26, 1084, 1083, 1081, 1080, 1079, - 28, 6, 1077, 16, 1076, 10, 1075, 27, 1074, 4, - 1073, 8, 1070, 3, 0, 1068, 9, 36, 2, 1066, - 1, 1064, 1060, 1525, 710, 73, 1047, 92, + 0, 1250, 15, 559, 1249, 1248, 1247, 1245, 1244, 91, + 88, 85, 1243, 1242, 1241, 1240, 1238, 1237, 1231, 1225, + 1224, 1216, 1215, 1211, 1209, 1207, 1206, 1205, 1204, 89, + 1201, 1195, 1194, 1193, 1192, 1191, 1190, 1189, 1188, 1186, + 45, 65, 51, 61, 1185, 64, 2064, 1183, 56, 60, + 57, 1181, 31, 1180, 1179, 81, 1178, 1177, 55, 1176, + 1175, 1773, 1172, 90, 1170, 11, 54, 1168, 1165, 1156, + 1154, 78, 1078, 1153, 1139, 10, 1138, 1137, 87, 1133, + 59, 17, 12, 13, 19, 1132, 1140, 7, 1131, 58, + 1129, 1128, 1122, 1121, 24, 1120, 63, 1118, 47, 62, + 1117, 27, 72, 37, 23, 6, 1115, 1114, 21, 73, + 52, 68, 1110, 1109, 501, 1108, 1106, 49, 1104, 1100, + 1098, 26, 1097, 139, 432, 1095, 1093, 1091, 1089, 39, + 825, 1687, 22, 69, 1088, 1087, 1086, 2317, 42, 53, + 18, 1083, 35, 116, 36, 1082, 1081, 43, 1080, 1079, + 1077, 1076, 1075, 1074, 1073, 181, 1070, 1069, 1068, 32, + 20, 1063, 1062, 66, 25, 1061, 1057, 1053, 50, 76, + 1052, 1051, 48, 1049, 1047, 30, 1046, 1045, 1041, 1039, + 1038, 33, 29, 1037, 14, 1034, 9, 1033, 28, 1032, + 5, 1031, 8, 1029, 2, 0, 1026, 4, 44, 3, + 1021, 1, 1018, 1017, 1212, 389, 80, 1011, 79, } var yyR1 = [...]int{ - 0, 201, 202, 202, 1, 1, 1, 1, 1, 1, + 0, 202, 203, 203, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 194, 194, 194, 2, + 1, 1, 1, 1, 1, 1, 195, 195, 195, 2, 2, 2, 8, 3, 4, 4, 5, 5, 9, 9, - 32, 32, 10, 11, 11, 11, 11, 205, 205, 54, - 54, 55, 55, 101, 101, 12, 13, 13, 110, 110, - 109, 109, 109, 111, 111, 111, 111, 144, 144, 14, - 14, 14, 14, 14, 14, 14, 196, 196, 195, 193, - 193, 192, 192, 191, 20, 176, 178, 178, 177, 177, - 177, 177, 168, 147, 147, 147, 147, 150, 150, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, - 149, 149, 149, 151, 151, 151, 151, 151, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 153, 153, 153, 153, 153, 153, 153, - 153, 167, 167, 154, 154, 162, 162, 163, 163, 163, - 160, 160, 161, 161, 164, 164, 164, 156, 156, 157, - 157, 165, 165, 158, 158, 158, 159, 159, 159, 166, - 166, 166, 166, 166, 155, 155, 169, 169, 186, 186, - 185, 185, 185, 175, 175, 182, 182, 182, 182, 182, - 172, 172, 172, 173, 173, 171, 171, 174, 174, 184, - 184, 183, 170, 170, 187, 187, 187, 187, 199, 200, - 198, 198, 198, 198, 198, 179, 179, 179, 180, 180, - 180, 181, 181, 181, 15, 15, 15, 15, 15, 15, + 32, 32, 10, 11, 11, 11, 11, 206, 206, 55, + 55, 56, 56, 102, 102, 12, 13, 13, 111, 111, + 110, 110, 110, 112, 112, 112, 112, 145, 145, 14, + 14, 14, 14, 14, 14, 14, 197, 197, 196, 194, + 194, 193, 193, 192, 20, 177, 179, 179, 178, 178, + 178, 178, 169, 148, 148, 148, 148, 151, 151, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 150, 150, + 150, 150, 150, 152, 152, 152, 152, 152, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 154, 154, 154, 154, 154, 154, 154, + 154, 168, 168, 155, 155, 163, 163, 164, 164, 164, + 161, 161, 162, 162, 165, 165, 165, 157, 157, 158, + 158, 166, 166, 159, 159, 159, 160, 160, 160, 167, + 167, 167, 167, 167, 156, 156, 170, 170, 187, 187, + 186, 186, 186, 176, 176, 183, 183, 183, 183, 183, + 173, 173, 173, 174, 174, 172, 172, 175, 175, 185, + 185, 184, 171, 171, 188, 188, 188, 188, 200, 201, + 199, 199, 199, 199, 199, 180, 180, 180, 181, 181, + 181, 182, 182, 182, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 190, 188, 188, 189, 189, + 15, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 191, 189, 189, 190, 190, 16, 21, 21, 17, 17, 17, 17, 17, 18, 18, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 117, 117, - 119, 119, 115, 115, 118, 118, 116, 116, 116, 120, - 120, 120, 121, 121, 145, 145, 145, 24, 24, 26, - 26, 27, 28, 33, 33, 33, 33, 33, 34, 34, - 34, 7, 7, 7, 7, 6, 25, 25, 25, 25, - 25, 25, 25, 19, 206, 29, 30, 30, 31, 31, - 31, 36, 36, 36, 35, 35, 35, 41, 41, 43, - 43, 43, 43, 43, 44, 44, 44, 44, 44, 44, - 40, 40, 42, 42, 42, 42, 133, 133, 133, 132, - 132, 46, 46, 47, 47, 48, 48, 49, 49, 49, - 49, 63, 63, 100, 100, 102, 102, 50, 50, 50, - 50, 51, 51, 52, 52, 53, 53, 140, 140, 139, - 139, 139, 138, 138, 56, 56, 56, 58, 57, 57, - 57, 57, 59, 59, 61, 61, 60, 60, 62, 64, - 64, 64, 64, 64, 65, 65, 45, 45, 45, 45, - 45, 45, 45, 114, 114, 67, 67, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 78, 78, 78, - 78, 78, 78, 68, 68, 68, 68, 68, 68, 68, - 39, 39, 79, 79, 79, 85, 80, 80, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 75, 75, 75, 75, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 207, 207, 77, 76, 76, 76, 76, - 76, 76, 76, 37, 37, 37, 37, 37, 143, 143, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 89, 89, 38, 38, 87, 87, 88, - 90, 90, 86, 86, 86, 70, 70, 70, 70, 70, - 70, 70, 70, 72, 72, 72, 91, 91, 92, 92, - 93, 93, 94, 94, 95, 96, 96, 96, 97, 97, - 97, 97, 98, 98, 98, 69, 69, 69, 69, 69, - 69, 99, 99, 99, 99, 103, 103, 81, 81, 83, - 83, 82, 84, 104, 104, 107, 105, 105, 105, 108, - 108, 108, 108, 106, 106, 106, 135, 135, 135, 112, - 112, 122, 122, 123, 123, 113, 113, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, - 126, 126, 127, 127, 127, 134, 134, 130, 130, 131, - 131, 136, 136, 137, 137, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 23, 23, 23, 23, 23, 23, 23, 23, 118, 118, + 120, 120, 116, 116, 119, 119, 117, 117, 117, 121, + 121, 121, 122, 122, 146, 146, 146, 24, 24, 26, + 26, 27, 28, 33, 33, 33, 33, 33, 33, 35, + 35, 35, 7, 7, 7, 7, 34, 34, 34, 6, + 6, 25, 25, 25, 25, 19, 207, 29, 30, 30, + 31, 31, 31, 37, 37, 37, 36, 36, 36, 42, + 42, 44, 44, 44, 44, 44, 45, 45, 45, 45, + 45, 45, 41, 41, 43, 43, 43, 43, 134, 134, + 134, 133, 133, 47, 47, 48, 48, 49, 49, 50, + 50, 50, 50, 64, 64, 101, 101, 103, 103, 51, + 51, 51, 51, 52, 52, 53, 53, 54, 54, 141, + 141, 140, 140, 140, 139, 139, 57, 57, 57, 59, + 58, 58, 58, 58, 60, 60, 62, 62, 61, 61, + 63, 65, 65, 65, 65, 65, 66, 66, 46, 46, + 46, 46, 46, 46, 46, 115, 115, 68, 68, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 79, + 79, 79, 79, 79, 79, 69, 69, 69, 69, 69, + 69, 69, 40, 40, 80, 80, 80, 86, 81, 81, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 76, 76, 76, 76, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 208, 208, 78, 77, 77, + 77, 77, 77, 77, 77, 38, 38, 38, 38, 38, + 144, 144, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 90, 90, 39, 39, 88, + 88, 89, 91, 91, 87, 87, 87, 71, 71, 71, + 71, 71, 71, 71, 71, 73, 73, 73, 92, 92, + 93, 93, 94, 94, 95, 95, 96, 97, 97, 97, + 98, 98, 98, 98, 99, 99, 99, 70, 70, 70, + 70, 70, 70, 100, 100, 100, 100, 104, 104, 82, + 82, 84, 84, 83, 85, 105, 105, 108, 106, 106, + 106, 109, 109, 109, 109, 107, 107, 107, 136, 136, + 136, 113, 113, 123, 123, 124, 124, 114, 114, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 126, + 126, 126, 127, 127, 128, 128, 128, 135, 135, 131, + 131, 132, 132, 137, 137, 138, 138, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, @@ -2865,8 +2873,25 @@ var yyR1 = [...]int{ 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 203, 204, 141, 142, 142, 142, + 129, 129, 129, 129, 129, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 204, 205, 142, 143, + 143, 143, } var yyR2 = [...]int{ @@ -2903,41 +2928,41 @@ var yyR2 = [...]int{ 0, 1, 0, 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, 0, 1, 1, 2, 1, 1, 2, 1, 1, 0, 3, 3, 3, 3, 1, 1, - 1, 1, 1, 1, 1, 3, 2, 2, 2, 2, - 2, 3, 3, 2, 0, 2, 0, 2, 1, 2, - 2, 0, 1, 1, 0, 1, 1, 0, 1, 0, - 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 2, 3, 5, 0, 1, 2, 1, - 1, 0, 2, 1, 3, 1, 1, 1, 3, 1, - 3, 3, 7, 1, 3, 1, 3, 4, 4, 4, - 3, 2, 4, 0, 1, 0, 2, 0, 1, 0, - 1, 2, 1, 1, 1, 2, 2, 1, 2, 3, - 2, 3, 2, 2, 2, 1, 1, 3, 3, 0, - 5, 4, 5, 5, 0, 2, 1, 3, 3, 2, - 3, 1, 2, 0, 3, 1, 1, 3, 3, 4, - 4, 5, 3, 4, 5, 6, 2, 1, 2, 1, - 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 0, 2, 1, 1, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, - 4, 5, 5, 6, 4, 4, 6, 6, 6, 8, - 8, 8, 8, 9, 8, 5, 4, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, + 3, 2, 2, 3, 3, 2, 0, 2, 0, 2, + 1, 2, 2, 0, 1, 1, 0, 1, 1, 0, + 1, 0, 1, 2, 3, 4, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 2, 3, 5, 0, 1, + 2, 1, 1, 0, 2, 1, 3, 1, 1, 1, + 3, 1, 3, 3, 7, 1, 3, 1, 3, 4, + 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, + 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, + 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, + 3, 0, 5, 4, 5, 5, 0, 2, 1, 3, + 3, 2, 3, 1, 2, 0, 3, 1, 1, 3, + 3, 4, 4, 5, 3, 4, 5, 6, 2, 1, + 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 0, 2, 1, 1, 1, 3, 1, 3, + 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, + 1, 1, 4, 5, 5, 6, 4, 4, 6, 6, + 6, 8, 8, 8, 8, 9, 8, 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 8, 8, 0, 2, 3, 4, 4, 4, 4, - 4, 4, 4, 0, 3, 4, 7, 3, 1, 1, - 2, 3, 3, 1, 2, 2, 1, 2, 1, 2, - 2, 1, 2, 0, 1, 0, 2, 1, 2, 4, - 0, 2, 1, 3, 5, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 0, 3, 0, 2, - 0, 3, 1, 3, 2, 0, 1, 1, 0, 2, - 4, 4, 0, 2, 4, 2, 1, 3, 5, 4, - 6, 1, 3, 3, 5, 0, 5, 1, 3, 1, - 2, 3, 1, 1, 3, 3, 1, 2, 3, 3, - 3, 3, 3, 1, 2, 1, 1, 1, 1, 1, - 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 1, 1, 0, 1, 1, 0, 2, 1, 1, 1, + 2, 2, 2, 8, 8, 0, 2, 3, 4, 4, + 4, 4, 4, 4, 4, 0, 3, 4, 7, 3, + 1, 1, 2, 3, 3, 1, 2, 2, 1, 2, + 1, 2, 2, 1, 2, 0, 1, 0, 2, 1, + 2, 4, 0, 2, 1, 3, 5, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 0, 3, + 0, 2, 0, 3, 1, 3, 2, 0, 1, 1, + 0, 2, 4, 4, 0, 2, 4, 2, 1, 3, + 5, 4, 6, 1, 3, 3, 5, 0, 5, 1, + 3, 1, 2, 3, 1, 1, 3, 3, 1, 2, + 3, 3, 3, 3, 3, 1, 2, 1, 1, 1, + 1, 1, 1, 0, 2, 0, 3, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, 1, 1, 0, 2, 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, 1, 1, @@ -2967,19 +2992,20 @@ var yyR2 = [...]int{ 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, 1, - 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, } var yyChk = [...]int{ - -1000, -201, -1, -2, -8, -9, -10, -11, -12, -13, + -1000, -202, -1, -2, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -22, -23, -24, -26, -27, -28, -6, -25, -19, -3, -4, 6, 7, -32, 9, 10, 30, -20, 119, 120, 122, 121, 155, 123, 148, - 52, 169, 170, 172, 173, -34, 25, 149, 150, 153, - 154, 31, 32, 125, -203, 8, 255, 56, -202, 357, - -93, 15, -31, 5, -29, -206, -29, -29, -29, -29, - -29, -176, -178, 56, 94, -127, 129, 76, 247, 126, - 127, 133, -130, -194, -129, 59, 60, 61, 265, 141, + 52, 169, 170, 172, 173, -35, 153, 154, 31, 32, + 125, -204, 8, 255, 150, 149, 25, 56, -203, 357, + -94, 15, -31, 5, -29, -207, -29, -29, -29, -29, + -29, -177, -179, 56, 94, -128, 129, 76, 247, 126, + 127, 133, -131, -195, -130, 59, 60, 61, 265, 141, 297, 298, 169, 180, 174, 201, 193, 266, 299, 142, 191, 194, 234, 139, 300, 221, 228, 70, 172, 243, 301, 151, 189, 185, 302, 274, 183, 27, 303, 230, @@ -2996,300 +3022,300 @@ var yyChk = [...]int{ 218, 346, 176, 136, 347, 170, 165, 223, 197, 160, 348, 349, 187, 188, 202, 175, 198, 171, 162, 155, 350, 244, 219, 271, 195, 192, 166, 351, 163, 164, - 352, 224, 225, 167, 268, 240, 190, 220, -113, 129, + 352, 224, 225, 167, 268, 240, 190, 220, -114, 129, 247, 126, 225, 131, 127, 127, 128, 129, 247, 126, - 127, -60, -136, -194, -129, 129, 127, 112, 194, 234, - 119, 222, 230, -119, 231, 161, -145, 127, -115, 221, - 224, 225, 167, -194, 232, 236, 235, 226, -136, 171, - -33, 353, -141, -141, -141, -141, -141, 223, 223, -141, - -2, -97, 17, 16, -5, -3, -203, 6, 20, 21, - -36, -43, 41, 42, -44, 21, 34, 45, 43, -30, - -42, 103, -45, -136, -66, 78, -71, 29, -194, -129, - 23, -70, -67, -86, -84, -85, 112, 113, 114, 101, - 102, 109, 79, 115, -75, -73, -74, -76, 63, 62, - 71, 64, 65, 66, 67, 72, 73, 74, -130, -82, - -203, 46, 47, 256, 257, 258, 259, 264, 260, 81, - 35, 246, 254, 253, 252, 250, 251, 248, 249, 262, - 263, 132, 247, 126, 107, 255, -113, -113, 11, -54, - -55, -60, -62, -136, -105, -144, 171, -108, 236, 235, - -131, -106, -130, -128, 234, 194, 233, 124, 272, 77, - 22, 24, 216, 80, 112, 16, 81, 111, 256, 119, - 50, 273, 248, 249, 246, 258, 259, 247, 222, 29, - 10, 275, 25, 149, 21, 34, 105, 121, 84, 85, - 152, 23, 150, 74, 278, 19, 53, 11, 13, 279, - 280, 14, 132, 131, 96, 128, 48, 8, 115, 26, - 93, 44, 281, 28, 282, 283, 284, 285, 46, 94, - 17, 250, 251, 31, 286, 264, 156, 107, 51, 37, - 78, 287, 288, 72, 289, 75, 54, 76, 15, 49, - 290, 291, 292, 293, 95, 122, 255, 47, 294, 126, - 6, 261, 30, 148, 45, 295, 127, 83, 262, 263, - 130, 73, 5, 133, 32, 9, 52, 55, 252, 253, - 254, 35, 82, 12, 296, -177, 94, -168, -194, -60, - 128, -60, 255, -123, 132, -123, -123, 127, -60, -194, - -194, 119, 121, 124, 54, -21, -60, -122, 132, -194, - -122, -122, -122, -60, 116, -60, -194, 30, -120, 94, - 12, 247, -194, 161, 127, 162, 129, -142, -203, -131, - -172, 128, 33, 140, -142, 165, 166, -142, -118, -117, - 228, 229, 223, 227, 12, 166, 223, 164, -142, -7, - -2, -10, -9, -11, 86, -141, -141, -204, 58, -98, - 19, 31, -45, -136, -94, -95, -45, -93, -2, -29, - 37, -40, -42, -44, 41, 42, 69, 11, -133, 77, - 76, 93, -132, 22, -130, 63, 116, -45, -68, 96, - 78, 94, 95, 80, 98, 97, 108, 101, 102, 103, - 104, 105, 106, 107, 99, 100, 111, 86, 87, 88, - 89, 90, 91, 92, -114, -203, -85, -203, 117, 118, - -71, -71, -71, -71, -71, -71, -71, -71, -203, -2, - -80, -45, -203, -203, -203, -203, -203, -203, -203, -203, - -203, -89, -45, -203, -207, -77, -203, -207, -77, -207, - -77, -207, -203, -207, -77, -207, -77, -207, -207, -77, - -203, -203, -203, -203, -203, -203, -203, -61, 26, -60, - -47, -48, -49, -50, -63, -85, -203, -60, -60, -54, - -205, 57, 11, 55, -205, 57, 116, 57, 171, -108, - -110, -109, 237, 239, 86, -135, -130, 63, 29, 30, - 58, 57, -60, -147, -150, -152, -151, -153, -148, -149, - 191, 192, 112, 195, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 30, 151, 187, 188, 189, 190, - 207, 208, 209, 210, 211, 212, 213, 214, 174, 193, - 266, 175, 176, 177, 178, 179, 180, 182, 183, 184, - 185, 186, -194, -142, 129, -194, 78, -194, -60, -60, - -142, -142, -142, 163, 163, 127, 127, 168, -60, 57, - 130, -54, 23, 54, -60, -194, -194, -137, -136, -128, - -142, -120, 63, -45, -142, -142, -142, -60, -142, -142, - -173, 11, 96, -142, -142, 11, -116, 11, 96, -45, - -121, 94, 54, 205, 354, 355, 356, 9, 96, 57, - 18, 116, 57, -96, 24, 25, -97, -204, -72, -130, - 64, 67, -46, 57, 11, -44, -60, -45, -45, -78, - 72, 78, 73, 74, -132, 103, -137, -131, -128, -71, - -79, -82, -85, 68, 96, 94, 95, 80, -71, -71, - -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, - -71, -71, -71, -143, -194, 63, -194, -70, -70, -130, - -41, 21, 34, -40, -204, 57, -204, -2, -40, -40, - -45, -45, -86, 63, -40, -86, 63, -40, -40, -35, - 21, 34, -87, -88, 82, -86, -130, -136, -204, -71, - -130, -130, -40, -41, -41, -40, -40, -101, 157, -60, - 30, 57, -56, -58, -57, -59, 44, 48, 50, 45, - 46, 47, 51, -140, 22, -47, -203, -139, 157, -138, - 22, -136, 63, -101, 55, -47, -60, -47, -62, -136, - 103, -108, -110, 57, 238, 240, 241, 54, 75, -45, - -159, 111, -179, -180, -181, -131, 63, 64, -168, -169, - -170, -182, 143, -187, 134, 136, 133, -171, 144, 128, - 28, 58, -164, 72, 78, -160, 219, -154, 56, -154, - -154, -154, -154, -158, 194, -158, -158, -158, 56, 56, - -154, -154, -154, -162, 56, -162, -162, -163, 56, -163, - -134, 55, -60, -142, 23, -142, -124, 124, 121, 122, - -190, 120, 216, 194, 70, 29, 15, 256, 157, 271, - -194, 158, -60, -60, -60, -60, -60, 124, 121, -60, - -60, -60, -142, -60, -60, -120, -136, -136, 63, -60, - 39, -45, -45, -137, -95, -98, -112, 19, 11, 35, - 35, -65, 12, -42, -47, -44, 72, 73, 74, 116, - -203, -79, -71, -71, -71, -39, 152, 77, -204, -204, - -40, -40, -45, -204, -204, -204, 57, 55, 22, 11, - 11, -204, 11, 11, -204, -204, -40, -90, -88, 84, - -45, -204, 116, -204, 57, 57, -204, -204, -204, -204, - -204, -69, 30, 35, -2, -203, -203, -104, -107, -86, - -48, -49, -49, -48, -49, 44, 44, 44, 49, 44, - 49, 44, -57, -136, -204, -64, 52, 131, 53, -203, - -138, -65, -47, -65, -65, 116, -109, -111, 242, 239, - 245, -194, 63, 57, -181, 86, 56, -194, 28, -171, - -171, -174, -194, -174, 28, -156, 29, 72, -161, 220, - 64, -158, -158, -159, 30, -159, -159, -159, -167, 63, - -167, 64, 64, 54, -130, -142, -141, -197, 139, 135, - 143, 144, 137, 59, 60, 61, 128, 28, 134, 136, - 157, 133, -197, -125, -126, 130, 22, 128, 28, 157, - -196, 55, 163, 216, 163, 130, -142, -116, -116, 40, - 116, -60, -91, 13, -45, 103, -131, -41, -39, 77, - -71, -71, -204, -204, -146, 112, 191, 151, 189, 185, - 205, 196, 218, 187, 219, -143, -146, -71, -71, -71, - -71, 265, -93, 85, -45, 83, -131, -71, -71, -103, - 54, -104, -81, -83, -82, -203, -2, -99, -130, -102, - -130, -65, 57, 86, -52, -51, 54, 55, -53, 54, - -51, 44, 44, 128, 128, 128, -102, -93, -65, 239, - 243, 244, -180, -181, -184, -183, -130, -187, -174, -174, - 56, -157, 54, -71, 58, -159, -159, -194, 112, 58, - 57, 58, 57, 58, 57, -60, -141, -141, -60, -141, - -130, -193, 268, -195, -194, -130, -130, -130, -60, -120, - -120, -92, 14, 16, -204, -71, -204, -154, -154, -154, - -163, -154, 179, -154, 179, -204, -204, 19, 19, 19, - 19, -203, -38, 261, -45, 57, 57, 27, -103, 57, - -204, -204, -204, 57, 116, -204, 57, -93, -107, -45, - -45, 56, -45, -203, -203, -203, -204, -97, 58, 57, - -154, -100, -130, -165, 216, 9, -158, 63, -158, 64, - 64, -142, 26, -192, -191, -131, 56, 55, -45, -80, - -158, -194, -71, -71, -71, -71, -71, -97, 63, -71, - -71, 28, -83, 35, -2, -203, -130, -130, -130, -97, - -100, -100, -204, -100, -100, -139, -186, -185, 55, 138, - 70, -183, 58, 57, -166, 134, 28, 133, -74, -159, - -159, 58, 58, -203, 57, 86, -100, -60, -204, -204, - -204, -204, -37, 96, 268, -204, -204, -204, 9, -81, - -2, 116, 58, -204, -204, -204, -64, -185, -194, -175, - 86, 63, 146, -130, -155, 70, 28, 28, -188, -189, - 157, -191, -181, 58, -204, 266, 51, 269, -104, -204, - -130, 64, -60, 63, -204, 57, -130, -196, 40, 267, - 270, 56, -189, 35, -193, 40, -100, 159, 268, 58, - 160, 269, -199, -200, 54, -203, 270, -200, 54, 10, - 9, -71, 156, -198, 147, 142, 145, 30, -198, -204, - -204, 141, 29, 72, + 127, -61, -137, -195, -130, 129, 127, 112, 194, 234, + 119, 222, 230, -120, 231, 161, -146, 127, -116, 221, + 224, 225, 167, -195, 232, 236, 235, 226, -137, 171, + -61, -33, 353, 123, -142, -142, 223, 223, -142, -2, + -98, 17, 16, -5, -3, -204, 6, 20, 21, -37, + -44, 41, 42, -45, 21, 34, 45, 43, -30, -43, + 103, -46, -137, -67, 78, -72, 29, -195, -130, 23, + -71, -68, -87, -85, -86, 112, 113, 114, 101, 102, + 109, 79, 115, -76, -74, -75, -77, 63, 62, 71, + 64, 65, 66, 67, 72, 73, 74, -131, -83, -204, + 46, 47, 256, 257, 258, 259, 264, 260, 81, 35, + 246, 254, 253, 252, 250, 251, 248, 249, 262, 263, + 132, 247, 126, 107, 255, -114, -114, 11, -55, -56, + -61, -63, -137, -106, -145, 171, -109, 236, 235, -132, + -107, -131, -129, 234, 194, 233, 124, 272, 77, 22, + 24, 216, 80, 112, 16, 81, 111, 256, 119, 50, + 273, 248, 249, 246, 258, 259, 247, 222, 29, 10, + 275, 25, 149, 21, 34, 105, 121, 84, 85, 152, + 23, 150, 74, 278, 19, 53, 11, 13, 279, 280, + 14, 132, 131, 96, 128, 48, 8, 115, 26, 93, + 44, 281, 28, 282, 283, 284, 285, 46, 94, 17, + 250, 251, 31, 286, 264, 156, 107, 51, 37, 78, + 287, 288, 72, 289, 75, 54, 76, 15, 49, 290, + 291, 292, 293, 95, 122, 255, 47, 294, 126, 6, + 261, 30, 148, 45, 295, 127, 83, 262, 263, 130, + 73, 5, 133, 32, 9, 52, 55, 252, 253, 254, + 35, 82, 12, 296, -178, 94, -169, -195, -61, 128, + -61, 255, -124, 132, -124, -124, 127, -61, -195, -195, + 119, 121, 124, 54, -21, -61, -123, 132, -195, -123, + -123, -123, -61, 116, -61, -195, 30, -121, 94, 12, + 247, -195, 161, 127, 162, 129, -143, -204, -132, -173, + 128, 33, 140, -143, 165, 166, -143, -119, -118, 228, + 229, 223, 227, 12, 166, 223, 164, -143, -34, -131, + 63, -7, -2, -10, -9, -11, 86, -142, -142, -205, + 58, -99, 19, 31, -46, -137, -95, -96, -46, -94, + -2, -29, 37, -41, -43, -45, 41, 42, 69, 11, + -134, 77, 76, 93, -133, 22, -131, 63, 116, -46, + -69, 96, 78, 94, 95, 80, 98, 97, 108, 101, + 102, 103, 104, 105, 106, 107, 99, 100, 111, 86, + 87, 88, 89, 90, 91, 92, -115, -204, -86, -204, + 117, 118, -72, -72, -72, -72, -72, -72, -72, -72, + -204, -2, -81, -46, -204, -204, -204, -204, -204, -204, + -204, -204, -204, -90, -46, -204, -208, -78, -204, -208, + -78, -208, -78, -208, -204, -208, -78, -208, -78, -208, + -208, -78, -204, -204, -204, -204, -204, -204, -204, -62, + 26, -61, -48, -49, -50, -51, -64, -86, -204, -61, + -61, -55, -206, 57, 11, 55, -206, 57, 116, 57, + 171, -109, -111, -110, 237, 239, 86, -136, -131, 63, + 29, 30, 58, 57, -61, -148, -151, -153, -152, -154, + -149, -150, 191, 192, 112, 195, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 30, 151, 187, 188, + 189, 190, 207, 208, 209, 210, 211, 212, 213, 214, + 174, 193, 266, 175, 176, 177, 178, 179, 180, 182, + 183, 184, 185, 186, -195, -143, 129, -195, 78, -195, + -61, -61, -143, -143, -143, 163, 163, 127, 127, 168, + -61, 57, 130, -55, 23, 54, -61, -195, -195, -138, + -137, -129, -143, -121, 63, -46, -143, -143, -143, -61, + -143, -143, -174, 11, 96, -143, -143, 11, -117, 11, + 96, -46, -122, 94, 54, 205, 354, 355, 356, 9, + 96, 57, 18, 116, 57, -97, 24, 25, -98, -205, + -73, -131, 64, 67, -47, 57, 11, -45, -61, -46, + -46, -79, 72, 78, 73, 74, -133, 103, -138, -132, + -129, -72, -80, -83, -86, 68, 96, 94, 95, 80, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -144, -195, 63, -195, -71, + -71, -131, -42, 21, 34, -41, -205, 57, -205, -2, + -41, -41, -46, -46, -87, 63, -41, -87, 63, -41, + -41, -36, 21, 34, -88, -89, 82, -87, -131, -137, + -205, -72, -131, -131, -41, -42, -42, -41, -41, -102, + 157, -61, 30, 57, -57, -59, -58, -60, 44, 48, + 50, 45, 46, 47, 51, -141, 22, -48, -204, -140, + 157, -139, 22, -137, 63, -102, 55, -48, -61, -48, + -63, -137, 103, -109, -111, 57, 238, 240, 241, 54, + 75, -46, -160, 111, -180, -181, -182, -132, 63, 64, + -169, -170, -171, -183, 143, -188, 134, 136, 133, -172, + 144, 128, 28, 58, -165, 72, 78, -161, 219, -155, + 56, -155, -155, -155, -155, -159, 194, -159, -159, -159, + 56, 56, -155, -155, -155, -163, 56, -163, -163, -164, + 56, -164, -135, 55, -61, -143, 23, -143, -125, 124, + 121, 122, -191, 120, 216, 194, 70, 29, 15, 256, + 157, 271, -195, 158, -61, -61, -61, -61, -61, 124, + 121, -61, -61, -61, -143, -61, -61, -121, -137, -137, + 63, -61, 39, -46, -46, -138, -96, -99, -113, 19, + 11, 35, 35, -66, 12, -43, -48, -45, 72, 73, + 74, 116, -204, -80, -72, -72, -72, -40, 152, 77, + -205, -205, -41, -41, -46, -205, -205, -205, 57, 55, + 22, 11, 11, -205, 11, 11, -205, -205, -41, -91, + -89, 84, -46, -205, 116, -205, 57, 57, -205, -205, + -205, -205, -205, -70, 30, 35, -2, -204, -204, -105, + -108, -87, -49, -50, -50, -49, -50, 44, 44, 44, + 49, 44, 49, 44, -58, -137, -205, -65, 52, 131, + 53, -204, -139, -66, -48, -66, -66, 116, -110, -112, + 242, 239, 245, -195, 63, 57, -182, 86, 56, -195, + 28, -172, -172, -175, -195, -175, 28, -157, 29, 72, + -162, 220, 64, -159, -159, -160, 30, -160, -160, -160, + -168, 63, -168, 64, 64, 54, -131, -143, -142, -198, + 139, 135, 143, 144, 137, 59, 60, 61, 128, 28, + 134, 136, 157, 133, -198, -126, -127, 130, 22, 128, + 28, 157, -197, 55, 163, 216, 163, 130, -143, -117, + -117, 40, 116, -61, -92, 13, -46, 103, -132, -42, + -40, 77, -72, -72, -205, -205, -147, 112, 191, 151, + 189, 185, 205, 196, 218, 187, 219, -144, -147, -72, + -72, -72, -72, 265, -94, 85, -46, 83, -132, -72, + -72, -104, 54, -105, -82, -84, -83, -204, -2, -100, + -131, -103, -131, -66, 57, 86, -53, -52, 54, 55, + -54, 54, -52, 44, 44, 128, 128, 128, -103, -94, + -66, 239, 243, 244, -181, -182, -185, -184, -131, -188, + -175, -175, 56, -158, 54, -72, 58, -160, -160, -195, + 112, 58, 57, 58, 57, 58, 57, -61, -142, -142, + -61, -142, -131, -194, 268, -196, -195, -131, -131, -131, + -61, -121, -121, -93, 14, 16, -205, -72, -205, -155, + -155, -155, -164, -155, 179, -155, 179, -205, -205, 19, + 19, 19, 19, -204, -39, 261, -46, 57, 57, 27, + -104, 57, -205, -205, -205, 57, 116, -205, 57, -94, + -108, -46, -46, 56, -46, -204, -204, -204, -205, -98, + 58, 57, -155, -101, -131, -166, 216, 9, -159, 63, + -159, 64, 64, -143, 26, -193, -192, -132, 56, 55, + -46, -81, -159, -195, -72, -72, -72, -72, -72, -98, + 63, -72, -72, 28, -84, 35, -2, -204, -131, -131, + -131, -98, -101, -101, -205, -101, -101, -140, -187, -186, + 55, 138, 70, -184, 58, 57, -167, 134, 28, 133, + -75, -160, -160, 58, 58, -204, 57, 86, -101, -61, + -205, -205, -205, -205, -38, 96, 268, -205, -205, -205, + 9, -82, -2, 116, 58, -205, -205, -205, -65, -186, + -195, -176, 86, 63, 146, -131, -156, 70, 28, 28, + -189, -190, 157, -192, -182, 58, -205, 266, 51, 269, + -105, -205, -131, 64, -61, 63, -205, 57, -131, -197, + 40, 267, 270, 56, -190, 35, -194, 40, -101, 159, + 268, 58, 160, 269, -200, -201, 54, -204, 270, -201, + 54, 10, 9, -72, 156, -199, 147, 142, 145, 30, + -199, -205, -205, 141, 29, 72, } var yyDef = [...]int{ 25, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 600, 0, 344, 344, 344, 344, - 344, 344, 0, 672, 655, 0, 0, 0, 0, -2, - 318, 319, 0, 321, 322, 323, -2, -2, -2, 976, - 976, 0, 0, 976, 0, 40, 41, 974, 1, 3, - 608, 0, 0, 348, -2, 346, 0, 655, 655, 0, - 0, 69, 70, 0, 0, 0, 963, 0, 653, 653, - 653, 673, 674, 677, 678, 26, 27, 28, 803, 804, - 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, - 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, - 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, - 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, - 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, - 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, - 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, - 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, - 955, 956, 957, 958, 959, 960, 961, 962, 964, 965, - 966, 967, 968, 969, 970, 971, 972, 973, 0, 0, - 0, 0, 0, 656, 0, 651, 0, 651, 651, 651, - 0, 269, 426, 681, 682, 963, 0, 0, 0, 309, - 0, 977, 281, 0, 283, 977, 0, 977, 0, 290, - 0, 0, 296, 977, 301, 315, 316, 303, 317, 320, - 0, 0, 336, 337, 338, 339, 340, 976, 976, 343, - 34, 612, 0, 0, 600, 36, 0, 344, 349, 350, - 0, 0, -2, -2, 360, 366, 367, 368, 369, 345, - 0, 372, 376, 0, 436, 0, 441, 443, -2, -2, - 0, 478, 479, 480, 481, 482, 0, 0, 0, 0, - 0, 0, 0, 0, 506, 507, 508, 509, 585, 586, - 587, 588, 589, 590, 591, 592, 445, 446, 582, 632, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 573, - 0, 543, 543, 543, 543, 543, 543, 543, 543, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 49, 51, 426, 55, 0, 952, 636, -2, -2, - 0, 0, 679, 680, -2, 816, -2, 685, 686, 687, - 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, - 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, - 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 801, 802, 0, 0, 88, 0, 86, - 0, 977, 0, 0, 0, 0, 0, 0, 977, 977, - 977, 0, 0, 0, 0, 260, 0, 0, 0, 0, - 0, 0, 0, 268, 0, 270, 977, 309, 273, 0, - 0, 977, 977, 977, 0, 977, 977, 280, 978, 979, - 0, 190, 191, 192, 284, 977, 977, 286, 0, 306, - 304, 305, 298, 299, 0, 312, 293, 294, 297, 335, - -2, 332, 333, 334, 0, 341, 342, 35, 975, 29, - 0, 0, 609, 0, 601, 602, 605, 608, 34, 359, - 0, 381, 370, 361, 364, 365, 347, 0, 373, 0, - 0, 0, 377, 0, 379, 380, 0, 439, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 463, 464, 465, - 466, 467, 468, 469, 442, 0, 456, 0, 0, 0, - 498, 499, 500, 501, 502, 503, 504, 0, 357, 34, - 0, 476, 0, 0, 0, 0, 0, 0, 0, 0, - 354, 0, 574, 0, 527, 535, 0, 528, 536, 529, - 537, 530, 0, 531, 538, 532, 539, 533, 534, 540, - 0, 0, 0, 357, 357, 0, 0, 53, 0, 425, - 0, 383, 385, 386, 387, -2, 0, 409, -2, 0, - 0, 0, 47, 48, 0, 0, 0, 0, 952, 637, - 57, 58, 0, 0, 0, 166, 646, 647, 648, 644, - 215, 0, 0, 154, 150, 94, 95, 96, 143, 98, - 143, 143, 143, 143, 163, 163, 163, 163, 126, 127, - 128, 129, 130, 0, 0, 113, 143, 143, 143, 117, - 133, 134, 135, 136, 137, 138, 139, 140, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 145, 145, 145, - 147, 147, 675, 72, 0, 977, 0, 977, 84, 0, - 229, 231, 232, 0, 0, 0, 0, 0, 0, 0, - 0, 263, 652, 0, 977, 266, 267, 427, 683, 684, - 271, 272, 310, 311, 274, 275, 276, 277, 278, 279, - 0, 193, 194, 285, 289, 0, 309, 0, 0, 291, - 292, 0, 0, 324, 325, 326, 327, 613, 0, 0, - 0, 0, 0, 604, 606, 607, 612, 37, 0, 593, - 0, 0, 434, 0, 0, 362, 32, 437, 438, 440, - 457, 0, 459, 461, 378, 374, 0, 583, -2, 447, - 448, 472, 473, 474, 0, 0, 0, 0, 470, 452, - 0, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 497, 558, 559, 0, 495, 496, 505, - 0, 0, 0, 358, 475, 0, 631, 34, 0, 0, - 0, 0, 480, 585, 0, 480, 585, 0, 0, 0, - 355, 356, 580, 577, 0, 0, 582, 0, 544, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 424, - 0, 0, 0, 0, 0, 0, 414, 0, 0, 417, - 0, 0, 0, 0, 408, 0, 0, 429, 897, 410, - 0, 412, 413, 434, 0, 434, 50, 434, 52, 0, - 428, 638, 56, 0, 0, 61, 62, 639, 640, 641, - 642, 0, 85, 216, 218, 221, 222, 223, 89, 90, - 91, 0, 0, 203, 0, 0, 197, 197, 0, 195, - 196, 87, 157, 155, 0, 152, 151, 97, 0, 163, - 163, 120, 121, 166, 0, 166, 166, 166, 0, 0, - 114, 115, 116, 108, 0, 109, 110, 111, 0, 112, - 0, 0, 977, 74, 654, 75, 976, 0, 0, 667, - 230, 657, 658, 659, 660, 661, 662, 663, 664, 665, - 666, 0, 76, 234, 236, 235, 239, 0, 0, 0, - 261, 977, 265, 306, 306, 288, 307, 308, 313, 295, - 0, 610, 611, 0, 603, 30, 0, 649, 650, 594, - 595, 596, 0, 371, 382, 363, 458, 460, 462, 0, - 357, 449, 470, 453, 0, 450, 0, 0, 444, 510, - 0, 0, 477, -2, 514, 515, 0, 0, 0, 0, - 0, 551, 0, 0, 552, 0, 600, 0, 578, 0, - 0, 526, 0, 545, 0, 0, 546, 547, 548, 549, - 550, 625, 0, 0, -2, 0, 0, 434, 633, 0, - 384, 403, 405, 0, 400, 415, 416, 418, 0, 420, - 0, 422, 423, 388, 390, 391, 0, 0, 0, 0, - 411, 600, 434, 45, 46, 0, 59, 60, 0, 0, - 66, 167, 168, 0, 219, 0, 0, 0, 185, 197, - 197, 188, 198, 189, 0, 159, 0, 156, 93, 153, - 0, 166, 166, 122, 0, 123, 124, 125, 0, 141, - 0, 0, 0, 0, 676, 73, 224, 976, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 976, 0, 976, 668, 669, 670, 671, 0, - 79, 0, 0, 0, 0, 0, 264, 309, 309, 614, - 0, 31, 598, 0, 435, 375, 584, 0, 451, 0, - 471, 454, 511, 512, 0, 143, 143, 563, 143, 147, - 566, 143, 568, 143, 571, 0, 0, 0, 0, 0, - 0, 0, 575, 525, 581, 0, 583, 0, 0, 38, - 0, 625, 615, 627, 629, 0, 34, 0, 621, 0, - 395, 600, 0, 0, 397, 404, 0, 0, 398, 0, - 399, 419, 421, 0, 0, 0, 0, 608, 44, 63, - 64, 65, 217, 220, 0, 199, 143, 202, 186, 187, - 0, 161, 0, 158, 144, 118, 119, 164, 165, 163, - 0, 163, 0, 148, 0, 977, 225, 226, 227, 228, - 0, 233, 0, 77, 78, 0, 0, 238, 262, 282, - 287, 33, 0, 0, 513, 455, 516, 560, 163, 564, - 565, 567, 569, 570, 572, 518, 517, 0, 0, 0, - 0, 0, 608, 0, 579, 0, 0, 0, 39, 0, - 630, -2, 0, 0, 0, 54, 0, 608, 634, 635, - 401, 0, 406, 0, 0, 0, 409, 43, 177, 0, - 201, 0, 393, 169, 162, 0, 166, 142, 166, 0, - 0, 71, 0, 80, 81, 0, 0, 0, 599, 597, - 561, 562, 0, 0, 0, 0, 553, 0, 576, 0, - 0, 0, 628, 0, -2, 0, 623, 622, 396, 42, - 0, 0, 431, 0, 0, 429, 176, 178, 0, 183, - 0, 200, 0, 0, 174, 0, 171, 173, 160, 131, - 132, 146, 149, 0, 0, 0, 0, 240, 519, 521, - 520, 522, 0, 0, 0, 524, 541, 542, 0, 618, - 34, 0, 402, 430, 432, 433, 392, 179, 180, 0, - 184, 182, 0, 394, 92, 0, 170, 172, 0, 256, - 0, 82, 83, 76, 523, 0, 0, 0, 626, -2, - 624, 181, 0, 175, 255, 0, 0, 79, 554, 0, - 557, 0, 257, 0, 237, 555, 0, 0, 0, 204, - 0, 0, 205, 206, 0, 0, 556, 207, 0, 0, - 0, 0, 0, 208, 210, 211, 0, 0, 209, 258, - 259, 212, 213, 214, + 21, 22, 23, 24, 602, 0, 346, 346, 346, 346, + 346, 346, 0, 674, 657, 0, 0, 0, 0, -2, + 318, 319, 0, 321, 322, 323, 978, 978, 0, 0, + 978, 0, 40, 41, 329, 330, 331, 976, 1, 3, + 610, 0, 0, 350, -2, 348, 0, 657, 657, 0, + 0, 69, 70, 0, 0, 0, 965, 0, 655, 655, + 655, 675, 676, 679, 680, 26, 27, 28, 805, 806, + 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, + 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, + 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, + 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, + 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, + 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, + 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, + 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, + 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, + 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, + 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, + 957, 958, 959, 960, 961, 962, 963, 964, 966, 967, + 968, 969, 970, 971, 972, 973, 974, 975, 0, 0, + 0, 0, 0, 658, 0, 653, 0, 653, 653, 653, + 0, 269, 428, 683, 684, 965, 0, 0, 0, 309, + 0, 979, 281, 0, 283, 979, 0, 979, 0, 290, + 0, 0, 296, 979, 301, 315, 316, 303, 317, 320, + 336, 0, 0, 328, 341, 342, 978, 978, 345, 34, + 614, 0, 0, 602, 36, 0, 346, 351, 352, 0, + 0, -2, -2, 362, 368, 369, 370, 371, 347, 0, + 374, 378, 0, 438, 0, 443, 445, -2, -2, 0, + 480, 481, 482, 483, 484, 0, 0, 0, 0, 0, + 0, 0, 0, 508, 509, 510, 511, 587, 588, 589, + 590, 591, 592, 593, 594, 447, 448, 584, 634, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 575, 0, + 545, 545, 545, 545, 545, 545, 545, 545, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 51, 428, 55, 0, 954, 638, -2, -2, 0, + 0, 681, 682, -2, 818, -2, 687, 688, 689, 690, + 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, + 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, + 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, + 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, + 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, + 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, + 801, 802, 803, 804, 0, 0, 88, 0, 86, 0, + 979, 0, 0, 0, 0, 0, 0, 979, 979, 979, + 0, 0, 0, 0, 260, 0, 0, 0, 0, 0, + 0, 0, 268, 0, 270, 979, 309, 273, 0, 0, + 979, 979, 979, 0, 979, 979, 280, 980, 981, 0, + 190, 191, 192, 284, 979, 979, 286, 0, 306, 304, + 305, 298, 299, 0, 312, 293, 294, 297, 339, 337, + 338, 340, -2, 333, 334, 335, 0, 343, 344, 35, + 977, 29, 0, 0, 611, 0, 603, 604, 607, 610, + 34, 361, 0, 383, 372, 363, 366, 367, 349, 0, + 375, 0, 0, 0, 379, 0, 381, 382, 0, 441, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 465, + 466, 467, 468, 469, 470, 471, 444, 0, 458, 0, + 0, 0, 500, 501, 502, 503, 504, 505, 506, 0, + 359, 34, 0, 478, 0, 0, 0, 0, 0, 0, + 0, 0, 356, 0, 576, 0, 529, 537, 0, 530, + 538, 531, 539, 532, 0, 533, 540, 534, 541, 535, + 536, 542, 0, 0, 0, 359, 359, 0, 0, 53, + 0, 427, 0, 385, 387, 388, 389, -2, 0, 411, + -2, 0, 0, 0, 47, 48, 0, 0, 0, 0, + 954, 639, 57, 58, 0, 0, 0, 166, 648, 649, + 650, 646, 215, 0, 0, 154, 150, 94, 95, 96, + 143, 98, 143, 143, 143, 143, 163, 163, 163, 163, + 126, 127, 128, 129, 130, 0, 0, 113, 143, 143, + 143, 117, 133, 134, 135, 136, 137, 138, 139, 140, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 145, + 145, 145, 147, 147, 677, 72, 0, 979, 0, 979, + 84, 0, 229, 231, 232, 0, 0, 0, 0, 0, + 0, 0, 0, 263, 654, 0, 979, 266, 267, 429, + 685, 686, 271, 272, 310, 311, 274, 275, 276, 277, + 278, 279, 0, 193, 194, 285, 289, 0, 309, 0, + 0, 291, 292, 0, 0, 324, 325, 326, 327, 615, + 0, 0, 0, 0, 0, 606, 608, 609, 614, 37, + 0, 595, 0, 0, 436, 0, 0, 364, 32, 439, + 440, 442, 459, 0, 461, 463, 380, 376, 0, 585, + -2, 449, 450, 474, 475, 476, 0, 0, 0, 0, + 472, 454, 0, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 496, 499, 560, 561, 0, 497, + 498, 507, 0, 0, 0, 360, 477, 0, 633, 34, + 0, 0, 0, 0, 482, 587, 0, 482, 587, 0, + 0, 0, 357, 358, 582, 579, 0, 0, 584, 0, + 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 426, 0, 0, 0, 0, 0, 0, 416, 0, + 0, 419, 0, 0, 0, 0, 410, 0, 0, 431, + 899, 412, 0, 414, 415, 436, 0, 436, 50, 436, + 52, 0, 430, 640, 56, 0, 0, 61, 62, 641, + 642, 643, 644, 0, 85, 216, 218, 221, 222, 223, + 89, 90, 91, 0, 0, 203, 0, 0, 197, 197, + 0, 195, 196, 87, 157, 155, 0, 152, 151, 97, + 0, 163, 163, 120, 121, 166, 0, 166, 166, 166, + 0, 0, 114, 115, 116, 108, 0, 109, 110, 111, + 0, 112, 0, 0, 979, 74, 656, 75, 978, 0, + 0, 669, 230, 659, 660, 661, 662, 663, 664, 665, + 666, 667, 668, 0, 76, 234, 236, 235, 239, 0, + 0, 0, 261, 979, 265, 306, 306, 288, 307, 308, + 313, 295, 0, 612, 613, 0, 605, 30, 0, 651, + 652, 596, 597, 598, 0, 373, 384, 365, 460, 462, + 464, 0, 359, 451, 472, 455, 0, 452, 0, 0, + 446, 512, 0, 0, 479, -2, 516, 517, 0, 0, + 0, 0, 0, 553, 0, 0, 554, 0, 602, 0, + 580, 0, 0, 528, 0, 547, 0, 0, 548, 549, + 550, 551, 552, 627, 0, 0, -2, 0, 0, 436, + 635, 0, 386, 405, 407, 0, 402, 417, 418, 420, + 0, 422, 0, 424, 425, 390, 392, 393, 0, 0, + 0, 0, 413, 602, 436, 45, 46, 0, 59, 60, + 0, 0, 66, 167, 168, 0, 219, 0, 0, 0, + 185, 197, 197, 188, 198, 189, 0, 159, 0, 156, + 93, 153, 0, 166, 166, 122, 0, 123, 124, 125, + 0, 141, 0, 0, 0, 0, 678, 73, 224, 978, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 978, 0, 978, 670, 671, 672, + 673, 0, 79, 0, 0, 0, 0, 0, 264, 309, + 309, 616, 0, 31, 600, 0, 437, 377, 586, 0, + 453, 0, 473, 456, 513, 514, 0, 143, 143, 565, + 143, 147, 568, 143, 570, 143, 573, 0, 0, 0, + 0, 0, 0, 0, 577, 527, 583, 0, 585, 0, + 0, 38, 0, 627, 617, 629, 631, 0, 34, 0, + 623, 0, 397, 602, 0, 0, 399, 406, 0, 0, + 400, 0, 401, 421, 423, 0, 0, 0, 0, 610, + 44, 63, 64, 65, 217, 220, 0, 199, 143, 202, + 186, 187, 0, 161, 0, 158, 144, 118, 119, 164, + 165, 163, 0, 163, 0, 148, 0, 979, 225, 226, + 227, 228, 0, 233, 0, 77, 78, 0, 0, 238, + 262, 282, 287, 33, 0, 0, 515, 457, 518, 562, + 163, 566, 567, 569, 571, 572, 574, 520, 519, 0, + 0, 0, 0, 0, 610, 0, 581, 0, 0, 0, + 39, 0, 632, -2, 0, 0, 0, 54, 0, 610, + 636, 637, 403, 0, 408, 0, 0, 0, 411, 43, + 177, 0, 201, 0, 395, 169, 162, 0, 166, 142, + 166, 0, 0, 71, 0, 80, 81, 0, 0, 0, + 601, 599, 563, 564, 0, 0, 0, 0, 555, 0, + 578, 0, 0, 0, 630, 0, -2, 0, 625, 624, + 398, 42, 0, 0, 433, 0, 0, 431, 176, 178, + 0, 183, 0, 200, 0, 0, 174, 0, 171, 173, + 160, 131, 132, 146, 149, 0, 0, 0, 0, 240, + 521, 523, 522, 524, 0, 0, 0, 526, 543, 544, + 0, 620, 34, 0, 404, 432, 434, 435, 394, 179, + 180, 0, 184, 182, 0, 396, 92, 0, 170, 172, + 0, 256, 0, 82, 83, 76, 525, 0, 0, 0, + 628, -2, 626, 181, 0, 175, 255, 0, 0, 79, + 556, 0, 559, 0, 257, 0, 237, 557, 0, 0, + 0, 204, 0, 0, 205, 206, 0, 0, 558, 207, + 0, 0, 0, 0, 0, 208, 210, 211, 0, 0, + 209, 258, 259, 212, 213, 214, } var yyTok1 = [...]int{ @@ -5269,38 +5295,38 @@ yydefault: } case 283: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1609 +//line sql.y:1608 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 284: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1613 +//line sql.y:1612 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 285: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1617 +//line sql.y:1616 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 286: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1621 +//line sql.y:1620 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 287: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1625 +//line sql.y:1624 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } case 288: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1630 +//line sql.y:1629 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5312,791 +5338,803 @@ yydefault: } case 289: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1640 +//line sql.y:1639 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 290: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1644 +//line sql.y:1643 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 291: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1648 +//line sql.y:1647 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr} } case 292: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1652 +//line sql.y:1651 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Scope: string(yyDollar[2].bytes), Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt} } case 293: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1657 +//line sql.y:1656 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1661 +//line sql.y:1660 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 295: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1665 +//line sql.y:1664 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName} } case 296: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1669 +//line sql.y:1668 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 297: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1683 +//line sql.y:1682 { yyVAL.statement = &Show{Type: string(yyDollar[2].colIdent.String())} } case 298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1689 +//line sql.y:1688 { yyVAL.str = string(yyDollar[1].bytes) } case 299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1693 +//line sql.y:1692 { yyVAL.str = string(yyDollar[1].bytes) } case 300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1699 +//line sql.y:1698 { yyVAL.str = "" } case 301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1703 +//line sql.y:1702 { yyVAL.str = "extended " } case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1709 +//line sql.y:1708 { yyVAL.str = "" } case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1713 +//line sql.y:1712 { yyVAL.str = "full " } case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1719 +//line sql.y:1718 { yyVAL.str = string(yyDollar[1].bytes) } case 305: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1723 +//line sql.y:1722 { yyVAL.str = string(yyDollar[1].bytes) } case 306: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1729 +//line sql.y:1728 { yyVAL.str = "" } case 307: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1733 +//line sql.y:1732 { yyVAL.str = yyDollar[2].tableIdent.v } case 308: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1737 +//line sql.y:1736 { yyVAL.str = yyDollar[2].tableIdent.v } case 309: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1743 +//line sql.y:1742 { yyVAL.showFilter = nil } case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1747 +//line sql.y:1746 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1751 +//line sql.y:1750 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 312: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1757 +//line sql.y:1756 { yyVAL.showFilter = nil } case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1761 +//line sql.y:1760 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 314: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1767 +//line sql.y:1766 { yyVAL.str = "" } case 315: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1771 +//line sql.y:1770 { yyVAL.str = SessionStr } case 316: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1775 +//line sql.y:1774 { yyVAL.str = GlobalStr } case 317: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1781 +//line sql.y:1780 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1785 +//line sql.y:1784 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1791 +//line sql.y:1790 { yyVAL.statement = &Begin{} } case 320: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1795 +//line sql.y:1794 { yyVAL.statement = &Begin{} } case 321: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1801 +//line sql.y:1800 { yyVAL.statement = &Commit{} } case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1807 +//line sql.y:1806 { yyVAL.statement = &Rollback{} } case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1812 +//line sql.y:1811 { yyVAL.str = "" } case 324: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1816 +//line sql.y:1815 { yyVAL.str = JSONStr } case 325: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1820 +//line sql.y:1819 { yyVAL.str = TreeStr } case 326: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1824 +//line sql.y:1823 { yyVAL.str = VitessStr } case 327: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1828 +//line sql.y:1827 { yyVAL.str = TraditionalStr } case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1834 +//line sql.y:1831 { - yyVAL.bytes = yyDollar[1].bytes + yyVAL.str = AnalyzeStr } case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1838 +//line sql.y:1837 { yyVAL.bytes = yyDollar[1].bytes } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1842 +//line sql.y:1841 { yyVAL.bytes = yyDollar[1].bytes } case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1848 +//line sql.y:1845 { - yyVAL.statement = yyDollar[1].selStmt + yyVAL.bytes = yyDollar[1].bytes } case 332: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1852 +//line sql.y:1851 { - yyVAL.statement = yyDollar[1].statement + yyVAL.statement = yyDollar[1].selStmt } case 333: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1856 +//line sql.y:1855 { yyVAL.statement = yyDollar[1].statement } case 334: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1860 +//line sql.y:1859 { yyVAL.statement = yyDollar[1].statement } case 335: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1866 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1863 { - yyVAL.statement = &Explain{Fmt: yyDollar[2].str, Statement: yyDollar[3].statement} + yyVAL.statement = yyDollar[1].statement } case 336: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1872 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1868 { - yyVAL.statement = &OtherRead{} + yyVAL.str = "" } case 337: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1876 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1872 { - yyVAL.statement = &OtherRead{} + yyVAL.str = "" } case 338: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1880 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1876 { - yyVAL.statement = &OtherRead{} + yyVAL.str = "" } case 339: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1884 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1882 { - yyVAL.statement = &OtherAdmin{} + yyVAL.statement = &OtherRead{} } case 340: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1888 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1886 { - yyVAL.statement = &OtherAdmin{} + yyVAL.statement = &Explain{Type: yyDollar[2].str, Statement: yyDollar[3].statement} } case 341: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1892 { yyVAL.statement = &OtherAdmin{} } case 342: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1896 { yyVAL.statement = &OtherAdmin{} } case 343: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1900 + { + yyVAL.statement = &OtherAdmin{} + } + case 344: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1904 + { + yyVAL.statement = &OtherAdmin{} + } + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1902 +//line sql.y:1910 { yyVAL.statement = &DDL{Action: FlushStr} } - case 344: + case 346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1906 +//line sql.y:1914 { setAllowComments(yylex, true) } - case 345: + case 347: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1910 +//line sql.y:1918 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 346: + case 348: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1916 +//line sql.y:1924 { yyVAL.bytes2 = nil } - case 347: + case 349: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1920 +//line sql.y:1928 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 348: + case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1926 +//line sql.y:1934 { yyVAL.str = UnionStr } - case 349: + case 351: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1930 +//line sql.y:1938 { yyVAL.str = UnionAllStr } - case 350: + case 352: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1934 +//line sql.y:1942 { yyVAL.str = UnionDistinctStr } - case 351: + case 353: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1939 +//line sql.y:1947 { yyVAL.str = "" } - case 352: + case 354: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1943 +//line sql.y:1951 { yyVAL.str = SQLNoCacheStr } - case 353: + case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1947 +//line sql.y:1955 { yyVAL.str = SQLCacheStr } - case 354: + case 356: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1952 +//line sql.y:1960 { yyVAL.str = "" } - case 355: + case 357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1956 +//line sql.y:1964 { yyVAL.str = DistinctStr } - case 356: + case 358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1960 +//line sql.y:1968 { yyVAL.str = DistinctStr } - case 357: + case 359: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1965 +//line sql.y:1973 { yyVAL.selectExprs = nil } - case 358: + case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1969 +//line sql.y:1977 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 359: + case 361: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1974 +//line sql.y:1982 { yyVAL.strs = nil } - case 360: + case 362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1978 +//line sql.y:1986 { yyVAL.strs = []string{yyDollar[1].str} } - case 361: + case 363: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1982 +//line sql.y:1990 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 362: + case 364: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1986 +//line sql.y:1994 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 363: + case 365: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1990 +//line sql.y:1998 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 364: + case 366: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1996 +//line sql.y:2004 { yyVAL.str = SQLNoCacheStr } - case 365: + case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2000 +//line sql.y:2008 { yyVAL.str = SQLCacheStr } - case 366: + case 368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2004 +//line sql.y:2012 { yyVAL.str = DistinctStr } - case 367: + case 369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2008 +//line sql.y:2016 { yyVAL.str = DistinctStr } - case 368: + case 370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2012 +//line sql.y:2020 { yyVAL.str = StraightJoinHint } - case 369: + case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2016 +//line sql.y:2024 { yyVAL.str = SQLCalcFoundRowsStr } - case 370: + case 372: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2022 +//line sql.y:2030 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 371: + case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2026 +//line sql.y:2034 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 372: + case 374: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2032 +//line sql.y:2040 { yyVAL.selectExpr = &StarExpr{} } - case 373: + case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2036 +//line sql.y:2044 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 374: + case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2040 +//line sql.y:2048 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 375: + case 377: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2044 +//line sql.y:2052 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 376: + case 378: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2049 +//line sql.y:2057 { yyVAL.colIdent = ColIdent{} } - case 377: + case 379: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2053 +//line sql.y:2061 { yyVAL.colIdent = yyDollar[1].colIdent } - case 378: + case 380: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2057 +//line sql.y:2065 { yyVAL.colIdent = yyDollar[2].colIdent } - case 380: + case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2064 +//line sql.y:2072 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 381: + case 383: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2069 +//line sql.y:2077 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 382: + case 384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2073 +//line sql.y:2081 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 383: + case 385: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2079 +//line sql.y:2087 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 384: + case 386: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2083 +//line sql.y:2091 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 387: + case 389: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2093 +//line sql.y:2101 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 388: + case 390: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2097 +//line sql.y:2105 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 389: + case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2101 +//line sql.y:2109 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") return 1 } - case 390: + case 392: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2107 +//line sql.y:2115 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 391: + case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2113 +//line sql.y:2121 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 392: + case 394: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2117 +//line sql.y:2125 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 393: + case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2123 +//line sql.y:2131 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 394: + case 396: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2127 +//line sql.y:2135 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 395: + case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2133 +//line sql.y:2141 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 396: + case 398: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2137 +//line sql.y:2145 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 397: + case 399: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2150 +//line sql.y:2158 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 398: + case 400: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2154 +//line sql.y:2162 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 399: + case 401: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2158 +//line sql.y:2166 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 400: + case 402: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2162 +//line sql.y:2170 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 401: + case 403: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2168 +//line sql.y:2176 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 402: + case 404: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2170 +//line sql.y:2178 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 403: + case 405: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2174 +//line sql.y:2182 { yyVAL.joinCondition = JoinCondition{} } - case 404: + case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2176 +//line sql.y:2184 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 405: + case 407: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2180 +//line sql.y:2188 { yyVAL.joinCondition = JoinCondition{} } - case 406: + case 408: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2182 +//line sql.y:2190 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 407: + case 409: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2185 +//line sql.y:2193 { yyVAL.empty = struct{}{} } - case 408: + case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2187 +//line sql.y:2195 { yyVAL.empty = struct{}{} } - case 409: + case 411: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2190 +//line sql.y:2198 { yyVAL.tableIdent = NewTableIdent("") } - case 410: + case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2194 +//line sql.y:2202 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 411: + case 413: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2198 +//line sql.y:2206 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 413: + case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2205 +//line sql.y:2213 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 414: + case 416: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2211 +//line sql.y:2219 { yyVAL.str = JoinStr } - case 415: + case 417: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2215 +//line sql.y:2223 { yyVAL.str = JoinStr } - case 416: + case 418: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2219 +//line sql.y:2227 { yyVAL.str = JoinStr } - case 417: + case 419: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2225 +//line sql.y:2233 { yyVAL.str = StraightJoinStr } - case 418: + case 420: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2231 +//line sql.y:2239 { yyVAL.str = LeftJoinStr } - case 419: + case 421: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2235 +//line sql.y:2243 { yyVAL.str = LeftJoinStr } - case 420: + case 422: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2239 +//line sql.y:2247 { yyVAL.str = RightJoinStr } - case 421: + case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2243 +//line sql.y:2251 { yyVAL.str = RightJoinStr } - case 422: + case 424: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2249 +//line sql.y:2257 { yyVAL.str = NaturalJoinStr } - case 423: + case 425: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2253 +//line sql.y:2261 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -6104,471 +6142,471 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 424: + case 426: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2263 +//line sql.y:2271 { yyVAL.tableName = yyDollar[2].tableName } - case 425: + case 427: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2267 +//line sql.y:2275 { yyVAL.tableName = yyDollar[1].tableName } - case 426: + case 428: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2273 +//line sql.y:2281 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 427: + case 429: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2277 +//line sql.y:2285 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 428: + case 430: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2283 +//line sql.y:2291 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 429: + case 431: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2288 +//line sql.y:2296 { yyVAL.indexHints = nil } - case 430: + case 432: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2292 +//line sql.y:2300 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 431: + case 433: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2296 +//line sql.y:2304 { yyVAL.indexHints = &IndexHints{Type: UseStr} } - case 432: + case 434: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2300 +//line sql.y:2308 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 433: + case 435: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2304 +//line sql.y:2312 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 434: + case 436: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2309 +//line sql.y:2317 { yyVAL.expr = nil } - case 435: + case 437: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2313 +//line sql.y:2321 { yyVAL.expr = yyDollar[2].expr } - case 436: + case 438: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2319 +//line sql.y:2327 { yyVAL.expr = yyDollar[1].expr } - case 437: + case 439: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2323 +//line sql.y:2331 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 438: + case 440: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2327 +//line sql.y:2335 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 439: + case 441: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2331 +//line sql.y:2339 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 440: + case 442: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2335 +//line sql.y:2343 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 441: + case 443: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2339 +//line sql.y:2347 { yyVAL.expr = yyDollar[1].expr } - case 442: + case 444: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2343 +//line sql.y:2351 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 443: + case 445: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2349 +//line sql.y:2357 { yyVAL.str = "" } - case 444: + case 446: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2353 +//line sql.y:2361 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 445: + case 447: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2359 +//line sql.y:2367 { yyVAL.boolVal = BoolVal(true) } - case 446: + case 448: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2363 +//line sql.y:2371 { yyVAL.boolVal = BoolVal(false) } - case 447: + case 449: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2369 +//line sql.y:2377 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 448: + case 450: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2373 +//line sql.y:2381 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 449: + case 451: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2377 +//line sql.y:2385 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 450: + case 452: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2381 +//line sql.y:2389 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 451: + case 453: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2385 +//line sql.y:2393 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 452: + case 454: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2389 +//line sql.y:2397 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 453: + case 455: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2393 +//line sql.y:2401 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 454: + case 456: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2397 +//line sql.y:2405 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 455: + case 457: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2401 +//line sql.y:2409 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 456: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2405 - { - yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} - } - case 457: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2411 - { - yyVAL.str = IsNullStr - } case 458: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2415 +//line sql.y:2413 { - yyVAL.str = IsNotNullStr + yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 459: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2419 { - yyVAL.str = IsTrueStr + yyVAL.str = IsNullStr } case 460: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2423 { - yyVAL.str = IsNotTrueStr + yyVAL.str = IsNotNullStr } case 461: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2427 { - yyVAL.str = IsFalseStr + yyVAL.str = IsTrueStr } case 462: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2431 { - yyVAL.str = IsNotFalseStr + yyVAL.str = IsNotTrueStr } case 463: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2437 +//line sql.y:2435 { - yyVAL.str = EqualStr + yyVAL.str = IsFalseStr } case 464: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2441 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2439 { - yyVAL.str = LessThanStr + yyVAL.str = IsNotFalseStr } case 465: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2445 { - yyVAL.str = GreaterThanStr + yyVAL.str = EqualStr } case 466: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2449 { - yyVAL.str = LessEqualStr + yyVAL.str = LessThanStr } case 467: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2453 { - yyVAL.str = GreaterEqualStr + yyVAL.str = GreaterThanStr } case 468: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2457 { - yyVAL.str = NotEqualStr + yyVAL.str = LessEqualStr } case 469: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2461 { - yyVAL.str = NullSafeEqualStr + yyVAL.str = GreaterEqualStr } case 470: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2466 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2465 { - yyVAL.expr = nil + yyVAL.str = NotEqualStr } case 471: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2470 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2469 { - yyVAL.expr = yyDollar[2].expr + yyVAL.str = NullSafeEqualStr } case 472: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2476 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:2474 { - yyVAL.colTuple = yyDollar[1].valTuple + yyVAL.expr = nil } case 473: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2480 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2478 { - yyVAL.colTuple = yyDollar[1].subquery + yyVAL.expr = yyDollar[2].expr } case 474: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2484 { - yyVAL.colTuple = ListArg(yyDollar[1].bytes) + yyVAL.colTuple = yyDollar[1].valTuple } case 475: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2490 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2488 { - yyVAL.subquery = &Subquery{yyDollar[2].selStmt} + yyVAL.colTuple = yyDollar[1].subquery } case 476: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2496 +//line sql.y:2492 { - yyVAL.exprs = Exprs{yyDollar[1].expr} + yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 477: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2500 +//line sql.y:2498 { - yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) + yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 478: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2506 +//line sql.y:2504 { - yyVAL.expr = yyDollar[1].expr + yyVAL.exprs = Exprs{yyDollar[1].expr} } case 479: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2510 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2508 { - yyVAL.expr = yyDollar[1].boolVal + yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 480: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2514 { - yyVAL.expr = yyDollar[1].colName + yyVAL.expr = yyDollar[1].expr } case 481: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2518 { - yyVAL.expr = yyDollar[1].expr + yyVAL.expr = yyDollar[1].boolVal } case 482: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2522 { - yyVAL.expr = yyDollar[1].subquery + yyVAL.expr = yyDollar[1].colName } case 483: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2526 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].expr } case 484: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2530 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].subquery } case 485: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2534 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } case 486: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2538 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } case 487: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2542 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } case 488: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2546 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } case 489: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2550 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } case 490: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2554 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } case 491: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2558 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } case 492: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2562 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } case 493: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2566 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 494: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2570 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 495: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2574 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } case 496: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2578 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } case 497: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2582 { - yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 498: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2586 { - yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 499: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2590 { - yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} + yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 500: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2594 { - yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } case 501: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2598 + { + yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} + } + case 502: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2602 + { + yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} + } + case 503: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2606 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -6576,9 +6614,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 502: + case 504: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2606 +//line sql.y:2614 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -6592,21 +6630,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 503: + case 505: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2620 +//line sql.y:2628 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 504: + case 506: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2624 +//line sql.y:2632 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 505: + case 507: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2628 +//line sql.y:2636 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -6614,497 +6652,497 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 510: + case 512: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2646 +//line sql.y:2654 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 511: + case 513: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2650 +//line sql.y:2658 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 512: + case 514: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2654 +//line sql.y:2662 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 513: + case 515: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2658 +//line sql.y:2666 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 514: + case 516: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2668 +//line sql.y:2676 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 515: + case 517: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2672 +//line sql.y:2680 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 516: + case 518: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2676 +//line sql.y:2684 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 517: + case 519: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2680 +//line sql.y:2688 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 518: + case 520: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2684 +//line sql.y:2692 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 519: + case 521: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2688 +//line sql.y:2696 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 520: + case 522: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2692 +//line sql.y:2700 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 521: + case 523: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2696 +//line sql.y:2704 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 522: + case 524: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2700 +//line sql.y:2708 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 523: + case 525: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2704 +//line sql.y:2712 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 524: + case 526: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2708 +//line sql.y:2716 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } - case 525: + case 527: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2712 +//line sql.y:2720 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 526: + case 528: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2716 +//line sql.y:2724 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 527: + case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2726 +//line sql.y:2734 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 528: + case 530: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2730 +//line sql.y:2738 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 529: + case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2734 +//line sql.y:2742 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 530: + case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2739 +//line sql.y:2747 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 531: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2744 +//line sql.y:2752 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 532: + case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2749 +//line sql.y:2757 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 533: + case 535: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2755 +//line sql.y:2763 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 534: + case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2760 +//line sql.y:2768 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 535: + case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2765 +//line sql.y:2773 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } - case 536: + case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2769 +//line sql.y:2777 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } - case 537: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2773 +//line sql.y:2781 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } - case 538: + case 540: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2778 +//line sql.y:2786 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } - case 539: + case 541: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2783 +//line sql.y:2791 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } - case 540: + case 542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2788 +//line sql.y:2796 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } - case 541: + case 543: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2792 +//line sql.y:2800 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 542: + case 544: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2796 +//line sql.y:2804 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 545: + case 547: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2806 +//line sql.y:2814 { yyVAL.expr = yyDollar[2].expr } - case 546: + case 548: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2816 +//line sql.y:2824 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 547: + case 549: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2820 +//line sql.y:2828 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 548: + case 550: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2824 +//line sql.y:2832 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } - case 549: + case 551: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2828 +//line sql.y:2836 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 550: + case 552: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2832 +//line sql.y:2840 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 551: + case 553: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2836 +//line sql.y:2844 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 552: + case 554: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2840 +//line sql.y:2848 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 553: + case 555: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2846 +//line sql.y:2854 { yyVAL.str = "" } - case 554: + case 556: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2850 +//line sql.y:2858 { yyVAL.str = BooleanModeStr } - case 555: + case 557: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2854 +//line sql.y:2862 { yyVAL.str = NaturalLanguageModeStr } - case 556: + case 558: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2858 +//line sql.y:2866 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 557: + case 559: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2862 +//line sql.y:2870 { yyVAL.str = QueryExpansionStr } - case 558: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2868 +//line sql.y:2876 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 559: + case 561: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2872 +//line sql.y:2880 { yyVAL.str = string(yyDollar[1].bytes) } - case 560: + case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2878 +//line sql.y:2886 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 561: + case 563: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2882 +//line sql.y:2890 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 562: + case 564: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2886 +//line sql.y:2894 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].colIdent.String())} } - case 563: + case 565: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2890 +//line sql.y:2898 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 564: + case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2894 +//line sql.y:2902 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 565: + case 567: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2898 +//line sql.y:2906 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 566: + case 568: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2904 +//line sql.y:2912 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 567: + case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2908 +//line sql.y:2916 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 568: + case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2912 +//line sql.y:2920 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 569: + case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2916 +//line sql.y:2924 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 570: + case 572: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2920 +//line sql.y:2928 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 571: + case 573: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2924 +//line sql.y:2932 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 572: + case 574: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2928 +//line sql.y:2936 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 573: + case 575: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2933 +//line sql.y:2941 { yyVAL.expr = nil } - case 574: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2937 +//line sql.y:2945 { yyVAL.expr = yyDollar[1].expr } - case 575: + case 577: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2942 +//line sql.y:2950 { yyVAL.str = string("") } - case 576: + case 578: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2946 +//line sql.y:2954 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 577: + case 579: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2952 +//line sql.y:2960 { yyVAL.whens = []*When{yyDollar[1].when} } - case 578: + case 580: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2956 +//line sql.y:2964 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 579: + case 581: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2962 +//line sql.y:2970 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 580: + case 582: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2967 +//line sql.y:2975 { yyVAL.expr = nil } - case 581: + case 583: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2971 +//line sql.y:2979 { yyVAL.expr = yyDollar[2].expr } - case 582: + case 584: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2977 +//line sql.y:2985 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 583: + case 585: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2981 +//line sql.y:2989 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 584: + case 586: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2985 +//line sql.y:2993 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 585: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2991 +//line sql.y:2999 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 586: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2995 +//line sql.y:3003 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 587: + case 589: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2999 +//line sql.y:3007 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 588: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3003 +//line sql.y:3011 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 589: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3007 +//line sql.y:3015 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 590: + case 592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3011 +//line sql.y:3019 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 591: + case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3015 +//line sql.y:3023 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 592: + case 594: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3019 +//line sql.y:3027 { yyVAL.expr = &NullVal{} } - case 593: + case 595: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3025 +//line sql.y:3033 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7113,239 +7151,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 594: + case 596: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3034 +//line sql.y:3042 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 595: + case 597: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3038 +//line sql.y:3046 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 596: + case 598: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3043 +//line sql.y:3051 { yyVAL.exprs = nil } - case 597: + case 599: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3047 +//line sql.y:3055 { yyVAL.exprs = yyDollar[3].exprs } - case 598: + case 600: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3052 +//line sql.y:3060 { yyVAL.expr = nil } - case 599: + case 601: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3056 +//line sql.y:3064 { yyVAL.expr = yyDollar[2].expr } - case 600: + case 602: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3061 +//line sql.y:3069 { yyVAL.orderBy = nil } - case 601: + case 603: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3065 +//line sql.y:3073 { yyVAL.orderBy = yyDollar[3].orderBy } - case 602: + case 604: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3071 +//line sql.y:3079 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 603: + case 605: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3075 +//line sql.y:3083 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 604: + case 606: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3081 +//line sql.y:3089 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 605: + case 607: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3086 +//line sql.y:3094 { yyVAL.str = AscScr } - case 606: + case 608: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3090 +//line sql.y:3098 { yyVAL.str = AscScr } - case 607: + case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3094 +//line sql.y:3102 { yyVAL.str = DescScr } - case 608: + case 610: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3099 +//line sql.y:3107 { yyVAL.limit = nil } - case 609: + case 611: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3103 +//line sql.y:3111 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 610: + case 612: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3107 +//line sql.y:3115 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 611: + case 613: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3111 +//line sql.y:3119 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 612: + case 614: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3116 +//line sql.y:3124 { yyVAL.str = "" } - case 613: + case 615: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3120 +//line sql.y:3128 { yyVAL.str = ForUpdateStr } - case 614: + case 616: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3124 +//line sql.y:3132 { yyVAL.str = ShareModeStr } - case 615: + case 617: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3137 +//line sql.y:3145 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 616: + case 618: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3141 +//line sql.y:3149 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 617: + case 619: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3145 +//line sql.y:3153 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 618: + case 620: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3150 +//line sql.y:3158 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 619: + case 621: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3154 +//line sql.y:3162 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 620: + case 622: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3158 +//line sql.y:3166 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 621: + case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3165 +//line sql.y:3173 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 622: + case 624: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3169 +//line sql.y:3177 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 623: + case 625: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3173 +//line sql.y:3181 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 624: + case 626: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3177 +//line sql.y:3185 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 625: + case 627: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3182 +//line sql.y:3190 { yyVAL.updateExprs = nil } - case 626: + case 628: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3186 +//line sql.y:3194 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 627: + case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3192 +//line sql.y:3200 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 628: + case 630: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3196 +//line sql.y:3204 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 629: + case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3202 +//line sql.y:3210 { yyVAL.valTuple = yyDollar[1].valTuple } - case 630: + case 632: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3206 +//line sql.y:3214 { yyVAL.valTuple = ValTuple{} } - case 631: + case 633: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3212 +//line sql.y:3220 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 632: + case 634: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3218 +//line sql.y:3226 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -7353,319 +7391,319 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 633: + case 635: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3228 +//line sql.y:3236 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 634: + case 636: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3232 +//line sql.y:3240 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 635: + case 637: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3238 +//line sql.y:3246 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 636: + case 638: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3244 +//line sql.y:3252 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 637: + case 639: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3248 +//line sql.y:3256 { yyDollar[2].setExpr.Scope = yyDollar[1].str yyVAL.setExprs = SetExprs{yyDollar[2].setExpr} } - case 638: + case 640: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3253 +//line sql.y:3261 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 639: + case 641: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3259 +//line sql.y:3267 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 640: + case 642: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3263 +//line sql.y:3271 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } - case 641: + case 643: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3267 +//line sql.y:3275 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 642: + case 644: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3271 +//line sql.y:3279 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 644: + case 646: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3278 +//line sql.y:3286 { yyVAL.bytes = []byte("charset") } - case 646: + case 648: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3285 +//line sql.y:3293 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 647: + case 649: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3289 +//line sql.y:3297 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 648: + case 650: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3293 +//line sql.y:3301 { yyVAL.expr = &Default{} } - case 651: + case 653: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3302 +//line sql.y:3310 { yyVAL.byt = 0 } - case 652: + case 654: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3304 +//line sql.y:3312 { yyVAL.byt = 1 } - case 653: + case 655: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3307 +//line sql.y:3315 { yyVAL.empty = struct{}{} } - case 654: + case 656: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3309 +//line sql.y:3317 { yyVAL.empty = struct{}{} } - case 655: + case 657: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3312 +//line sql.y:3320 { yyVAL.str = "" } - case 656: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3314 - { - yyVAL.str = IgnoreStr - } - case 657: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3318 - { - yyVAL.empty = struct{}{} - } case 658: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3320 +//line sql.y:3322 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 659: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3322 +//line sql.y:3326 { yyVAL.empty = struct{}{} } case 660: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3324 +//line sql.y:3328 { yyVAL.empty = struct{}{} } case 661: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3326 +//line sql.y:3330 { yyVAL.empty = struct{}{} } case 662: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3328 +//line sql.y:3332 { yyVAL.empty = struct{}{} } case 663: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3330 +//line sql.y:3334 { yyVAL.empty = struct{}{} } case 664: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3332 +//line sql.y:3336 { yyVAL.empty = struct{}{} } case 665: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3334 +//line sql.y:3338 { yyVAL.empty = struct{}{} } case 666: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3336 +//line sql.y:3340 { yyVAL.empty = struct{}{} } case 667: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3339 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3342 { yyVAL.empty = struct{}{} } case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3341 +//line sql.y:3344 { yyVAL.empty = struct{}{} } case 669: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3343 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3347 { yyVAL.empty = struct{}{} } case 670: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3347 +//line sql.y:3349 { yyVAL.empty = struct{}{} } case 671: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3349 +//line sql.y:3351 { yyVAL.empty = struct{}{} } case 672: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3352 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3355 { yyVAL.empty = struct{}{} } case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3354 +//line sql.y:3357 { yyVAL.empty = struct{}{} } case 674: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3356 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3360 { yyVAL.empty = struct{}{} } case 675: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3362 + { + yyVAL.empty = struct{}{} + } + case 676: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3364 + { + yyVAL.empty = struct{}{} + } + case 677: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3359 +//line sql.y:3367 { yyVAL.colIdent = ColIdent{} } - case 676: + case 678: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3361 +//line sql.y:3369 { yyVAL.colIdent = yyDollar[2].colIdent } - case 677: + case 679: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3365 +//line sql.y:3373 { yyVAL.colIdent = yyDollar[1].colIdent } - case 678: + case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3369 +//line sql.y:3377 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 680: + case 682: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3376 +//line sql.y:3384 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 681: + case 683: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3382 +//line sql.y:3390 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 682: + case 684: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3386 +//line sql.y:3394 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 684: + case 686: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3393 +//line sql.y:3401 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 974: + case 976: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3708 +//line sql.y:3716 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 975: + case 977: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3717 +//line sql.y:3725 { decNesting(yylex) } - case 976: + case 978: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3722 +//line sql.y:3730 { skipToEnd(yylex) } - case 977: + case 979: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3727 +//line sql.y:3735 { skipToEnd(yylex) } - case 978: + case 980: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3731 +//line sql.y:3739 { skipToEnd(yylex) } - case 979: + case 981: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3735 +//line sql.y:3743 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index f8d4559b63f..4c3e44595ee 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -225,7 +225,7 @@ func skipToEnd(yylex interface{}) { %type analyze_statement show_statement use_statement other_statement %type begin_statement commit_statement rollback_statement %type comment_opt comment_list -%type union_op insert_or_replace explain_format_opt +%type union_op insert_or_replace explain_format_opt wild_opt %type explain_synonyms %type distinct_opt cache_opt match_option separator_opt %type like_escape_opt @@ -1604,7 +1604,6 @@ show_statement: showTablesOpt := &ShowTablesOpt{DbName:$6, Filter:$7} $$ = &Show{Extended: string($2), Type: string($3), ShowTablesOpt: showTablesOpt, OnTable: $5} } - | SHOW PLUGINS { $$ = &Show{Type: string($2)} @@ -1828,6 +1827,10 @@ explain_format_opt: { $$ = TraditionalStr } +| ANALYZE + { + $$ = AnalyzeStr + } explain_synonyms: EXPLAIN @@ -1860,27 +1863,32 @@ explainable_statement: { $$ = $1 } - -explain_statement: - explain_synonyms explain_format_opt explainable_statement + +wild_opt: { - $$ = &Explain{Fmt: $2, Statement: $3} + $$ = "" } - -other_statement: - DESC skip_to_end +| sql_id { - $$ = &OtherRead{} + $$ = "" } -| DESCRIBE skip_to_end +| STRING { - $$ = &OtherRead{} + $$ = "" } -| EXPLAIN skip_to_end + +explain_statement: + explain_synonyms table_name wild_opt { $$ = &OtherRead{} } -| REPAIR skip_to_end +| explain_synonyms explain_format_opt explainable_statement + { + $$ = &Explain{Type: $2, Statement: $3} + } + +other_statement: + REPAIR skip_to_end { $$ = &OtherAdmin{} } diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 5ad23694a1f..6a1721c703d 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -316,7 +316,7 @@ func createInstructionFor(query string, stmt sqlparser.Statement, vschema Contex case *sqlparser.Use: return buildUsePlan(stmt, vschema) case *sqlparser.Explain: - if stmt.Fmt == sqlparser.VitessStr { + if stmt.Type == sqlparser.VitessStr { innerInstruction, err := createInstructionFor(query, stmt.Statement, vschema) if err != nil { return nil, err From 36bf13d51ffac76a82a6afc15d366debd7702dbe Mon Sep 17 00:00:00 2001 From: Andres Taylor Date: Tue, 28 Apr 2020 14:57:48 +0200 Subject: [PATCH 12/12] Removed unused case Signed-off-by: Andres Taylor --- go/vt/sqlparser/parse_test.go | 3 +++ go/vt/vtgate/executor.go | 4 +--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 8b7ff0e991d..6051470720a 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1378,6 +1378,9 @@ var ( }, { input: "desc select * from t", output: "explain select * from t", + }, { + input: "desc foobar", + output: "otherread", }, { input: "explain t1", output: "otherread", diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 7e9a2c19ec3..ee725faaf96 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -213,14 +213,12 @@ func (e *Executor) execute(ctx context.Context, safeSession *SafeSession, sql st switch stmtType { case sqlparser.StmtSelect, sqlparser.StmtInsert, sqlparser.StmtReplace, sqlparser.StmtUpdate, - sqlparser.StmtDelete, sqlparser.StmtDDL, sqlparser.StmtUse: + sqlparser.StmtDelete, sqlparser.StmtDDL, sqlparser.StmtUse, sqlparser.StmtExplain, sqlparser.StmtOther: return nil, vterrors.New(vtrpcpb.Code_INTERNAL, "BUG: not reachable as handled with plan execute") case sqlparser.StmtSet: return e.handleSet(ctx, safeSession, sql, logStats) case sqlparser.StmtShow: return e.handleShow(ctx, safeSession, sql, bindVars, dest, destKeyspace, destTabletType, logStats) - case sqlparser.StmtOther, sqlparser.StmtExplain: - return e.handleOther(ctx, safeSession, sql, bindVars, dest, destKeyspace, destTabletType, logStats) case sqlparser.StmtComment: return e.handleComment(sql) }