diff --git a/src/grammar/flinksql/FlinkSqlParser.g4 b/src/grammar/flinksql/FlinkSqlParser.g4 index 7109cc2..36f8f3e 100644 --- a/src/grammar/flinksql/FlinkSqlParser.g4 +++ b/src/grammar/flinksql/FlinkSqlParser.g4 @@ -347,7 +347,8 @@ dropFunction // Insert statements insertStatement - : (KW_EXECUTE? insertSimpleStatement) | (KW_EXECUTE insertMulStatement) +: (KW_EXECUTE? insertSimpleStatement) + | insertMulStatementCompatibility | (KW_EXECUTE insertMulStatement) ; insertSimpleStatement @@ -372,6 +373,10 @@ valuesRowDefinition RR_BRACKET ; +insertMulStatementCompatibility + : KW_BEGIN KW_STATEMENT KW_SET SEMICOLON (insertSimpleStatement SEMICOLON)+ KW_END + ; + insertMulStatement : KW_STATEMENT KW_SET KW_BEGIN (insertSimpleStatement SEMICOLON)+ KW_END ; diff --git a/src/lib/flinksql/FlinkSqlLexer.ts b/src/lib/flinksql/FlinkSqlLexer.ts index 70d9a2f..022b9b9 100644 --- a/src/lib/flinksql/FlinkSqlLexer.ts +++ b/src/lib/flinksql/FlinkSqlLexer.ts @@ -1,4 +1,4 @@ -// Generated from /Users/mortalYoung/Projects/dt-sql-parser/src/grammar/flinksql/FlinkSqlLexer.g4 by ANTLR 4.12.0 +// Generated from /Users/zhenglin/Documents/parser/dt-sql-parser/src/grammar/flinksql/FlinkSqlLexer.g4 by ANTLR 4.12.0 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { ATN, diff --git a/src/lib/flinksql/FlinkSqlParser.interp b/src/lib/flinksql/FlinkSqlParser.interp index d35507d..b440909 100644 --- a/src/lib/flinksql/FlinkSqlParser.interp +++ b/src/lib/flinksql/FlinkSqlParser.interp @@ -886,6 +886,7 @@ insertSimpleStatement insertPartitionDefinition valuesDefinition valuesRowDefinition +insertMulStatementCompatibility insertMulStatement queryStatement valuesCaluse @@ -988,4 +989,4 @@ nonReservedKeywords atn: -[4, 1, 402, 2128, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 361, 8, 2, 1, 2, 5, 2, 364, 8, 2, 10, 2, 12, 2, 367, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 381, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 399, 8, 5, 1, 6, 1, 6, 3, 6, 403, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 412, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 417, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 422, 8, 9, 10, 9, 12, 9, 425, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 431, 8, 11, 1, 11, 1, 11, 3, 11, 435, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 442, 8, 12, 10, 12, 12, 12, 445, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 456, 8, 13, 1, 13, 3, 13, 459, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 466, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 474, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 479, 8, 13, 1, 13, 3, 13, 482, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 489, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 497, 8, 16, 1, 17, 1, 17, 3, 17, 501, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 513, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 521, 8, 19, 1, 19, 1, 19, 3, 19, 525, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 546, 8, 19, 1, 20, 1, 20, 3, 20, 550, 8, 20, 1, 21, 1, 21, 3, 21, 554, 8, 21, 1, 21, 1, 21, 3, 21, 558, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 565, 8, 21, 10, 21, 12, 21, 568, 9, 21, 1, 21, 1, 21, 3, 21, 572, 8, 21, 1, 21, 1, 21, 3, 21, 576, 8, 21, 1, 21, 1, 21, 3, 21, 580, 8, 21, 1, 21, 1, 21, 3, 21, 584, 8, 21, 1, 21, 3, 21, 587, 8, 21, 1, 21, 1, 21, 3, 21, 591, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 596, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 602, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 607, 8, 23, 1, 24, 1, 24, 1, 24, 3, 24, 612, 8, 24, 1, 24, 3, 24, 615, 8, 24, 1, 25, 1, 25, 3, 25, 619, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 625, 8, 26, 10, 26, 12, 26, 628, 9, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 3, 27, 635, 8, 27, 1, 27, 1, 27, 3, 27, 639, 8, 27, 1, 27, 1, 27, 3, 27, 643, 8, 27, 1, 27, 1, 27, 3, 27, 647, 8, 27, 1, 27, 1, 27, 3, 27, 651, 8, 27, 1, 27, 1, 27, 3, 27, 655, 8, 27, 1, 27, 1, 27, 3, 27, 659, 8, 27, 1, 27, 1, 27, 3, 27, 663, 8, 27, 1, 27, 1, 27, 3, 27, 667, 8, 27, 3, 27, 669, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 679, 8, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 687, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 709, 8, 33, 10, 33, 12, 33, 712, 9, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 718, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 724, 8, 34, 1, 34, 3, 34, 727, 8, 34, 1, 34, 3, 34, 730, 8, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 740, 8, 36, 1, 36, 3, 36, 743, 8, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 751, 8, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 763, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 785, 8, 45, 10, 45, 12, 45, 788, 9, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 798, 8, 46, 10, 46, 12, 46, 801, 9, 46, 1, 46, 1, 46, 3, 46, 805, 8, 46, 1, 47, 1, 47, 3, 47, 809, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 815, 8, 48, 10, 48, 12, 48, 818, 9, 48, 1, 48, 3, 48, 821, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 829, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 839, 8, 52, 1, 52, 1, 52, 3, 52, 843, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 3, 53, 849, 8, 53, 1, 53, 1, 53, 3, 53, 853, 8, 53, 1, 53, 1, 53, 3, 53, 857, 8, 53, 1, 53, 3, 53, 860, 8, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 869, 8, 54, 1, 54, 1, 54, 3, 54, 873, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 880, 8, 54, 1, 54, 3, 54, 883, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 891, 8, 55, 10, 55, 12, 55, 894, 9, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 3, 57, 901, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 909, 8, 57, 1, 58, 1, 58, 3, 58, 913, 8, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 928, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 947, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 958, 8, 66, 1, 66, 1, 66, 3, 66, 962, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 969, 8, 66, 1, 67, 1, 67, 1, 67, 3, 67, 974, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 3, 68, 980, 8, 68, 1, 68, 1, 68, 3, 68, 984, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 3, 69, 991, 8, 69, 1, 69, 1, 69, 3, 69, 995, 8, 69, 1, 70, 1, 70, 3, 70, 999, 8, 70, 1, 70, 1, 70, 3, 70, 1003, 8, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1011, 8, 71, 1, 71, 1, 71, 3, 71, 1015, 8, 71, 1, 71, 1, 71, 1, 72, 3, 72, 1020, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1025, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1031, 8, 73, 1, 73, 3, 73, 1034, 8, 73, 1, 73, 1, 73, 3, 73, 1038, 8, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 1047, 8, 75, 10, 75, 12, 75, 1050, 9, 75, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 1056, 8, 76, 10, 76, 12, 76, 1059, 9, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 4, 77, 1069, 8, 77, 11, 77, 12, 77, 1070, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1086, 8, 78, 1, 78, 3, 78, 1089, 8, 78, 1, 78, 1, 78, 3, 78, 1093, 8, 78, 1, 78, 3, 78, 1096, 8, 78, 3, 78, 1098, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1103, 8, 78, 1, 78, 1, 78, 3, 78, 1107, 8, 78, 1, 78, 3, 78, 1110, 8, 78, 5, 78, 1112, 8, 78, 10, 78, 12, 78, 1115, 9, 78, 1, 79, 1, 79, 1, 79, 1, 79, 5, 79, 1121, 8, 79, 10, 79, 12, 79, 1124, 9, 79, 1, 80, 1, 80, 1, 80, 1, 80, 5, 80, 1130, 8, 80, 10, 80, 12, 80, 1133, 9, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 1140, 8, 81, 10, 81, 12, 81, 1143, 9, 81, 1, 81, 1, 81, 3, 81, 1147, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 3, 83, 1159, 8, 83, 1, 83, 3, 83, 1162, 8, 83, 1, 83, 3, 83, 1165, 8, 83, 1, 83, 3, 83, 1168, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1174, 8, 83, 1, 84, 1, 84, 3, 84, 1178, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 5, 84, 1184, 8, 84, 10, 84, 12, 84, 1187, 9, 84, 3, 84, 1189, 8, 84, 1, 85, 1, 85, 1, 85, 3, 85, 1194, 8, 85, 1, 85, 3, 85, 1197, 8, 85, 3, 85, 1199, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 1213, 8, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 5, 88, 1222, 8, 88, 10, 88, 12, 88, 1225, 9, 88, 1, 88, 1, 88, 3, 88, 1229, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1237, 8, 88, 1, 88, 3, 88, 1240, 8, 88, 1, 88, 3, 88, 1243, 8, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1248, 8, 88, 5, 88, 1250, 8, 88, 10, 88, 12, 88, 1253, 9, 88, 1, 89, 1, 89, 3, 89, 1257, 8, 89, 1, 90, 3, 90, 1260, 8, 90, 1, 90, 1, 90, 3, 90, 1264, 8, 90, 1, 90, 3, 90, 1267, 8, 90, 1, 90, 3, 90, 1270, 8, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 5, 90, 1280, 8, 90, 10, 90, 12, 90, 1283, 9, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1289, 8, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1300, 8, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 5, 96, 1327, 8, 96, 10, 96, 12, 96, 1330, 9, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1351, 8, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 1367, 8, 101, 10, 101, 12, 101, 1370, 9, 101, 1, 101, 1, 101, 3, 101, 1374, 8, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1384, 8, 103, 10, 103, 12, 103, 1387, 9, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 1397, 8, 104, 10, 104, 12, 104, 1400, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 1409, 8, 104, 10, 104, 12, 104, 1412, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 1421, 8, 104, 10, 104, 12, 104, 1424, 9, 104, 1, 104, 1, 104, 3, 104, 1428, 8, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 1453, 8, 111, 10, 111, 12, 111, 1456, 9, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 3, 113, 1463, 8, 113, 1, 113, 1, 113, 3, 113, 1467, 8, 113, 1, 113, 3, 113, 1470, 8, 113, 1, 113, 3, 113, 1473, 8, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 1480, 8, 114, 1, 114, 3, 114, 1483, 8, 114, 1, 114, 3, 114, 1486, 8, 114, 1, 114, 3, 114, 1489, 8, 114, 1, 114, 3, 114, 1492, 8, 114, 1, 114, 3, 114, 1495, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 1500, 8, 114, 1, 114, 3, 114, 1503, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 1510, 8, 115, 10, 115, 12, 115, 1513, 9, 115, 1, 116, 1, 116, 3, 116, 1517, 8, 116, 1, 116, 1, 116, 3, 116, 1521, 8, 116, 1, 117, 1, 117, 1, 117, 3, 117, 1526, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1533, 8, 118, 10, 118, 12, 118, 1536, 9, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1554, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 5, 120, 1560, 8, 120, 10, 120, 12, 120, 1563, 9, 120, 1, 121, 1, 121, 1, 121, 4, 121, 1568, 8, 121, 11, 121, 12, 121, 1569, 1, 121, 1, 121, 3, 121, 1574, 8, 121, 1, 122, 1, 122, 3, 122, 1578, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1588, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1614, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 1620, 8, 125, 10, 125, 12, 125, 1623, 9, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 3, 126, 1634, 8, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1656, 8, 130, 3, 130, 1658, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 5, 130, 1666, 8, 130, 10, 130, 12, 130, 1669, 9, 130, 1, 131, 3, 131, 1672, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1680, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1687, 8, 131, 10, 131, 12, 131, 1690, 9, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1695, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1708, 8, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1713, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1723, 8, 131, 10, 131, 12, 131, 1726, 9, 131, 1, 131, 1, 131, 3, 131, 1730, 8, 131, 1, 131, 3, 131, 1733, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1739, 8, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1744, 8, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1749, 8, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1754, 8, 131, 1, 132, 3, 132, 1757, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 5, 132, 1767, 8, 132, 10, 132, 12, 132, 1770, 9, 132, 1, 132, 1, 132, 3, 132, 1774, 8, 132, 1, 132, 3, 132, 1777, 8, 132, 1, 132, 1, 132, 3, 132, 1781, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1787, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1808, 8, 133, 10, 133, 12, 133, 1811, 9, 133, 1, 134, 1, 134, 1, 134, 4, 134, 1816, 8, 134, 11, 134, 12, 134, 1817, 1, 134, 1, 134, 3, 134, 1822, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 4, 134, 1829, 8, 134, 11, 134, 12, 134, 1830, 1, 134, 1, 134, 3, 134, 1835, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1851, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1860, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1884, 8, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1889, 8, 134, 10, 134, 12, 134, 1892, 9, 134, 3, 134, 1894, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1904, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1911, 8, 134, 10, 134, 12, 134, 1914, 9, 134, 1, 135, 1, 135, 1, 135, 3, 135, 1919, 8, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 1927, 8, 138, 1, 139, 1, 139, 1, 139, 3, 139, 1932, 8, 139, 1, 140, 1, 140, 3, 140, 1936, 8, 140, 1, 141, 1, 141, 1, 141, 4, 141, 1941, 8, 141, 11, 141, 12, 141, 1942, 1, 142, 1, 142, 1, 142, 3, 142, 1948, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 3, 144, 1956, 8, 144, 1, 144, 1, 144, 3, 144, 1960, 8, 144, 1, 145, 1, 145, 3, 145, 1964, 8, 145, 1, 146, 3, 146, 1967, 8, 146, 1, 146, 1, 146, 3, 146, 1971, 8, 146, 1, 147, 3, 147, 1974, 8, 147, 1, 147, 1, 147, 3, 147, 1978, 8, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 4, 149, 1985, 8, 149, 11, 149, 12, 149, 1986, 1, 149, 3, 149, 1990, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 5, 151, 1999, 8, 151, 10, 151, 12, 151, 2002, 9, 151, 1, 152, 1, 152, 1, 152, 3, 152, 2007, 8, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 5, 156, 2021, 8, 156, 10, 156, 12, 156, 2024, 9, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 5, 160, 2040, 8, 160, 10, 160, 12, 160, 2043, 9, 160, 1, 160, 1, 160, 1, 161, 1, 161, 3, 161, 2049, 8, 161, 1, 161, 3, 161, 2052, 8, 161, 1, 162, 1, 162, 1, 162, 3, 162, 2057, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 2063, 8, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 2071, 8, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 2087, 8, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 2096, 8, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 2111, 8, 169, 1, 169, 3, 169, 2114, 8, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 2022, 5, 156, 176, 260, 266, 268, 176, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 0, 41, 2, 0, 30, 30, 231, 231, 3, 0, 16, 16, 37, 37, 67, 67, 4, 0, 13, 13, 26, 26, 64, 64, 166, 166, 2, 0, 12, 12, 25, 25, 2, 0, 248, 248, 259, 259, 2, 0, 165, 165, 337, 337, 2, 0, 4, 4, 117, 117, 1, 0, 107, 111, 3, 0, 192, 192, 222, 222, 295, 295, 11, 0, 10, 10, 145, 145, 151, 151, 188, 189, 201, 201, 223, 223, 264, 265, 329, 329, 340, 340, 342, 342, 356, 357, 2, 0, 361, 361, 363, 363, 4, 0, 225, 226, 233, 233, 246, 246, 296, 296, 2, 0, 182, 182, 289, 289, 2, 0, 40, 40, 260, 260, 3, 0, 21, 21, 95, 95, 176, 176, 3, 0, 40, 40, 93, 93, 260, 260, 3, 0, 52, 52, 89, 89, 169, 169, 3, 0, 65, 65, 106, 106, 125, 125, 2, 0, 11, 11, 122, 122, 2, 0, 92, 92, 268, 268, 3, 0, 239, 239, 266, 266, 346, 346, 4, 0, 249, 249, 261, 261, 275, 275, 318, 318, 3, 0, 23, 23, 56, 56, 155, 155, 5, 0, 24, 24, 138, 139, 144, 144, 150, 150, 298, 298, 2, 0, 218, 218, 321, 321, 3, 0, 56, 56, 135, 135, 155, 155, 2, 0, 8, 8, 30, 30, 2, 0, 44, 44, 72, 72, 2, 0, 176, 176, 180, 180, 2, 0, 245, 245, 344, 344, 2, 0, 369, 369, 389, 390, 4, 0, 32, 32, 387, 387, 391, 391, 394, 394, 2, 0, 389, 390, 392, 392, 1, 0, 389, 390, 1, 0, 398, 399, 2, 0, 398, 398, 401, 401, 4, 0, 32, 32, 387, 387, 389, 391, 393, 394, 3, 0, 294, 294, 368, 369, 389, 390, 2, 0, 176, 176, 232, 232, 1, 0, 175, 364, 1, 0, 4, 174, 2312, 0, 352, 1, 0, 0, 0, 2, 355, 1, 0, 0, 0, 4, 365, 1, 0, 0, 0, 6, 380, 1, 0, 0, 0, 8, 382, 1, 0, 0, 0, 10, 398, 1, 0, 0, 0, 12, 402, 1, 0, 0, 0, 14, 404, 1, 0, 0, 0, 16, 407, 1, 0, 0, 0, 18, 418, 1, 0, 0, 0, 20, 426, 1, 0, 0, 0, 22, 434, 1, 0, 0, 0, 24, 436, 1, 0, 0, 0, 26, 481, 1, 0, 0, 0, 28, 483, 1, 0, 0, 0, 30, 490, 1, 0, 0, 0, 32, 494, 1, 0, 0, 0, 34, 498, 1, 0, 0, 0, 36, 502, 1, 0, 0, 0, 38, 545, 1, 0, 0, 0, 40, 549, 1, 0, 0, 0, 42, 551, 1, 0, 0, 0, 44, 592, 1, 0, 0, 0, 46, 606, 1, 0, 0, 0, 48, 608, 1, 0, 0, 0, 50, 618, 1, 0, 0, 0, 52, 620, 1, 0, 0, 0, 54, 668, 1, 0, 0, 0, 56, 670, 1, 0, 0, 0, 58, 674, 1, 0, 0, 0, 60, 682, 1, 0, 0, 0, 62, 690, 1, 0, 0, 0, 64, 694, 1, 0, 0, 0, 66, 701, 1, 0, 0, 0, 68, 729, 1, 0, 0, 0, 70, 731, 1, 0, 0, 0, 72, 734, 1, 0, 0, 0, 74, 744, 1, 0, 0, 0, 76, 746, 1, 0, 0, 0, 78, 752, 1, 0, 0, 0, 80, 754, 1, 0, 0, 0, 82, 762, 1, 0, 0, 0, 84, 770, 1, 0, 0, 0, 86, 772, 1, 0, 0, 0, 88, 776, 1, 0, 0, 0, 90, 780, 1, 0, 0, 0, 92, 804, 1, 0, 0, 0, 94, 808, 1, 0, 0, 0, 96, 810, 1, 0, 0, 0, 98, 822, 1, 0, 0, 0, 100, 828, 1, 0, 0, 0, 102, 830, 1, 0, 0, 0, 104, 835, 1, 0, 0, 0, 106, 846, 1, 0, 0, 0, 108, 864, 1, 0, 0, 0, 110, 884, 1, 0, 0, 0, 112, 895, 1, 0, 0, 0, 114, 897, 1, 0, 0, 0, 116, 910, 1, 0, 0, 0, 118, 917, 1, 0, 0, 0, 120, 920, 1, 0, 0, 0, 122, 929, 1, 0, 0, 0, 124, 933, 1, 0, 0, 0, 126, 937, 1, 0, 0, 0, 128, 940, 1, 0, 0, 0, 130, 948, 1, 0, 0, 0, 132, 953, 1, 0, 0, 0, 134, 970, 1, 0, 0, 0, 136, 977, 1, 0, 0, 0, 138, 987, 1, 0, 0, 0, 140, 996, 1, 0, 0, 0, 142, 1006, 1, 0, 0, 0, 144, 1024, 1, 0, 0, 0, 146, 1026, 1, 0, 0, 0, 148, 1039, 1, 0, 0, 0, 150, 1042, 1, 0, 0, 0, 152, 1051, 1, 0, 0, 0, 154, 1062, 1, 0, 0, 0, 156, 1097, 1, 0, 0, 0, 158, 1116, 1, 0, 0, 0, 160, 1125, 1, 0, 0, 0, 162, 1134, 1, 0, 0, 0, 164, 1153, 1, 0, 0, 0, 166, 1173, 1, 0, 0, 0, 168, 1175, 1, 0, 0, 0, 170, 1198, 1, 0, 0, 0, 172, 1212, 1, 0, 0, 0, 174, 1214, 1, 0, 0, 0, 176, 1228, 1, 0, 0, 0, 178, 1254, 1, 0, 0, 0, 180, 1299, 1, 0, 0, 0, 182, 1301, 1, 0, 0, 0, 184, 1303, 1, 0, 0, 0, 186, 1309, 1, 0, 0, 0, 188, 1311, 1, 0, 0, 0, 190, 1316, 1, 0, 0, 0, 192, 1321, 1, 0, 0, 0, 194, 1333, 1, 0, 0, 0, 196, 1350, 1, 0, 0, 0, 198, 1352, 1, 0, 0, 0, 200, 1354, 1, 0, 0, 0, 202, 1373, 1, 0, 0, 0, 204, 1375, 1, 0, 0, 0, 206, 1378, 1, 0, 0, 0, 208, 1427, 1, 0, 0, 0, 210, 1429, 1, 0, 0, 0, 212, 1432, 1, 0, 0, 0, 214, 1434, 1, 0, 0, 0, 216, 1441, 1, 0, 0, 0, 218, 1443, 1, 0, 0, 0, 220, 1445, 1, 0, 0, 0, 222, 1448, 1, 0, 0, 0, 224, 1457, 1, 0, 0, 0, 226, 1462, 1, 0, 0, 0, 228, 1476, 1, 0, 0, 0, 230, 1504, 1, 0, 0, 0, 232, 1514, 1, 0, 0, 0, 234, 1522, 1, 0, 0, 0, 236, 1527, 1, 0, 0, 0, 238, 1553, 1, 0, 0, 0, 240, 1555, 1, 0, 0, 0, 242, 1564, 1, 0, 0, 0, 244, 1575, 1, 0, 0, 0, 246, 1587, 1, 0, 0, 0, 248, 1613, 1, 0, 0, 0, 250, 1615, 1, 0, 0, 0, 252, 1633, 1, 0, 0, 0, 254, 1635, 1, 0, 0, 0, 256, 1640, 1, 0, 0, 0, 258, 1643, 1, 0, 0, 0, 260, 1657, 1, 0, 0, 0, 262, 1753, 1, 0, 0, 0, 264, 1780, 1, 0, 0, 0, 266, 1786, 1, 0, 0, 0, 268, 1903, 1, 0, 0, 0, 270, 1918, 1, 0, 0, 0, 272, 1920, 1, 0, 0, 0, 274, 1922, 1, 0, 0, 0, 276, 1926, 1, 0, 0, 0, 278, 1928, 1, 0, 0, 0, 280, 1933, 1, 0, 0, 0, 282, 1940, 1, 0, 0, 0, 284, 1944, 1, 0, 0, 0, 286, 1949, 1, 0, 0, 0, 288, 1959, 1, 0, 0, 0, 290, 1963, 1, 0, 0, 0, 292, 1966, 1, 0, 0, 0, 294, 1973, 1, 0, 0, 0, 296, 1979, 1, 0, 0, 0, 298, 1989, 1, 0, 0, 0, 300, 1991, 1, 0, 0, 0, 302, 1995, 1, 0, 0, 0, 304, 2006, 1, 0, 0, 0, 306, 2008, 1, 0, 0, 0, 308, 2010, 1, 0, 0, 0, 310, 2012, 1, 0, 0, 0, 312, 2017, 1, 0, 0, 0, 314, 2025, 1, 0, 0, 0, 316, 2028, 1, 0, 0, 0, 318, 2032, 1, 0, 0, 0, 320, 2035, 1, 0, 0, 0, 322, 2046, 1, 0, 0, 0, 324, 2056, 1, 0, 0, 0, 326, 2062, 1, 0, 0, 0, 328, 2070, 1, 0, 0, 0, 330, 2086, 1, 0, 0, 0, 332, 2095, 1, 0, 0, 0, 334, 2097, 1, 0, 0, 0, 336, 2099, 1, 0, 0, 0, 338, 2113, 1, 0, 0, 0, 340, 2115, 1, 0, 0, 0, 342, 2117, 1, 0, 0, 0, 344, 2119, 1, 0, 0, 0, 346, 2121, 1, 0, 0, 0, 348, 2123, 1, 0, 0, 0, 350, 2125, 1, 0, 0, 0, 352, 353, 3, 2, 1, 0, 353, 354, 5, 0, 0, 1, 354, 1, 1, 0, 0, 0, 355, 356, 3, 4, 2, 0, 356, 357, 5, 0, 0, 1, 357, 3, 1, 0, 0, 0, 358, 360, 3, 6, 3, 0, 359, 361, 5, 381, 0, 0, 360, 359, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 364, 1, 0, 0, 0, 362, 364, 3, 8, 4, 0, 363, 358, 1, 0, 0, 0, 363, 362, 1, 0, 0, 0, 364, 367, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 5, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 368, 381, 3, 10, 5, 0, 369, 381, 3, 12, 6, 0, 370, 381, 3, 14, 7, 0, 371, 381, 3, 16, 8, 0, 372, 381, 3, 22, 11, 0, 373, 381, 3, 26, 13, 0, 374, 381, 3, 28, 14, 0, 375, 381, 3, 30, 15, 0, 376, 381, 3, 32, 16, 0, 377, 381, 3, 34, 17, 0, 378, 381, 3, 36, 18, 0, 379, 381, 3, 38, 19, 0, 380, 368, 1, 0, 0, 0, 380, 369, 1, 0, 0, 0, 380, 370, 1, 0, 0, 0, 380, 371, 1, 0, 0, 0, 380, 372, 1, 0, 0, 0, 380, 373, 1, 0, 0, 0, 380, 374, 1, 0, 0, 0, 380, 375, 1, 0, 0, 0, 380, 376, 1, 0, 0, 0, 380, 377, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 379, 1, 0, 0, 0, 381, 7, 1, 0, 0, 0, 382, 383, 5, 381, 0, 0, 383, 9, 1, 0, 0, 0, 384, 399, 3, 40, 20, 0, 385, 399, 3, 104, 52, 0, 386, 399, 3, 106, 53, 0, 387, 399, 3, 108, 54, 0, 388, 399, 3, 102, 51, 0, 389, 399, 3, 114, 57, 0, 390, 399, 3, 128, 64, 0, 391, 399, 3, 130, 65, 0, 392, 399, 3, 132, 66, 0, 393, 399, 3, 134, 67, 0, 394, 399, 3, 136, 68, 0, 395, 399, 3, 138, 69, 0, 396, 399, 3, 140, 70, 0, 397, 399, 3, 142, 71, 0, 398, 384, 1, 0, 0, 0, 398, 385, 1, 0, 0, 0, 398, 386, 1, 0, 0, 0, 398, 387, 1, 0, 0, 0, 398, 388, 1, 0, 0, 0, 398, 389, 1, 0, 0, 0, 398, 390, 1, 0, 0, 0, 398, 391, 1, 0, 0, 0, 398, 392, 1, 0, 0, 0, 398, 393, 1, 0, 0, 0, 398, 394, 1, 0, 0, 0, 398, 395, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 397, 1, 0, 0, 0, 399, 11, 1, 0, 0, 0, 400, 403, 3, 156, 78, 0, 401, 403, 3, 144, 72, 0, 402, 400, 1, 0, 0, 0, 402, 401, 1, 0, 0, 0, 403, 13, 1, 0, 0, 0, 404, 405, 7, 0, 0, 0, 405, 406, 3, 312, 156, 0, 406, 15, 1, 0, 0, 0, 407, 411, 5, 242, 0, 0, 408, 412, 3, 18, 9, 0, 409, 410, 5, 100, 0, 0, 410, 412, 5, 247, 0, 0, 411, 408, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 416, 1, 0, 0, 0, 413, 417, 3, 12, 6, 0, 414, 417, 3, 146, 73, 0, 415, 417, 3, 154, 77, 0, 416, 413, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 416, 415, 1, 0, 0, 0, 417, 17, 1, 0, 0, 0, 418, 423, 3, 20, 10, 0, 419, 420, 5, 380, 0, 0, 420, 422, 3, 20, 10, 0, 421, 419, 1, 0, 0, 0, 422, 425, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 19, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 426, 427, 7, 1, 0, 0, 427, 21, 1, 0, 0, 0, 428, 430, 5, 160, 0, 0, 429, 431, 5, 12, 0, 0, 430, 429, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 435, 3, 312, 156, 0, 433, 435, 3, 24, 12, 0, 434, 428, 1, 0, 0, 0, 434, 433, 1, 0, 0, 0, 435, 23, 1, 0, 0, 0, 436, 437, 5, 160, 0, 0, 437, 438, 5, 83, 0, 0, 438, 443, 3, 312, 156, 0, 439, 440, 5, 380, 0, 0, 440, 442, 3, 312, 156, 0, 441, 439, 1, 0, 0, 0, 442, 445, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 25, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 446, 447, 5, 327, 0, 0, 447, 482, 7, 2, 0, 0, 448, 449, 5, 327, 0, 0, 449, 450, 5, 219, 0, 0, 450, 482, 7, 3, 0, 0, 451, 452, 5, 327, 0, 0, 452, 455, 5, 148, 0, 0, 453, 454, 7, 4, 0, 0, 454, 456, 3, 312, 156, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 458, 1, 0, 0, 0, 457, 459, 3, 264, 132, 0, 458, 457, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 482, 1, 0, 0, 0, 460, 461, 5, 327, 0, 0, 461, 462, 5, 20, 0, 0, 462, 463, 7, 4, 0, 0, 463, 465, 3, 312, 156, 0, 464, 466, 3, 264, 132, 0, 465, 464, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 482, 1, 0, 0, 0, 467, 468, 5, 327, 0, 0, 468, 469, 5, 216, 0, 0, 469, 470, 7, 5, 0, 0, 470, 482, 3, 312, 156, 0, 471, 473, 5, 327, 0, 0, 472, 474, 5, 352, 0, 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 482, 5, 50, 0, 0, 476, 478, 5, 327, 0, 0, 477, 479, 5, 249, 0, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 5, 83, 0, 0, 481, 446, 1, 0, 0, 0, 481, 448, 1, 0, 0, 0, 481, 451, 1, 0, 0, 0, 481, 460, 1, 0, 0, 0, 481, 467, 1, 0, 0, 0, 481, 471, 1, 0, 0, 0, 481, 476, 1, 0, 0, 0, 482, 27, 1, 0, 0, 0, 483, 484, 5, 75, 0, 0, 484, 485, 5, 287, 0, 0, 485, 488, 3, 312, 156, 0, 486, 487, 5, 361, 0, 0, 487, 489, 3, 320, 160, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 29, 1, 0, 0, 0, 490, 491, 5, 158, 0, 0, 491, 492, 5, 287, 0, 0, 492, 493, 3, 312, 156, 0, 493, 31, 1, 0, 0, 0, 494, 496, 5, 326, 0, 0, 495, 497, 3, 322, 161, 0, 496, 495, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 33, 1, 0, 0, 0, 498, 500, 5, 316, 0, 0, 499, 501, 3, 324, 162, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 35, 1, 0, 0, 0, 502, 503, 7, 6, 0, 0, 503, 504, 5, 63, 0, 0, 504, 505, 3, 112, 56, 0, 505, 37, 1, 0, 0, 0, 506, 507, 5, 4, 0, 0, 507, 508, 5, 63, 0, 0, 508, 509, 5, 361, 0, 0, 509, 512, 5, 402, 0, 0, 510, 511, 5, 183, 0, 0, 511, 513, 3, 312, 156, 0, 512, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 546, 1, 0, 0, 0, 514, 515, 5, 4, 0, 0, 515, 516, 5, 42, 0, 0, 516, 517, 5, 361, 0, 0, 517, 520, 5, 402, 0, 0, 518, 519, 5, 183, 0, 0, 519, 521, 3, 312, 156, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 524, 1, 0, 0, 0, 522, 523, 5, 118, 0, 0, 523, 525, 3, 312, 156, 0, 524, 522, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 546, 1, 0, 0, 0, 526, 527, 5, 4, 0, 0, 527, 528, 7, 7, 0, 0, 528, 529, 5, 361, 0, 0, 529, 530, 5, 402, 0, 0, 530, 531, 5, 118, 0, 0, 531, 546, 3, 312, 156, 0, 532, 533, 5, 4, 0, 0, 533, 534, 5, 112, 0, 0, 534, 546, 5, 402, 0, 0, 535, 536, 5, 4, 0, 0, 536, 537, 5, 35, 0, 0, 537, 538, 5, 42, 0, 0, 538, 539, 5, 361, 0, 0, 539, 540, 5, 402, 0, 0, 540, 541, 5, 118, 0, 0, 541, 542, 3, 312, 156, 0, 542, 543, 5, 68, 0, 0, 543, 544, 3, 312, 156, 0, 544, 546, 1, 0, 0, 0, 545, 506, 1, 0, 0, 0, 545, 514, 1, 0, 0, 0, 545, 526, 1, 0, 0, 0, 545, 532, 1, 0, 0, 0, 545, 535, 1, 0, 0, 0, 546, 39, 1, 0, 0, 0, 547, 550, 3, 42, 21, 0, 548, 550, 3, 44, 22, 0, 549, 547, 1, 0, 0, 0, 549, 548, 1, 0, 0, 0, 550, 41, 1, 0, 0, 0, 551, 553, 5, 216, 0, 0, 552, 554, 5, 149, 0, 0, 553, 552, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 557, 5, 337, 0, 0, 556, 558, 3, 316, 158, 0, 557, 556, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 560, 3, 98, 49, 0, 560, 561, 5, 376, 0, 0, 561, 566, 3, 46, 23, 0, 562, 563, 5, 380, 0, 0, 563, 565, 3, 46, 23, 0, 564, 562, 1, 0, 0, 0, 565, 568, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 571, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 569, 570, 5, 380, 0, 0, 570, 572, 3, 80, 40, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 575, 1, 0, 0, 0, 573, 574, 5, 380, 0, 0, 574, 576, 3, 82, 41, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 579, 1, 0, 0, 0, 577, 578, 5, 380, 0, 0, 578, 580, 3, 86, 43, 0, 579, 577, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 583, 5, 377, 0, 0, 582, 584, 3, 70, 35, 0, 583, 582, 1, 0, 0, 0, 583, 584, 1, 0, 0, 0, 584, 586, 1, 0, 0, 0, 585, 587, 3, 88, 44, 0, 586, 585, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 590, 3, 314, 157, 0, 589, 591, 3, 96, 48, 0, 590, 589, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 43, 1, 0, 0, 0, 592, 593, 5, 216, 0, 0, 593, 595, 5, 337, 0, 0, 594, 596, 3, 316, 158, 0, 595, 594, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 3, 98, 49, 0, 598, 601, 3, 314, 157, 0, 599, 600, 5, 183, 0, 0, 600, 602, 3, 156, 78, 0, 601, 599, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 45, 1, 0, 0, 0, 603, 607, 3, 48, 24, 0, 604, 607, 3, 72, 36, 0, 605, 607, 3, 76, 38, 0, 606, 603, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 605, 1, 0, 0, 0, 607, 47, 1, 0, 0, 0, 608, 609, 3, 50, 25, 0, 609, 611, 3, 54, 27, 0, 610, 612, 3, 68, 34, 0, 611, 610, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 614, 1, 0, 0, 0, 613, 615, 3, 70, 35, 0, 614, 613, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 49, 1, 0, 0, 0, 616, 619, 3, 312, 156, 0, 617, 619, 3, 258, 129, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 51, 1, 0, 0, 0, 620, 621, 5, 376, 0, 0, 621, 626, 3, 50, 25, 0, 622, 623, 5, 380, 0, 0, 623, 625, 3, 50, 25, 0, 624, 622, 1, 0, 0, 0, 625, 628, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 629, 1, 0, 0, 0, 628, 626, 1, 0, 0, 0, 629, 630, 5, 377, 0, 0, 630, 53, 1, 0, 0, 0, 631, 669, 7, 8, 0, 0, 632, 634, 7, 9, 0, 0, 633, 635, 3, 56, 28, 0, 634, 633, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 669, 1, 0, 0, 0, 636, 638, 5, 341, 0, 0, 637, 639, 3, 56, 28, 0, 638, 637, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 646, 1, 0, 0, 0, 640, 642, 7, 10, 0, 0, 641, 643, 5, 278, 0, 0, 642, 641, 1, 0, 0, 0, 642, 643, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 645, 5, 340, 0, 0, 645, 647, 5, 174, 0, 0, 646, 640, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 669, 1, 0, 0, 0, 648, 650, 7, 11, 0, 0, 649, 651, 3, 58, 29, 0, 650, 649, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 669, 1, 0, 0, 0, 652, 654, 7, 12, 0, 0, 653, 655, 3, 62, 31, 0, 654, 653, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 669, 1, 0, 0, 0, 656, 658, 5, 76, 0, 0, 657, 659, 3, 64, 32, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 669, 1, 0, 0, 0, 660, 662, 5, 322, 0, 0, 661, 663, 3, 66, 33, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 669, 1, 0, 0, 0, 664, 666, 5, 114, 0, 0, 665, 667, 3, 60, 30, 0, 666, 665, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 669, 1, 0, 0, 0, 668, 631, 1, 0, 0, 0, 668, 632, 1, 0, 0, 0, 668, 636, 1, 0, 0, 0, 668, 648, 1, 0, 0, 0, 668, 652, 1, 0, 0, 0, 668, 656, 1, 0, 0, 0, 668, 660, 1, 0, 0, 0, 668, 664, 1, 0, 0, 0, 669, 55, 1, 0, 0, 0, 670, 671, 5, 376, 0, 0, 671, 672, 3, 342, 171, 0, 672, 673, 5, 377, 0, 0, 673, 57, 1, 0, 0, 0, 674, 675, 5, 376, 0, 0, 675, 678, 3, 342, 171, 0, 676, 677, 5, 380, 0, 0, 677, 679, 3, 342, 171, 0, 678, 676, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 681, 5, 377, 0, 0, 681, 59, 1, 0, 0, 0, 682, 683, 5, 376, 0, 0, 683, 686, 3, 340, 170, 0, 684, 685, 5, 380, 0, 0, 685, 687, 3, 340, 170, 0, 686, 684, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 5, 377, 0, 0, 689, 61, 1, 0, 0, 0, 690, 691, 5, 367, 0, 0, 691, 692, 3, 54, 27, 0, 692, 693, 5, 366, 0, 0, 693, 63, 1, 0, 0, 0, 694, 695, 5, 367, 0, 0, 695, 696, 3, 54, 27, 0, 696, 697, 5, 380, 0, 0, 697, 698, 3, 54, 27, 0, 698, 699, 1, 0, 0, 0, 699, 700, 5, 366, 0, 0, 700, 65, 1, 0, 0, 0, 701, 702, 5, 367, 0, 0, 702, 703, 3, 50, 25, 0, 703, 710, 3, 54, 27, 0, 704, 705, 5, 380, 0, 0, 705, 706, 3, 50, 25, 0, 706, 707, 3, 54, 27, 0, 707, 709, 1, 0, 0, 0, 708, 704, 1, 0, 0, 0, 709, 712, 1, 0, 0, 0, 710, 708, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 713, 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 713, 714, 5, 366, 0, 0, 714, 67, 1, 0, 0, 0, 715, 716, 5, 212, 0, 0, 716, 718, 3, 84, 42, 0, 717, 715, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 720, 5, 313, 0, 0, 720, 723, 5, 68, 0, 0, 721, 722, 5, 294, 0, 0, 722, 724, 5, 34, 0, 0, 723, 721, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 730, 1, 0, 0, 0, 725, 727, 5, 294, 0, 0, 726, 725, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 730, 5, 295, 0, 0, 729, 717, 1, 0, 0, 0, 729, 726, 1, 0, 0, 0, 730, 69, 1, 0, 0, 0, 731, 732, 5, 18, 0, 0, 732, 733, 5, 397, 0, 0, 733, 71, 1, 0, 0, 0, 734, 735, 3, 50, 25, 0, 735, 736, 3, 54, 27, 0, 736, 739, 5, 283, 0, 0, 737, 738, 5, 248, 0, 0, 738, 740, 3, 74, 37, 0, 739, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 742, 1, 0, 0, 0, 741, 743, 5, 167, 0, 0, 742, 741, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 73, 1, 0, 0, 0, 744, 745, 5, 397, 0, 0, 745, 75, 1, 0, 0, 0, 746, 747, 3, 50, 25, 0, 747, 748, 5, 183, 0, 0, 748, 750, 3, 78, 39, 0, 749, 751, 3, 70, 35, 0, 750, 749, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 77, 1, 0, 0, 0, 752, 753, 3, 258, 129, 0, 753, 79, 1, 0, 0, 0, 754, 755, 5, 168, 0, 0, 755, 756, 5, 247, 0, 0, 756, 757, 3, 258, 129, 0, 757, 758, 5, 183, 0, 0, 758, 759, 3, 258, 129, 0, 759, 81, 1, 0, 0, 0, 760, 761, 5, 212, 0, 0, 761, 763, 3, 84, 42, 0, 762, 760, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 765, 5, 313, 0, 0, 765, 766, 5, 68, 0, 0, 766, 767, 3, 52, 26, 0, 767, 768, 5, 294, 0, 0, 768, 769, 5, 34, 0, 0, 769, 83, 1, 0, 0, 0, 770, 771, 3, 304, 152, 0, 771, 85, 1, 0, 0, 0, 772, 773, 5, 311, 0, 0, 773, 774, 5, 247, 0, 0, 774, 775, 5, 335, 0, 0, 775, 87, 1, 0, 0, 0, 776, 777, 5, 94, 0, 0, 777, 778, 5, 194, 0, 0, 778, 779, 3, 90, 45, 0, 779, 89, 1, 0, 0, 0, 780, 781, 5, 376, 0, 0, 781, 786, 3, 92, 46, 0, 782, 783, 5, 380, 0, 0, 783, 785, 3, 92, 46, 0, 784, 782, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 789, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 789, 790, 5, 377, 0, 0, 790, 91, 1, 0, 0, 0, 791, 805, 3, 276, 138, 0, 792, 793, 3, 304, 152, 0, 793, 794, 5, 376, 0, 0, 794, 799, 3, 94, 47, 0, 795, 796, 5, 380, 0, 0, 796, 798, 3, 94, 47, 0, 797, 795, 1, 0, 0, 0, 798, 801, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 802, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 803, 5, 377, 0, 0, 803, 805, 1, 0, 0, 0, 804, 791, 1, 0, 0, 0, 804, 792, 1, 0, 0, 0, 805, 93, 1, 0, 0, 0, 806, 809, 3, 276, 138, 0, 807, 809, 3, 338, 169, 0, 808, 806, 1, 0, 0, 0, 808, 807, 1, 0, 0, 0, 809, 95, 1, 0, 0, 0, 810, 811, 5, 276, 0, 0, 811, 820, 3, 98, 49, 0, 812, 816, 5, 376, 0, 0, 813, 815, 3, 100, 50, 0, 814, 813, 1, 0, 0, 0, 815, 818, 1, 0, 0, 0, 816, 814, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 819, 1, 0, 0, 0, 818, 816, 1, 0, 0, 0, 819, 821, 5, 377, 0, 0, 820, 812, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 97, 1, 0, 0, 0, 822, 823, 3, 312, 156, 0, 823, 99, 1, 0, 0, 0, 824, 825, 7, 13, 0, 0, 825, 829, 7, 14, 0, 0, 826, 827, 7, 15, 0, 0, 827, 829, 7, 16, 0, 0, 828, 824, 1, 0, 0, 0, 828, 826, 1, 0, 0, 0, 829, 101, 1, 0, 0, 0, 830, 831, 5, 216, 0, 0, 831, 832, 5, 12, 0, 0, 832, 833, 3, 312, 156, 0, 833, 834, 3, 314, 157, 0, 834, 103, 1, 0, 0, 0, 835, 836, 5, 216, 0, 0, 836, 838, 5, 25, 0, 0, 837, 839, 3, 316, 158, 0, 838, 837, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 842, 3, 312, 156, 0, 841, 843, 3, 70, 35, 0, 842, 841, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 844, 1, 0, 0, 0, 844, 845, 3, 314, 157, 0, 845, 105, 1, 0, 0, 0, 846, 848, 5, 216, 0, 0, 847, 849, 5, 149, 0, 0, 848, 847, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 852, 5, 165, 0, 0, 851, 853, 3, 316, 158, 0, 852, 851, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 856, 3, 312, 156, 0, 855, 857, 3, 52, 26, 0, 856, 855, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 859, 1, 0, 0, 0, 858, 860, 3, 70, 35, 0, 859, 858, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 5, 183, 0, 0, 862, 863, 3, 156, 78, 0, 863, 107, 1, 0, 0, 0, 864, 868, 5, 216, 0, 0, 865, 869, 5, 149, 0, 0, 866, 867, 5, 149, 0, 0, 867, 869, 5, 334, 0, 0, 868, 865, 1, 0, 0, 0, 868, 866, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 872, 5, 250, 0, 0, 871, 873, 3, 316, 158, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 3, 312, 156, 0, 875, 876, 5, 183, 0, 0, 876, 879, 3, 304, 152, 0, 877, 878, 5, 272, 0, 0, 878, 880, 7, 17, 0, 0, 879, 877, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 882, 1, 0, 0, 0, 881, 883, 3, 110, 55, 0, 882, 881, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 109, 1, 0, 0, 0, 884, 885, 5, 353, 0, 0, 885, 886, 5, 63, 0, 0, 886, 892, 3, 112, 56, 0, 887, 888, 5, 380, 0, 0, 888, 889, 5, 63, 0, 0, 889, 891, 3, 112, 56, 0, 890, 887, 1, 0, 0, 0, 891, 894, 1, 0, 0, 0, 892, 890, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 111, 1, 0, 0, 0, 894, 892, 1, 0, 0, 0, 895, 896, 5, 397, 0, 0, 896, 113, 1, 0, 0, 0, 897, 898, 5, 178, 0, 0, 898, 900, 5, 337, 0, 0, 899, 901, 3, 318, 159, 0, 900, 899, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 908, 3, 312, 156, 0, 903, 909, 3, 116, 58, 0, 904, 909, 3, 118, 59, 0, 905, 909, 3, 120, 60, 0, 906, 909, 3, 122, 61, 0, 907, 909, 3, 124, 62, 0, 908, 903, 1, 0, 0, 0, 908, 904, 1, 0, 0, 0, 908, 905, 1, 0, 0, 0, 908, 906, 1, 0, 0, 0, 908, 907, 1, 0, 0, 0, 909, 115, 1, 0, 0, 0, 910, 912, 5, 118, 0, 0, 911, 913, 3, 312, 156, 0, 912, 911, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 915, 5, 343, 0, 0, 915, 916, 3, 312, 156, 0, 916, 117, 1, 0, 0, 0, 917, 918, 5, 326, 0, 0, 918, 919, 3, 320, 160, 0, 919, 119, 1, 0, 0, 0, 920, 921, 5, 4, 0, 0, 921, 922, 5, 212, 0, 0, 922, 923, 3, 84, 42, 0, 923, 924, 5, 313, 0, 0, 924, 925, 5, 68, 0, 0, 925, 927, 3, 52, 26, 0, 926, 928, 3, 126, 63, 0, 927, 926, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 121, 1, 0, 0, 0, 929, 930, 5, 234, 0, 0, 930, 931, 5, 212, 0, 0, 931, 932, 3, 84, 42, 0, 932, 123, 1, 0, 0, 0, 933, 934, 5, 4, 0, 0, 934, 935, 5, 347, 0, 0, 935, 936, 3, 52, 26, 0, 936, 125, 1, 0, 0, 0, 937, 938, 5, 294, 0, 0, 938, 939, 5, 34, 0, 0, 939, 127, 1, 0, 0, 0, 940, 941, 5, 178, 0, 0, 941, 942, 5, 165, 0, 0, 942, 946, 3, 312, 156, 0, 943, 947, 3, 116, 58, 0, 944, 945, 5, 183, 0, 0, 945, 947, 3, 156, 78, 0, 946, 943, 1, 0, 0, 0, 946, 944, 1, 0, 0, 0, 947, 129, 1, 0, 0, 0, 948, 949, 5, 178, 0, 0, 949, 950, 5, 25, 0, 0, 950, 951, 3, 312, 156, 0, 951, 952, 3, 118, 59, 0, 952, 131, 1, 0, 0, 0, 953, 957, 5, 178, 0, 0, 954, 958, 5, 149, 0, 0, 955, 956, 5, 149, 0, 0, 956, 958, 5, 334, 0, 0, 957, 954, 1, 0, 0, 0, 957, 955, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 961, 5, 250, 0, 0, 960, 962, 3, 318, 159, 0, 961, 960, 1, 0, 0, 0, 961, 962, 1, 0, 0, 0, 962, 963, 1, 0, 0, 0, 963, 964, 3, 312, 156, 0, 964, 965, 5, 183, 0, 0, 965, 968, 3, 304, 152, 0, 966, 967, 5, 272, 0, 0, 967, 969, 7, 17, 0, 0, 968, 966, 1, 0, 0, 0, 968, 969, 1, 0, 0, 0, 969, 133, 1, 0, 0, 0, 970, 971, 5, 234, 0, 0, 971, 973, 5, 12, 0, 0, 972, 974, 3, 318, 159, 0, 973, 972, 1, 0, 0, 0, 973, 974, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 976, 3, 312, 156, 0, 976, 135, 1, 0, 0, 0, 977, 979, 5, 234, 0, 0, 978, 980, 5, 149, 0, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 983, 5, 337, 0, 0, 982, 984, 3, 318, 159, 0, 983, 982, 1, 0, 0, 0, 983, 984, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 986, 3, 312, 156, 0, 986, 137, 1, 0, 0, 0, 987, 988, 5, 234, 0, 0, 988, 990, 5, 25, 0, 0, 989, 991, 3, 318, 159, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0, 0, 991, 992, 1, 0, 0, 0, 992, 994, 3, 312, 156, 0, 993, 995, 7, 18, 0, 0, 994, 993, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 139, 1, 0, 0, 0, 996, 998, 5, 234, 0, 0, 997, 999, 5, 149, 0, 0, 998, 997, 1, 0, 0, 0, 998, 999, 1, 0, 0, 0, 999, 1000, 1, 0, 0, 0, 1000, 1002, 5, 165, 0, 0, 1001, 1003, 3, 318, 159, 0, 1002, 1001, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1004, 1, 0, 0, 0, 1004, 1005, 3, 312, 156, 0, 1005, 141, 1, 0, 0, 0, 1006, 1010, 5, 234, 0, 0, 1007, 1011, 5, 149, 0, 0, 1008, 1009, 5, 149, 0, 0, 1009, 1011, 5, 334, 0, 0, 1010, 1007, 1, 0, 0, 0, 1010, 1008, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1014, 5, 250, 0, 0, 1013, 1015, 3, 318, 159, 0, 1014, 1013, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1016, 1, 0, 0, 0, 1016, 1017, 3, 312, 156, 0, 1017, 143, 1, 0, 0, 0, 1018, 1020, 5, 240, 0, 0, 1019, 1018, 1, 0, 0, 0, 1019, 1020, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1025, 3, 146, 73, 0, 1022, 1023, 5, 240, 0, 0, 1023, 1025, 3, 154, 77, 0, 1024, 1019, 1, 0, 0, 0, 1024, 1022, 1, 0, 0, 0, 1025, 145, 1, 0, 0, 0, 1026, 1027, 5, 263, 0, 0, 1027, 1028, 7, 19, 0, 0, 1028, 1037, 3, 312, 156, 0, 1029, 1031, 3, 148, 74, 0, 1030, 1029, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1033, 1, 0, 0, 0, 1032, 1034, 3, 52, 26, 0, 1033, 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1038, 3, 156, 78, 0, 1036, 1038, 3, 150, 75, 0, 1037, 1030, 1, 0, 0, 0, 1037, 1036, 1, 0, 0, 0, 1038, 147, 1, 0, 0, 0, 1039, 1040, 5, 307, 0, 0, 1040, 1041, 3, 320, 160, 0, 1041, 149, 1, 0, 0, 0, 1042, 1043, 5, 355, 0, 0, 1043, 1048, 3, 152, 76, 0, 1044, 1045, 5, 380, 0, 0, 1045, 1047, 3, 152, 76, 0, 1046, 1044, 1, 0, 0, 0, 1047, 1050, 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 151, 1, 0, 0, 0, 1050, 1048, 1, 0, 0, 0, 1051, 1052, 5, 376, 0, 0, 1052, 1057, 3, 338, 169, 0, 1053, 1054, 5, 380, 0, 0, 1054, 1056, 3, 338, 169, 0, 1055, 1053, 1, 0, 0, 0, 1056, 1059, 1, 0, 0, 0, 1057, 1055, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1060, 1, 0, 0, 0, 1059, 1057, 1, 0, 0, 0, 1060, 1061, 5, 377, 0, 0, 1061, 153, 1, 0, 0, 0, 1062, 1063, 5, 143, 0, 0, 1063, 1064, 5, 326, 0, 0, 1064, 1068, 5, 186, 0, 0, 1065, 1066, 3, 146, 73, 0, 1066, 1067, 5, 381, 0, 0, 1067, 1069, 1, 0, 0, 0, 1068, 1065, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1068, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 5, 237, 0, 0, 1073, 155, 1, 0, 0, 0, 1074, 1075, 6, 78, -1, 0, 1075, 1098, 3, 158, 79, 0, 1076, 1077, 3, 160, 80, 0, 1077, 1078, 3, 156, 78, 5, 1078, 1098, 1, 0, 0, 0, 1079, 1080, 5, 376, 0, 0, 1080, 1081, 3, 156, 78, 0, 1081, 1082, 5, 377, 0, 0, 1082, 1098, 1, 0, 0, 0, 1083, 1085, 3, 168, 84, 0, 1084, 1086, 3, 230, 115, 0, 1085, 1084, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 1, 0, 0, 0, 1087, 1089, 3, 234, 117, 0, 1088, 1087, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1098, 1, 0, 0, 0, 1090, 1092, 3, 166, 83, 0, 1091, 1093, 3, 230, 115, 0, 1092, 1091, 1, 0, 0, 0, 1092, 1093, 1, 0, 0, 0, 1093, 1095, 1, 0, 0, 0, 1094, 1096, 3, 234, 117, 0, 1095, 1094, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1098, 1, 0, 0, 0, 1097, 1074, 1, 0, 0, 0, 1097, 1076, 1, 0, 0, 0, 1097, 1079, 1, 0, 0, 0, 1097, 1083, 1, 0, 0, 0, 1097, 1090, 1, 0, 0, 0, 1098, 1113, 1, 0, 0, 0, 1099, 1100, 10, 3, 0, 0, 1100, 1102, 7, 20, 0, 0, 1101, 1103, 5, 176, 0, 0, 1102, 1101, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1106, 3, 156, 78, 0, 1105, 1107, 3, 230, 115, 0, 1106, 1105, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1109, 1, 0, 0, 0, 1108, 1110, 3, 234, 117, 0, 1109, 1108, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, 1, 0, 0, 0, 1111, 1099, 1, 0, 0, 0, 1112, 1115, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 157, 1, 0, 0, 0, 1115, 1113, 1, 0, 0, 0, 1116, 1117, 5, 355, 0, 0, 1117, 1122, 3, 258, 129, 0, 1118, 1119, 5, 380, 0, 0, 1119, 1121, 3, 258, 129, 0, 1120, 1118, 1, 0, 0, 0, 1121, 1124, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 159, 1, 0, 0, 0, 1124, 1122, 1, 0, 0, 0, 1125, 1126, 5, 361, 0, 0, 1126, 1131, 3, 162, 81, 0, 1127, 1128, 5, 380, 0, 0, 1128, 1130, 3, 162, 81, 0, 1129, 1127, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 161, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1146, 3, 164, 82, 0, 1135, 1136, 5, 376, 0, 0, 1136, 1141, 3, 50, 25, 0, 1137, 1138, 5, 380, 0, 0, 1138, 1140, 3, 50, 25, 0, 1139, 1137, 1, 0, 0, 0, 1140, 1143, 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1144, 1, 0, 0, 0, 1143, 1141, 1, 0, 0, 0, 1144, 1145, 5, 377, 0, 0, 1145, 1147, 1, 0, 0, 0, 1146, 1135, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1149, 5, 183, 0, 0, 1149, 1150, 5, 376, 0, 0, 1150, 1151, 3, 156, 78, 0, 1151, 1152, 5, 377, 0, 0, 1152, 163, 1, 0, 0, 0, 1153, 1154, 3, 304, 152, 0, 1154, 165, 1, 0, 0, 0, 1155, 1156, 3, 168, 84, 0, 1156, 1158, 3, 174, 87, 0, 1157, 1159, 3, 204, 102, 0, 1158, 1157, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1161, 1, 0, 0, 0, 1160, 1162, 3, 206, 103, 0, 1161, 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1164, 1, 0, 0, 0, 1163, 1165, 3, 220, 110, 0, 1164, 1163, 1, 0, 0, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1167, 1, 0, 0, 0, 1166, 1168, 3, 222, 111, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1174, 1, 0, 0, 0, 1169, 1170, 3, 168, 84, 0, 1170, 1171, 3, 174, 87, 0, 1171, 1172, 3, 228, 114, 0, 1172, 1174, 1, 0, 0, 0, 1173, 1155, 1, 0, 0, 0, 1173, 1169, 1, 0, 0, 0, 1174, 167, 1, 0, 0, 0, 1175, 1177, 5, 325, 0, 0, 1176, 1178, 3, 346, 173, 0, 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1188, 1, 0, 0, 0, 1179, 1189, 5, 387, 0, 0, 1180, 1185, 3, 170, 85, 0, 1181, 1182, 5, 380, 0, 0, 1182, 1184, 3, 170, 85, 0, 1183, 1181, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1183, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1189, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, 0, 1188, 1179, 1, 0, 0, 0, 1188, 1180, 1, 0, 0, 0, 1189, 169, 1, 0, 0, 0, 1190, 1199, 3, 172, 86, 0, 1191, 1196, 3, 258, 129, 0, 1192, 1194, 5, 183, 0, 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1197, 3, 258, 129, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1199, 1, 0, 0, 0, 1198, 1190, 1, 0, 0, 0, 1198, 1191, 1, 0, 0, 0, 1199, 171, 1, 0, 0, 0, 1200, 1201, 3, 268, 134, 0, 1201, 1202, 5, 305, 0, 0, 1202, 1203, 3, 226, 113, 0, 1203, 1204, 5, 183, 0, 0, 1204, 1205, 3, 304, 152, 0, 1205, 1213, 1, 0, 0, 0, 1206, 1207, 3, 268, 134, 0, 1207, 1208, 5, 305, 0, 0, 1208, 1209, 3, 296, 148, 0, 1209, 1210, 5, 183, 0, 0, 1210, 1211, 3, 304, 152, 0, 1211, 1213, 1, 0, 0, 0, 1212, 1200, 1, 0, 0, 0, 1212, 1206, 1, 0, 0, 0, 1213, 173, 1, 0, 0, 0, 1214, 1215, 5, 248, 0, 0, 1215, 1216, 3, 176, 88, 0, 1216, 175, 1, 0, 0, 0, 1217, 1218, 6, 88, -1, 0, 1218, 1223, 3, 178, 89, 0, 1219, 1220, 5, 380, 0, 0, 1220, 1222, 3, 178, 89, 0, 1221, 1219, 1, 0, 0, 0, 1222, 1225, 1, 0, 0, 0, 1223, 1221, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1229, 1, 0, 0, 0, 1225, 1223, 1, 0, 0, 0, 1226, 1229, 3, 188, 94, 0, 1227, 1229, 3, 190, 95, 0, 1228, 1217, 1, 0, 0, 0, 1228, 1226, 1, 0, 0, 0, 1228, 1227, 1, 0, 0, 0, 1229, 1251, 1, 0, 0, 0, 1230, 1231, 10, 3, 0, 0, 1231, 1232, 5, 217, 0, 0, 1232, 1233, 5, 270, 0, 0, 1233, 1250, 3, 176, 88, 4, 1234, 1236, 10, 4, 0, 0, 1235, 1237, 5, 290, 0, 0, 1236, 1235, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1239, 1, 0, 0, 0, 1238, 1240, 7, 21, 0, 0, 1239, 1238, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241, 1243, 5, 304, 0, 0, 1242, 1241, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 5, 270, 0, 0, 1245, 1247, 3, 176, 88, 0, 1246, 1248, 3, 202, 101, 0, 1247, 1246, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1250, 1, 0, 0, 0, 1249, 1230, 1, 0, 0, 0, 1249, 1234, 1, 0, 0, 0, 1250, 1253, 1, 0, 0, 0, 1251, 1249, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 177, 1, 0, 0, 0, 1253, 1251, 1, 0, 0, 0, 1254, 1256, 3, 180, 90, 0, 1255, 1257, 3, 294, 147, 0, 1256, 1255, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 179, 1, 0, 0, 0, 1258, 1260, 5, 337, 0, 0, 1259, 1258, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1263, 3, 182, 91, 0, 1262, 1264, 3, 184, 92, 0, 1263, 1262, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1269, 1, 0, 0, 0, 1265, 1267, 5, 183, 0, 0, 1266, 1265, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1270, 3, 274, 137, 0, 1269, 1266, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1300, 1, 0, 0, 0, 1271, 1272, 5, 273, 0, 0, 1272, 1273, 5, 337, 0, 0, 1273, 1274, 5, 376, 0, 0, 1274, 1275, 3, 270, 135, 0, 1275, 1276, 5, 376, 0, 0, 1276, 1281, 3, 258, 129, 0, 1277, 1278, 5, 380, 0, 0, 1278, 1280, 3, 258, 129, 0, 1279, 1277, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1284, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1284, 1285, 5, 377, 0, 0, 1285, 1286, 5, 377, 0, 0, 1286, 1300, 1, 0, 0, 0, 1287, 1289, 5, 273, 0, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 5, 376, 0, 0, 1291, 1292, 3, 156, 78, 0, 1292, 1293, 5, 377, 0, 0, 1293, 1300, 1, 0, 0, 0, 1294, 1295, 5, 349, 0, 0, 1295, 1296, 5, 376, 0, 0, 1296, 1297, 3, 258, 129, 0, 1297, 1298, 5, 377, 0, 0, 1298, 1300, 1, 0, 0, 0, 1299, 1259, 1, 0, 0, 0, 1299, 1271, 1, 0, 0, 0, 1299, 1288, 1, 0, 0, 0, 1299, 1294, 1, 0, 0, 0, 1300, 181, 1, 0, 0, 0, 1301, 1302, 3, 312, 156, 0, 1302, 183, 1, 0, 0, 0, 1303, 1304, 5, 247, 0, 0, 1304, 1305, 5, 335, 0, 0, 1305, 1306, 5, 183, 0, 0, 1306, 1307, 5, 297, 0, 0, 1307, 1308, 3, 186, 93, 0, 1308, 185, 1, 0, 0, 0, 1309, 1310, 3, 258, 129, 0, 1310, 187, 1, 0, 0, 0, 1311, 1312, 5, 376, 0, 0, 1312, 1313, 3, 150, 75, 0, 1313, 1314, 5, 377, 0, 0, 1314, 1315, 3, 294, 147, 0, 1315, 189, 1, 0, 0, 0, 1316, 1317, 5, 337, 0, 0, 1317, 1318, 5, 376, 0, 0, 1318, 1319, 3, 192, 96, 0, 1319, 1320, 5, 377, 0, 0, 1320, 191, 1, 0, 0, 0, 1321, 1322, 3, 194, 97, 0, 1322, 1323, 5, 376, 0, 0, 1323, 1328, 3, 196, 98, 0, 1324, 1325, 5, 380, 0, 0, 1325, 1327, 3, 196, 98, 0, 1326, 1324, 1, 0, 0, 0, 1327, 1330, 1, 0, 0, 0, 1328, 1326, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1331, 1332, 5, 377, 0, 0, 1332, 193, 1, 0, 0, 0, 1333, 1334, 7, 22, 0, 0, 1334, 195, 1, 0, 0, 0, 1335, 1336, 5, 337, 0, 0, 1336, 1351, 3, 218, 109, 0, 1337, 1351, 3, 200, 100, 0, 1338, 1351, 3, 278, 139, 0, 1339, 1340, 5, 24, 0, 0, 1340, 1341, 5, 396, 0, 0, 1341, 1342, 5, 337, 0, 0, 1342, 1351, 3, 218, 109, 0, 1343, 1344, 5, 150, 0, 0, 1344, 1345, 5, 396, 0, 0, 1345, 1351, 3, 200, 100, 0, 1346, 1347, 3, 198, 99, 0, 1347, 1348, 5, 396, 0, 0, 1348, 1349, 3, 278, 139, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1335, 1, 0, 0, 0, 1350, 1337, 1, 0, 0, 0, 1350, 1338, 1, 0, 0, 0, 1350, 1339, 1, 0, 0, 0, 1350, 1343, 1, 0, 0, 0, 1350, 1346, 1, 0, 0, 0, 1351, 197, 1, 0, 0, 0, 1352, 1353, 7, 23, 0, 0, 1353, 199, 1, 0, 0, 0, 1354, 1355, 5, 31, 0, 0, 1355, 1356, 5, 376, 0, 0, 1356, 1357, 3, 312, 156, 0, 1357, 1358, 5, 377, 0, 0, 1358, 201, 1, 0, 0, 0, 1359, 1360, 5, 299, 0, 0, 1360, 1374, 3, 260, 130, 0, 1361, 1362, 5, 353, 0, 0, 1362, 1363, 5, 376, 0, 0, 1363, 1368, 3, 312, 156, 0, 1364, 1365, 5, 380, 0, 0, 1365, 1367, 3, 312, 156, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1371, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1372, 5, 377, 0, 0, 1372, 1374, 1, 0, 0, 0, 1373, 1359, 1, 0, 0, 0, 1373, 1361, 1, 0, 0, 0, 1374, 203, 1, 0, 0, 0, 1375, 1376, 5, 359, 0, 0, 1376, 1377, 3, 260, 130, 0, 1377, 205, 1, 0, 0, 0, 1378, 1379, 5, 253, 0, 0, 1379, 1380, 5, 194, 0, 0, 1380, 1385, 3, 208, 104, 0, 1381, 1382, 5, 380, 0, 0, 1382, 1384, 3, 208, 104, 0, 1383, 1381, 1, 0, 0, 0, 1384, 1387, 1, 0, 0, 0, 1385, 1383, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 207, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1388, 1428, 3, 258, 129, 0, 1389, 1428, 3, 214, 107, 0, 1390, 1391, 5, 376, 0, 0, 1391, 1428, 5, 377, 0, 0, 1392, 1393, 5, 376, 0, 0, 1393, 1398, 3, 258, 129, 0, 1394, 1395, 5, 380, 0, 0, 1395, 1397, 3, 258, 129, 0, 1396, 1394, 1, 0, 0, 0, 1397, 1400, 1, 0, 0, 0, 1398, 1396, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1401, 1, 0, 0, 0, 1400, 1398, 1, 0, 0, 0, 1401, 1402, 5, 377, 0, 0, 1402, 1428, 1, 0, 0, 0, 1403, 1404, 3, 212, 106, 0, 1404, 1405, 5, 376, 0, 0, 1405, 1410, 3, 258, 129, 0, 1406, 1407, 5, 380, 0, 0, 1407, 1409, 3, 258, 129, 0, 1408, 1406, 1, 0, 0, 0, 1409, 1412, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1413, 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1413, 1414, 5, 377, 0, 0, 1414, 1428, 1, 0, 0, 0, 1415, 1416, 3, 210, 105, 0, 1416, 1417, 5, 376, 0, 0, 1417, 1422, 3, 208, 104, 0, 1418, 1419, 5, 380, 0, 0, 1419, 1421, 3, 208, 104, 0, 1420, 1418, 1, 0, 0, 0, 1421, 1424, 1, 0, 0, 0, 1422, 1420, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1425, 1, 0, 0, 0, 1424, 1422, 1, 0, 0, 0, 1425, 1426, 5, 377, 0, 0, 1426, 1428, 1, 0, 0, 0, 1427, 1388, 1, 0, 0, 0, 1427, 1389, 1, 0, 0, 0, 1427, 1390, 1, 0, 0, 0, 1427, 1392, 1, 0, 0, 0, 1427, 1403, 1, 0, 0, 0, 1427, 1415, 1, 0, 0, 0, 1428, 209, 1, 0, 0, 0, 1429, 1430, 5, 254, 0, 0, 1430, 1431, 5, 136, 0, 0, 1431, 211, 1, 0, 0, 0, 1432, 1433, 7, 24, 0, 0, 1433, 213, 1, 0, 0, 0, 1434, 1435, 3, 216, 108, 0, 1435, 1436, 5, 376, 0, 0, 1436, 1437, 3, 218, 109, 0, 1437, 1438, 5, 380, 0, 0, 1438, 1439, 3, 278, 139, 0, 1439, 1440, 5, 377, 0, 0, 1440, 215, 1, 0, 0, 0, 1441, 1442, 7, 25, 0, 0, 1442, 217, 1, 0, 0, 0, 1443, 1444, 3, 312, 156, 0, 1444, 219, 1, 0, 0, 0, 1445, 1446, 5, 256, 0, 0, 1446, 1447, 3, 260, 130, 0, 1447, 221, 1, 0, 0, 0, 1448, 1449, 5, 360, 0, 0, 1449, 1454, 3, 224, 112, 0, 1450, 1451, 5, 380, 0, 0, 1451, 1453, 3, 224, 112, 0, 1452, 1450, 1, 0, 0, 0, 1453, 1456, 1, 0, 0, 0, 1454, 1452, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 223, 1, 0, 0, 0, 1456, 1454, 1, 0, 0, 0, 1457, 1458, 3, 296, 148, 0, 1458, 1459, 5, 183, 0, 0, 1459, 1460, 3, 226, 113, 0, 1460, 225, 1, 0, 0, 0, 1461, 1463, 3, 296, 148, 0, 1462, 1461, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1466, 5, 376, 0, 0, 1465, 1467, 3, 236, 118, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1469, 1, 0, 0, 0, 1468, 1470, 3, 230, 115, 0, 1469, 1468, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1472, 1, 0, 0, 0, 1471, 1473, 3, 252, 126, 0, 1472, 1471, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1475, 5, 377, 0, 0, 1475, 227, 1, 0, 0, 0, 1476, 1477, 5, 280, 0, 0, 1477, 1479, 5, 376, 0, 0, 1478, 1480, 3, 236, 118, 0, 1479, 1478, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1482, 1, 0, 0, 0, 1481, 1483, 3, 230, 115, 0, 1482, 1481, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1485, 1, 0, 0, 0, 1484, 1486, 3, 240, 120, 0, 1485, 1484, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1488, 1, 0, 0, 0, 1487, 1489, 3, 246, 123, 0, 1488, 1487, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1491, 1, 0, 0, 0, 1490, 1492, 3, 248, 124, 0, 1491, 1490, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1494, 1, 0, 0, 0, 1493, 1495, 3, 242, 121, 0, 1494, 1493, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 3, 250, 125, 0, 1497, 1502, 5, 377, 0, 0, 1498, 1500, 5, 183, 0, 0, 1499, 1498, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1503, 3, 304, 152, 0, 1502, 1499, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 229, 1, 0, 0, 0, 1504, 1505, 5, 302, 0, 0, 1505, 1506, 5, 194, 0, 0, 1506, 1511, 3, 232, 116, 0, 1507, 1508, 5, 380, 0, 0, 1508, 1510, 3, 232, 116, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1513, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 231, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1514, 1516, 3, 258, 129, 0, 1515, 1517, 7, 26, 0, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1520, 1, 0, 0, 0, 1518, 1519, 5, 86, 0, 0, 1519, 1521, 7, 27, 0, 0, 1520, 1518, 1, 0, 0, 0, 1520, 1521, 1, 0, 0, 0, 1521, 233, 1, 0, 0, 0, 1522, 1525, 5, 277, 0, 0, 1523, 1526, 5, 176, 0, 0, 1524, 1526, 3, 258, 129, 0, 1525, 1523, 1, 0, 0, 0, 1525, 1524, 1, 0, 0, 0, 1526, 235, 1, 0, 0, 0, 1527, 1528, 5, 307, 0, 0, 1528, 1529, 5, 194, 0, 0, 1529, 1534, 3, 258, 129, 0, 1530, 1531, 5, 380, 0, 0, 1531, 1533, 3, 258, 129, 0, 1532, 1530, 1, 0, 0, 0, 1533, 1536, 1, 0, 0, 0, 1534, 1532, 1, 0, 0, 0, 1534, 1535, 1, 0, 0, 0, 1535, 237, 1, 0, 0, 0, 1536, 1534, 1, 0, 0, 0, 1537, 1554, 5, 387, 0, 0, 1538, 1554, 5, 390, 0, 0, 1539, 1554, 5, 395, 0, 0, 1540, 1541, 5, 378, 0, 0, 1541, 1542, 5, 398, 0, 0, 1542, 1543, 5, 380, 0, 0, 1543, 1544, 5, 398, 0, 0, 1544, 1554, 5, 379, 0, 0, 1545, 1546, 5, 378, 0, 0, 1546, 1547, 5, 398, 0, 0, 1547, 1548, 5, 380, 0, 0, 1548, 1554, 5, 379, 0, 0, 1549, 1550, 5, 378, 0, 0, 1550, 1551, 5, 380, 0, 0, 1551, 1552, 5, 398, 0, 0, 1552, 1554, 5, 379, 0, 0, 1553, 1537, 1, 0, 0, 0, 1553, 1538, 1, 0, 0, 0, 1553, 1539, 1, 0, 0, 0, 1553, 1540, 1, 0, 0, 0, 1553, 1545, 1, 0, 0, 0, 1553, 1549, 1, 0, 0, 0, 1554, 239, 1, 0, 0, 0, 1555, 1556, 5, 281, 0, 0, 1556, 1561, 3, 170, 85, 0, 1557, 1558, 5, 380, 0, 0, 1558, 1560, 3, 170, 85, 0, 1559, 1557, 1, 0, 0, 0, 1560, 1563, 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 241, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1564, 1565, 5, 308, 0, 0, 1565, 1567, 5, 376, 0, 0, 1566, 1568, 3, 244, 122, 0, 1567, 1566, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1567, 1, 0, 0, 0, 1569, 1570, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1573, 5, 377, 0, 0, 1572, 1574, 3, 256, 128, 0, 1573, 1572, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 243, 1, 0, 0, 0, 1575, 1577, 3, 306, 153, 0, 1576, 1578, 3, 238, 119, 0, 1577, 1576, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 245, 1, 0, 0, 0, 1579, 1580, 5, 176, 0, 0, 1580, 1581, 5, 323, 0, 0, 1581, 1582, 5, 309, 0, 0, 1582, 1588, 5, 279, 0, 0, 1583, 1584, 5, 300, 0, 0, 1584, 1585, 5, 322, 0, 0, 1585, 1586, 5, 309, 0, 0, 1586, 1588, 5, 279, 0, 0, 1587, 1579, 1, 0, 0, 0, 1587, 1583, 1, 0, 0, 0, 1588, 247, 1, 0, 0, 0, 1589, 1590, 5, 6, 0, 0, 1590, 1591, 5, 279, 0, 0, 1591, 1592, 5, 328, 0, 0, 1592, 1593, 5, 97, 0, 0, 1593, 1594, 5, 72, 0, 0, 1594, 1614, 5, 322, 0, 0, 1595, 1596, 5, 6, 0, 0, 1596, 1597, 5, 279, 0, 0, 1597, 1598, 5, 328, 0, 0, 1598, 1599, 5, 343, 0, 0, 1599, 1600, 5, 291, 0, 0, 1600, 1614, 5, 322, 0, 0, 1601, 1602, 5, 6, 0, 0, 1602, 1603, 5, 279, 0, 0, 1603, 1604, 5, 328, 0, 0, 1604, 1605, 5, 343, 0, 0, 1605, 1606, 5, 72, 0, 0, 1606, 1614, 3, 306, 153, 0, 1607, 1608, 5, 6, 0, 0, 1608, 1609, 5, 279, 0, 0, 1609, 1610, 5, 328, 0, 0, 1610, 1611, 5, 343, 0, 0, 1611, 1612, 5, 44, 0, 0, 1612, 1614, 3, 306, 153, 0, 1613, 1589, 1, 0, 0, 0, 1613, 1595, 1, 0, 0, 0, 1613, 1601, 1, 0, 0, 0, 1613, 1607, 1, 0, 0, 0, 1614, 249, 1, 0, 0, 0, 1615, 1616, 5, 229, 0, 0, 1616, 1621, 3, 170, 85, 0, 1617, 1618, 5, 380, 0, 0, 1618, 1620, 3, 170, 85, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 251, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1625, 5, 314, 0, 0, 1625, 1626, 5, 187, 0, 0, 1626, 1627, 3, 278, 139, 0, 1627, 1628, 3, 254, 127, 0, 1628, 1634, 1, 0, 0, 0, 1629, 1630, 5, 323, 0, 0, 1630, 1631, 5, 187, 0, 0, 1631, 1632, 5, 398, 0, 0, 1632, 1634, 3, 254, 127, 0, 1633, 1624, 1, 0, 0, 0, 1633, 1629, 1, 0, 0, 0, 1634, 253, 1, 0, 0, 0, 1635, 1636, 5, 101, 0, 0, 1636, 1637, 5, 179, 0, 0, 1637, 1638, 5, 219, 0, 0, 1638, 1639, 5, 322, 0, 0, 1639, 255, 1, 0, 0, 0, 1640, 1641, 5, 362, 0, 0, 1641, 1642, 3, 278, 139, 0, 1642, 257, 1, 0, 0, 0, 1643, 1644, 3, 260, 130, 0, 1644, 259, 1, 0, 0, 0, 1645, 1646, 6, 130, -1, 0, 1646, 1647, 5, 294, 0, 0, 1647, 1658, 3, 260, 130, 5, 1648, 1649, 5, 241, 0, 0, 1649, 1650, 5, 376, 0, 0, 1650, 1651, 3, 156, 78, 0, 1651, 1652, 5, 377, 0, 0, 1652, 1658, 1, 0, 0, 0, 1653, 1655, 3, 266, 133, 0, 1654, 1656, 3, 262, 131, 0, 1655, 1654, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1658, 1, 0, 0, 0, 1657, 1645, 1, 0, 0, 0, 1657, 1648, 1, 0, 0, 0, 1657, 1653, 1, 0, 0, 0, 1658, 1667, 1, 0, 0, 0, 1659, 1660, 10, 2, 0, 0, 1660, 1661, 5, 179, 0, 0, 1661, 1666, 3, 260, 130, 3, 1662, 1663, 10, 1, 0, 0, 1663, 1664, 5, 301, 0, 0, 1664, 1666, 3, 260, 130, 2, 1665, 1659, 1, 0, 0, 0, 1665, 1662, 1, 0, 0, 0, 1666, 1669, 1, 0, 0, 0, 1667, 1665, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 261, 1, 0, 0, 0, 1669, 1667, 1, 0, 0, 0, 1670, 1672, 5, 294, 0, 0, 1671, 1670, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 1674, 5, 187, 0, 0, 1674, 1675, 3, 266, 133, 0, 1675, 1676, 5, 179, 0, 0, 1676, 1677, 3, 266, 133, 0, 1677, 1754, 1, 0, 0, 0, 1678, 1680, 5, 294, 0, 0, 1679, 1678, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 1682, 5, 259, 0, 0, 1682, 1683, 5, 376, 0, 0, 1683, 1688, 3, 258, 129, 0, 1684, 1685, 5, 380, 0, 0, 1685, 1687, 3, 258, 129, 0, 1686, 1684, 1, 0, 0, 0, 1687, 1690, 1, 0, 0, 0, 1688, 1686, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1691, 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1691, 1692, 5, 377, 0, 0, 1692, 1754, 1, 0, 0, 0, 1693, 1695, 5, 294, 0, 0, 1694, 1693, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 5, 259, 0, 0, 1697, 1698, 5, 376, 0, 0, 1698, 1699, 3, 156, 78, 0, 1699, 1700, 5, 377, 0, 0, 1700, 1754, 1, 0, 0, 0, 1701, 1702, 5, 241, 0, 0, 1702, 1703, 5, 376, 0, 0, 1703, 1704, 3, 156, 78, 0, 1704, 1705, 5, 377, 0, 0, 1705, 1754, 1, 0, 0, 0, 1706, 1708, 5, 294, 0, 0, 1707, 1706, 1, 0, 0, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1710, 5, 319, 0, 0, 1710, 1754, 3, 266, 133, 0, 1711, 1713, 5, 294, 0, 0, 1712, 1711, 1, 0, 0, 0, 1712, 1713, 1, 0, 0, 0, 1713, 1714, 1, 0, 0, 0, 1714, 1715, 5, 276, 0, 0, 1715, 1729, 7, 28, 0, 0, 1716, 1717, 5, 376, 0, 0, 1717, 1730, 5, 377, 0, 0, 1718, 1719, 5, 376, 0, 0, 1719, 1724, 3, 258, 129, 0, 1720, 1721, 5, 380, 0, 0, 1721, 1723, 3, 258, 129, 0, 1722, 1720, 1, 0, 0, 0, 1723, 1726, 1, 0, 0, 0, 1724, 1722, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1727, 1, 0, 0, 0, 1726, 1724, 1, 0, 0, 0, 1727, 1728, 5, 377, 0, 0, 1728, 1730, 1, 0, 0, 0, 1729, 1716, 1, 0, 0, 0, 1729, 1718, 1, 0, 0, 0, 1730, 1754, 1, 0, 0, 0, 1731, 1733, 5, 294, 0, 0, 1732, 1731, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1735, 5, 276, 0, 0, 1735, 1754, 3, 266, 133, 0, 1736, 1738, 5, 269, 0, 0, 1737, 1739, 5, 294, 0, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1754, 5, 295, 0, 0, 1741, 1743, 5, 269, 0, 0, 1742, 1744, 5, 294, 0, 0, 1743, 1742, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1754, 7, 29, 0, 0, 1746, 1748, 5, 269, 0, 0, 1747, 1749, 5, 294, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1751, 5, 232, 0, 0, 1751, 1752, 5, 248, 0, 0, 1752, 1754, 3, 266, 133, 0, 1753, 1671, 1, 0, 0, 0, 1753, 1679, 1, 0, 0, 0, 1753, 1694, 1, 0, 0, 0, 1753, 1701, 1, 0, 0, 0, 1753, 1707, 1, 0, 0, 0, 1753, 1712, 1, 0, 0, 0, 1753, 1732, 1, 0, 0, 0, 1753, 1736, 1, 0, 0, 0, 1753, 1741, 1, 0, 0, 0, 1753, 1746, 1, 0, 0, 0, 1754, 263, 1, 0, 0, 0, 1755, 1757, 5, 294, 0, 0, 1756, 1755, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1759, 5, 276, 0, 0, 1759, 1773, 7, 28, 0, 0, 1760, 1761, 5, 376, 0, 0, 1761, 1774, 5, 377, 0, 0, 1762, 1763, 5, 376, 0, 0, 1763, 1768, 3, 258, 129, 0, 1764, 1765, 5, 380, 0, 0, 1765, 1767, 3, 258, 129, 0, 1766, 1764, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1771, 1, 0, 0, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1772, 5, 377, 0, 0, 1772, 1774, 1, 0, 0, 0, 1773, 1760, 1, 0, 0, 0, 1773, 1762, 1, 0, 0, 0, 1774, 1781, 1, 0, 0, 0, 1775, 1777, 5, 294, 0, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 5, 276, 0, 0, 1779, 1781, 3, 266, 133, 0, 1780, 1756, 1, 0, 0, 0, 1780, 1776, 1, 0, 0, 0, 1781, 265, 1, 0, 0, 0, 1782, 1783, 6, 133, -1, 0, 1783, 1787, 3, 268, 134, 0, 1784, 1785, 7, 30, 0, 0, 1785, 1787, 3, 266, 133, 7, 1786, 1782, 1, 0, 0, 0, 1786, 1784, 1, 0, 0, 0, 1787, 1809, 1, 0, 0, 0, 1788, 1789, 10, 6, 0, 0, 1789, 1790, 7, 31, 0, 0, 1790, 1808, 3, 266, 133, 7, 1791, 1792, 10, 5, 0, 0, 1792, 1793, 7, 32, 0, 0, 1793, 1808, 3, 266, 133, 6, 1794, 1795, 10, 4, 0, 0, 1795, 1796, 5, 371, 0, 0, 1796, 1808, 3, 266, 133, 5, 1797, 1798, 10, 3, 0, 0, 1798, 1799, 5, 372, 0, 0, 1799, 1808, 3, 266, 133, 4, 1800, 1801, 10, 2, 0, 0, 1801, 1802, 5, 370, 0, 0, 1802, 1808, 3, 266, 133, 3, 1803, 1804, 10, 1, 0, 0, 1804, 1805, 3, 330, 165, 0, 1805, 1806, 3, 266, 133, 2, 1806, 1808, 1, 0, 0, 0, 1807, 1788, 1, 0, 0, 0, 1807, 1791, 1, 0, 0, 0, 1807, 1794, 1, 0, 0, 0, 1807, 1797, 1, 0, 0, 0, 1807, 1800, 1, 0, 0, 0, 1807, 1803, 1, 0, 0, 0, 1808, 1811, 1, 0, 0, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 267, 1, 0, 0, 0, 1811, 1809, 1, 0, 0, 0, 1812, 1813, 6, 134, -1, 0, 1813, 1815, 5, 198, 0, 0, 1814, 1816, 3, 310, 155, 0, 1815, 1814, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1821, 1, 0, 0, 0, 1819, 1820, 5, 236, 0, 0, 1820, 1822, 3, 258, 129, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1823, 1, 0, 0, 0, 1823, 1824, 5, 237, 0, 0, 1824, 1904, 1, 0, 0, 0, 1825, 1826, 5, 198, 0, 0, 1826, 1828, 3, 258, 129, 0, 1827, 1829, 3, 310, 155, 0, 1828, 1827, 1, 0, 0, 0, 1829, 1830, 1, 0, 0, 0, 1830, 1828, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1834, 1, 0, 0, 0, 1832, 1833, 5, 236, 0, 0, 1833, 1835, 3, 258, 129, 0, 1834, 1832, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 1836, 1, 0, 0, 0, 1836, 1837, 5, 237, 0, 0, 1837, 1904, 1, 0, 0, 0, 1838, 1839, 5, 199, 0, 0, 1839, 1840, 5, 376, 0, 0, 1840, 1841, 3, 258, 129, 0, 1841, 1842, 5, 183, 0, 0, 1842, 1843, 3, 54, 27, 0, 1843, 1844, 5, 377, 0, 0, 1844, 1904, 1, 0, 0, 0, 1845, 1846, 5, 44, 0, 0, 1846, 1847, 5, 376, 0, 0, 1847, 1850, 3, 258, 129, 0, 1848, 1849, 5, 59, 0, 0, 1849, 1851, 5, 86, 0, 0, 1850, 1848, 1, 0, 0, 0, 1850, 1851, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1853, 5, 377, 0, 0, 1853, 1904, 1, 0, 0, 0, 1854, 1855, 5, 72, 0, 0, 1855, 1856, 5, 376, 0, 0, 1856, 1859, 3, 258, 129, 0, 1857, 1858, 5, 59, 0, 0, 1858, 1860, 5, 86, 0, 0, 1859, 1857, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 1861, 1, 0, 0, 0, 1861, 1862, 5, 377, 0, 0, 1862, 1904, 1, 0, 0, 0, 1863, 1864, 5, 312, 0, 0, 1864, 1865, 5, 376, 0, 0, 1865, 1866, 3, 266, 133, 0, 1866, 1867, 5, 259, 0, 0, 1867, 1868, 3, 266, 133, 0, 1868, 1869, 5, 377, 0, 0, 1869, 1904, 1, 0, 0, 0, 1870, 1904, 3, 338, 169, 0, 1871, 1904, 5, 387, 0, 0, 1872, 1873, 3, 312, 156, 0, 1873, 1874, 5, 373, 0, 0, 1874, 1875, 5, 387, 0, 0, 1875, 1904, 1, 0, 0, 0, 1876, 1877, 5, 376, 0, 0, 1877, 1878, 3, 156, 78, 0, 1878, 1879, 5, 377, 0, 0, 1879, 1904, 1, 0, 0, 0, 1880, 1881, 3, 270, 135, 0, 1881, 1893, 5, 376, 0, 0, 1882, 1884, 3, 346, 173, 0, 1883, 1882, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1890, 3, 258, 129, 0, 1886, 1887, 5, 380, 0, 0, 1887, 1889, 3, 258, 129, 0, 1888, 1886, 1, 0, 0, 0, 1889, 1892, 1, 0, 0, 0, 1890, 1888, 1, 0, 0, 0, 1890, 1891, 1, 0, 0, 0, 1891, 1894, 1, 0, 0, 0, 1892, 1890, 1, 0, 0, 0, 1893, 1883, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1896, 5, 377, 0, 0, 1896, 1904, 1, 0, 0, 0, 1897, 1904, 3, 304, 152, 0, 1898, 1904, 3, 272, 136, 0, 1899, 1900, 5, 376, 0, 0, 1900, 1901, 3, 258, 129, 0, 1901, 1902, 5, 377, 0, 0, 1902, 1904, 1, 0, 0, 0, 1903, 1812, 1, 0, 0, 0, 1903, 1825, 1, 0, 0, 0, 1903, 1838, 1, 0, 0, 0, 1903, 1845, 1, 0, 0, 0, 1903, 1854, 1, 0, 0, 0, 1903, 1863, 1, 0, 0, 0, 1903, 1870, 1, 0, 0, 0, 1903, 1871, 1, 0, 0, 0, 1903, 1872, 1, 0, 0, 0, 1903, 1876, 1, 0, 0, 0, 1903, 1880, 1, 0, 0, 0, 1903, 1897, 1, 0, 0, 0, 1903, 1898, 1, 0, 0, 0, 1903, 1899, 1, 0, 0, 0, 1904, 1912, 1, 0, 0, 0, 1905, 1906, 10, 4, 0, 0, 1906, 1907, 5, 374, 0, 0, 1907, 1908, 3, 266, 133, 0, 1908, 1909, 5, 375, 0, 0, 1909, 1911, 1, 0, 0, 0, 1910, 1905, 1, 0, 0, 0, 1911, 1914, 1, 0, 0, 0, 1912, 1910, 1, 0, 0, 0, 1912, 1913, 1, 0, 0, 0, 1913, 269, 1, 0, 0, 0, 1914, 1912, 1, 0, 0, 0, 1915, 1919, 3, 348, 174, 0, 1916, 1919, 3, 350, 175, 0, 1917, 1919, 3, 312, 156, 0, 1918, 1915, 1, 0, 0, 0, 1918, 1916, 1, 0, 0, 0, 1918, 1917, 1, 0, 0, 0, 1919, 271, 1, 0, 0, 0, 1920, 1921, 3, 312, 156, 0, 1921, 273, 1, 0, 0, 0, 1922, 1923, 3, 304, 152, 0, 1923, 275, 1, 0, 0, 0, 1924, 1927, 3, 304, 152, 0, 1925, 1927, 3, 272, 136, 0, 1926, 1924, 1, 0, 0, 0, 1926, 1925, 1, 0, 0, 0, 1927, 277, 1, 0, 0, 0, 1928, 1931, 5, 267, 0, 0, 1929, 1932, 3, 280, 140, 0, 1930, 1932, 3, 284, 142, 0, 1931, 1929, 1, 0, 0, 0, 1931, 1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 279, 1, 0, 0, 0, 1933, 1935, 3, 282, 141, 0, 1934, 1936, 3, 286, 143, 0, 1935, 1934, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 281, 1, 0, 0, 0, 1937, 1938, 3, 288, 144, 0, 1938, 1939, 3, 290, 145, 0, 1939, 1941, 1, 0, 0, 0, 1940, 1937, 1, 0, 0, 0, 1941, 1942, 1, 0, 0, 0, 1942, 1940, 1, 0, 0, 0, 1942, 1943, 1, 0, 0, 0, 1943, 283, 1, 0, 0, 0, 1944, 1947, 3, 286, 143, 0, 1945, 1948, 3, 282, 141, 0, 1946, 1948, 3, 286, 143, 0, 1947, 1945, 1, 0, 0, 0, 1947, 1946, 1, 0, 0, 0, 1947, 1948, 1, 0, 0, 0, 1948, 285, 1, 0, 0, 0, 1949, 1950, 3, 288, 144, 0, 1950, 1951, 3, 290, 145, 0, 1951, 1952, 5, 343, 0, 0, 1952, 1953, 3, 290, 145, 0, 1953, 287, 1, 0, 0, 0, 1954, 1956, 7, 33, 0, 0, 1955, 1954, 1, 0, 0, 0, 1955, 1956, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1960, 7, 34, 0, 0, 1958, 1960, 5, 397, 0, 0, 1959, 1955, 1, 0, 0, 0, 1959, 1958, 1, 0, 0, 0, 1960, 289, 1, 0, 0, 0, 1961, 1964, 3, 304, 152, 0, 1962, 1964, 3, 348, 174, 0, 1963, 1961, 1, 0, 0, 0, 1963, 1962, 1, 0, 0, 0, 1964, 291, 1, 0, 0, 0, 1965, 1967, 5, 183, 0, 0, 1966, 1965, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 1970, 3, 304, 152, 0, 1969, 1971, 3, 300, 150, 0, 1970, 1969, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 293, 1, 0, 0, 0, 1972, 1974, 5, 183, 0, 0, 1973, 1972, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1977, 3, 304, 152, 0, 1976, 1978, 3, 300, 150, 0, 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 295, 1, 0, 0, 0, 1979, 1980, 3, 304, 152, 0, 1980, 1981, 3, 298, 149, 0, 1981, 297, 1, 0, 0, 0, 1982, 1983, 5, 284, 0, 0, 1983, 1985, 3, 304, 152, 0, 1984, 1982, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 1990, 1, 0, 0, 0, 1988, 1990, 1, 0, 0, 0, 1989, 1984, 1, 0, 0, 0, 1989, 1988, 1, 0, 0, 0, 1990, 299, 1, 0, 0, 0, 1991, 1992, 5, 376, 0, 0, 1992, 1993, 3, 302, 151, 0, 1993, 1994, 5, 377, 0, 0, 1994, 301, 1, 0, 0, 0, 1995, 2000, 3, 304, 152, 0, 1996, 1997, 5, 380, 0, 0, 1997, 1999, 3, 304, 152, 0, 1998, 1996, 1, 0, 0, 0, 1999, 2002, 1, 0, 0, 0, 2000, 1998, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 303, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2003, 2007, 3, 306, 153, 0, 2004, 2007, 3, 308, 154, 0, 2005, 2007, 3, 350, 175, 0, 2006, 2003, 1, 0, 0, 0, 2006, 2004, 1, 0, 0, 0, 2006, 2005, 1, 0, 0, 0, 2007, 305, 1, 0, 0, 0, 2008, 2009, 7, 35, 0, 0, 2009, 307, 1, 0, 0, 0, 2010, 2011, 5, 397, 0, 0, 2011, 309, 1, 0, 0, 0, 2012, 2013, 5, 358, 0, 0, 2013, 2014, 3, 258, 129, 0, 2014, 2015, 5, 339, 0, 0, 2015, 2016, 3, 258, 129, 0, 2016, 311, 1, 0, 0, 0, 2017, 2022, 3, 304, 152, 0, 2018, 2019, 5, 373, 0, 0, 2019, 2021, 3, 304, 152, 0, 2020, 2018, 1, 0, 0, 0, 2021, 2024, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2022, 2020, 1, 0, 0, 0, 2023, 313, 1, 0, 0, 0, 2024, 2022, 1, 0, 0, 0, 2025, 2026, 5, 361, 0, 0, 2026, 2027, 3, 320, 160, 0, 2027, 315, 1, 0, 0, 0, 2028, 2029, 5, 58, 0, 0, 2029, 2030, 5, 294, 0, 0, 2030, 2031, 5, 241, 0, 0, 2031, 317, 1, 0, 0, 0, 2032, 2033, 5, 58, 0, 0, 2033, 2034, 5, 241, 0, 0, 2034, 319, 1, 0, 0, 0, 2035, 2036, 5, 376, 0, 0, 2036, 2041, 3, 322, 161, 0, 2037, 2038, 5, 380, 0, 0, 2038, 2040, 3, 322, 161, 0, 2039, 2037, 1, 0, 0, 0, 2040, 2043, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2044, 1, 0, 0, 0, 2043, 2041, 1, 0, 0, 0, 2044, 2045, 5, 377, 0, 0, 2045, 321, 1, 0, 0, 0, 2046, 2051, 3, 324, 162, 0, 2047, 2049, 5, 365, 0, 0, 2048, 2047, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2052, 3, 326, 163, 0, 2051, 2048, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 323, 1, 0, 0, 0, 2053, 2057, 3, 304, 152, 0, 2054, 2057, 3, 272, 136, 0, 2055, 2057, 5, 397, 0, 0, 2056, 2053, 1, 0, 0, 0, 2056, 2054, 1, 0, 0, 0, 2056, 2055, 1, 0, 0, 0, 2057, 325, 1, 0, 0, 0, 2058, 2063, 5, 398, 0, 0, 2059, 2063, 5, 399, 0, 0, 2060, 2063, 3, 344, 172, 0, 2061, 2063, 5, 397, 0, 0, 2062, 2058, 1, 0, 0, 0, 2062, 2059, 1, 0, 0, 0, 2062, 2060, 1, 0, 0, 0, 2062, 2061, 1, 0, 0, 0, 2063, 327, 1, 0, 0, 0, 2064, 2071, 5, 179, 0, 0, 2065, 2066, 5, 371, 0, 0, 2066, 2071, 5, 371, 0, 0, 2067, 2071, 5, 301, 0, 0, 2068, 2069, 5, 370, 0, 0, 2069, 2071, 5, 370, 0, 0, 2070, 2064, 1, 0, 0, 0, 2070, 2065, 1, 0, 0, 0, 2070, 2067, 1, 0, 0, 0, 2070, 2068, 1, 0, 0, 0, 2071, 329, 1, 0, 0, 0, 2072, 2087, 5, 365, 0, 0, 2073, 2087, 5, 366, 0, 0, 2074, 2087, 5, 367, 0, 0, 2075, 2076, 5, 367, 0, 0, 2076, 2087, 5, 365, 0, 0, 2077, 2078, 5, 366, 0, 0, 2078, 2087, 5, 365, 0, 0, 2079, 2080, 5, 367, 0, 0, 2080, 2087, 5, 366, 0, 0, 2081, 2082, 5, 368, 0, 0, 2082, 2087, 5, 365, 0, 0, 2083, 2084, 5, 367, 0, 0, 2084, 2085, 5, 365, 0, 0, 2085, 2087, 5, 366, 0, 0, 2086, 2072, 1, 0, 0, 0, 2086, 2073, 1, 0, 0, 0, 2086, 2074, 1, 0, 0, 0, 2086, 2075, 1, 0, 0, 0, 2086, 2077, 1, 0, 0, 0, 2086, 2079, 1, 0, 0, 0, 2086, 2081, 1, 0, 0, 0, 2086, 2083, 1, 0, 0, 0, 2087, 331, 1, 0, 0, 0, 2088, 2089, 5, 367, 0, 0, 2089, 2096, 5, 367, 0, 0, 2090, 2091, 5, 366, 0, 0, 2091, 2096, 5, 366, 0, 0, 2092, 2096, 5, 371, 0, 0, 2093, 2096, 5, 372, 0, 0, 2094, 2096, 5, 370, 0, 0, 2095, 2088, 1, 0, 0, 0, 2095, 2090, 1, 0, 0, 0, 2095, 2092, 1, 0, 0, 0, 2095, 2093, 1, 0, 0, 0, 2095, 2094, 1, 0, 0, 0, 2096, 333, 1, 0, 0, 0, 2097, 2098, 7, 36, 0, 0, 2098, 335, 1, 0, 0, 0, 2099, 2100, 7, 37, 0, 0, 2100, 337, 1, 0, 0, 0, 2101, 2114, 3, 340, 170, 0, 2102, 2114, 3, 342, 171, 0, 2103, 2114, 3, 278, 139, 0, 2104, 2105, 5, 389, 0, 0, 2105, 2114, 3, 342, 171, 0, 2106, 2114, 3, 344, 172, 0, 2107, 2114, 5, 399, 0, 0, 2108, 2114, 5, 400, 0, 0, 2109, 2111, 5, 294, 0, 0, 2110, 2109, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2114, 5, 295, 0, 0, 2113, 2101, 1, 0, 0, 0, 2113, 2102, 1, 0, 0, 0, 2113, 2103, 1, 0, 0, 0, 2113, 2104, 1, 0, 0, 0, 2113, 2106, 1, 0, 0, 0, 2113, 2107, 1, 0, 0, 0, 2113, 2108, 1, 0, 0, 0, 2113, 2110, 1, 0, 0, 0, 2114, 339, 1, 0, 0, 0, 2115, 2116, 5, 397, 0, 0, 2116, 341, 1, 0, 0, 0, 2117, 2118, 5, 398, 0, 0, 2118, 343, 1, 0, 0, 0, 2119, 2120, 7, 29, 0, 0, 2120, 345, 1, 0, 0, 0, 2121, 2122, 7, 38, 0, 0, 2122, 347, 1, 0, 0, 0, 2123, 2124, 7, 39, 0, 0, 2124, 349, 1, 0, 0, 0, 2125, 2126, 7, 40, 0, 0, 2126, 351, 1, 0, 0, 0, 247, 360, 363, 365, 380, 398, 402, 411, 416, 423, 430, 434, 443, 455, 458, 465, 473, 478, 481, 488, 496, 500, 512, 520, 524, 545, 549, 553, 557, 566, 571, 575, 579, 583, 586, 590, 595, 601, 606, 611, 614, 618, 626, 634, 638, 642, 646, 650, 654, 658, 662, 666, 668, 678, 686, 710, 717, 723, 726, 729, 739, 742, 750, 762, 786, 799, 804, 808, 816, 820, 828, 838, 842, 848, 852, 856, 859, 868, 872, 879, 882, 892, 900, 908, 912, 927, 946, 957, 961, 968, 973, 979, 983, 990, 994, 998, 1002, 1010, 1014, 1019, 1024, 1030, 1033, 1037, 1048, 1057, 1070, 1085, 1088, 1092, 1095, 1097, 1102, 1106, 1109, 1113, 1122, 1131, 1141, 1146, 1158, 1161, 1164, 1167, 1173, 1177, 1185, 1188, 1193, 1196, 1198, 1212, 1223, 1228, 1236, 1239, 1242, 1247, 1249, 1251, 1256, 1259, 1263, 1266, 1269, 1281, 1288, 1299, 1328, 1350, 1368, 1373, 1385, 1398, 1410, 1422, 1427, 1454, 1462, 1466, 1469, 1472, 1479, 1482, 1485, 1488, 1491, 1494, 1499, 1502, 1511, 1516, 1520, 1525, 1534, 1553, 1561, 1569, 1573, 1577, 1587, 1613, 1621, 1633, 1655, 1657, 1665, 1667, 1671, 1679, 1688, 1694, 1707, 1712, 1724, 1729, 1732, 1738, 1743, 1748, 1753, 1756, 1768, 1773, 1776, 1780, 1786, 1807, 1809, 1817, 1821, 1830, 1834, 1850, 1859, 1883, 1890, 1893, 1903, 1912, 1918, 1926, 1931, 1935, 1942, 1947, 1955, 1959, 1963, 1966, 1970, 1973, 1977, 1986, 1989, 2000, 2006, 2022, 2041, 2048, 2051, 2056, 2062, 2070, 2086, 2095, 2110, 2113] \ No newline at end of file +[4, 1, 402, 2144, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 363, 8, 2, 1, 2, 5, 2, 366, 8, 2, 10, 2, 12, 2, 369, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 383, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 401, 8, 5, 1, 6, 1, 6, 3, 6, 405, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 414, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 419, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 424, 8, 9, 10, 9, 12, 9, 427, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 433, 8, 11, 1, 11, 1, 11, 3, 11, 437, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 444, 8, 12, 10, 12, 12, 12, 447, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 458, 8, 13, 1, 13, 3, 13, 461, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 468, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 476, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 481, 8, 13, 1, 13, 3, 13, 484, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 491, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 499, 8, 16, 1, 17, 1, 17, 3, 17, 503, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 515, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 523, 8, 19, 1, 19, 1, 19, 3, 19, 527, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 548, 8, 19, 1, 20, 1, 20, 3, 20, 552, 8, 20, 1, 21, 1, 21, 3, 21, 556, 8, 21, 1, 21, 1, 21, 3, 21, 560, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 567, 8, 21, 10, 21, 12, 21, 570, 9, 21, 1, 21, 1, 21, 3, 21, 574, 8, 21, 1, 21, 1, 21, 3, 21, 578, 8, 21, 1, 21, 1, 21, 3, 21, 582, 8, 21, 1, 21, 1, 21, 3, 21, 586, 8, 21, 1, 21, 3, 21, 589, 8, 21, 1, 21, 1, 21, 3, 21, 593, 8, 21, 1, 22, 1, 22, 1, 22, 3, 22, 598, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 604, 8, 22, 1, 23, 1, 23, 1, 23, 3, 23, 609, 8, 23, 1, 24, 1, 24, 1, 24, 3, 24, 614, 8, 24, 1, 24, 3, 24, 617, 8, 24, 1, 25, 1, 25, 3, 25, 621, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 627, 8, 26, 10, 26, 12, 26, 630, 9, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 3, 27, 637, 8, 27, 1, 27, 1, 27, 3, 27, 641, 8, 27, 1, 27, 1, 27, 3, 27, 645, 8, 27, 1, 27, 1, 27, 3, 27, 649, 8, 27, 1, 27, 1, 27, 3, 27, 653, 8, 27, 1, 27, 1, 27, 3, 27, 657, 8, 27, 1, 27, 1, 27, 3, 27, 661, 8, 27, 1, 27, 1, 27, 3, 27, 665, 8, 27, 1, 27, 1, 27, 3, 27, 669, 8, 27, 3, 27, 671, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 681, 8, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 689, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 711, 8, 33, 10, 33, 12, 33, 714, 9, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 720, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 726, 8, 34, 1, 34, 3, 34, 729, 8, 34, 1, 34, 3, 34, 732, 8, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 742, 8, 36, 1, 36, 3, 36, 745, 8, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 753, 8, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 765, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 787, 8, 45, 10, 45, 12, 45, 790, 9, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 800, 8, 46, 10, 46, 12, 46, 803, 9, 46, 1, 46, 1, 46, 3, 46, 807, 8, 46, 1, 47, 1, 47, 3, 47, 811, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 817, 8, 48, 10, 48, 12, 48, 820, 9, 48, 1, 48, 3, 48, 823, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 831, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 841, 8, 52, 1, 52, 1, 52, 3, 52, 845, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 3, 53, 851, 8, 53, 1, 53, 1, 53, 3, 53, 855, 8, 53, 1, 53, 1, 53, 3, 53, 859, 8, 53, 1, 53, 3, 53, 862, 8, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 871, 8, 54, 1, 54, 1, 54, 3, 54, 875, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 882, 8, 54, 1, 54, 3, 54, 885, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 893, 8, 55, 10, 55, 12, 55, 896, 9, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 3, 57, 903, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 911, 8, 57, 1, 58, 1, 58, 3, 58, 915, 8, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 930, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 949, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 960, 8, 66, 1, 66, 1, 66, 3, 66, 964, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 971, 8, 66, 1, 67, 1, 67, 1, 67, 3, 67, 976, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 3, 68, 982, 8, 68, 1, 68, 1, 68, 3, 68, 986, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 3, 69, 993, 8, 69, 1, 69, 1, 69, 3, 69, 997, 8, 69, 1, 70, 1, 70, 3, 70, 1001, 8, 70, 1, 70, 1, 70, 3, 70, 1005, 8, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1013, 8, 71, 1, 71, 1, 71, 3, 71, 1017, 8, 71, 1, 71, 1, 71, 1, 72, 3, 72, 1022, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1028, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1034, 8, 73, 1, 73, 3, 73, 1037, 8, 73, 1, 73, 1, 73, 3, 73, 1041, 8, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 5, 75, 1050, 8, 75, 10, 75, 12, 75, 1053, 9, 75, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 1059, 8, 76, 10, 76, 12, 76, 1062, 9, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 4, 77, 1073, 8, 77, 11, 77, 12, 77, 1074, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 4, 78, 1085, 8, 78, 11, 78, 12, 78, 1086, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1102, 8, 79, 1, 79, 3, 79, 1105, 8, 79, 1, 79, 1, 79, 3, 79, 1109, 8, 79, 1, 79, 3, 79, 1112, 8, 79, 3, 79, 1114, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1119, 8, 79, 1, 79, 1, 79, 3, 79, 1123, 8, 79, 1, 79, 3, 79, 1126, 8, 79, 5, 79, 1128, 8, 79, 10, 79, 12, 79, 1131, 9, 79, 1, 80, 1, 80, 1, 80, 1, 80, 5, 80, 1137, 8, 80, 10, 80, 12, 80, 1140, 9, 80, 1, 81, 1, 81, 1, 81, 1, 81, 5, 81, 1146, 8, 81, 10, 81, 12, 81, 1149, 9, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 1156, 8, 82, 10, 82, 12, 82, 1159, 9, 82, 1, 82, 1, 82, 3, 82, 1163, 8, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 3, 84, 1175, 8, 84, 1, 84, 3, 84, 1178, 8, 84, 1, 84, 3, 84, 1181, 8, 84, 1, 84, 3, 84, 1184, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1190, 8, 84, 1, 85, 1, 85, 3, 85, 1194, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 5, 85, 1200, 8, 85, 10, 85, 12, 85, 1203, 9, 85, 3, 85, 1205, 8, 85, 1, 86, 1, 86, 1, 86, 3, 86, 1210, 8, 86, 1, 86, 3, 86, 1213, 8, 86, 3, 86, 1215, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1229, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 5, 89, 1238, 8, 89, 10, 89, 12, 89, 1241, 9, 89, 1, 89, 1, 89, 3, 89, 1245, 8, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1253, 8, 89, 1, 89, 3, 89, 1256, 8, 89, 1, 89, 3, 89, 1259, 8, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1264, 8, 89, 5, 89, 1266, 8, 89, 10, 89, 12, 89, 1269, 9, 89, 1, 90, 1, 90, 3, 90, 1273, 8, 90, 1, 91, 3, 91, 1276, 8, 91, 1, 91, 1, 91, 3, 91, 1280, 8, 91, 1, 91, 3, 91, 1283, 8, 91, 1, 91, 3, 91, 1286, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 5, 91, 1296, 8, 91, 10, 91, 12, 91, 1299, 9, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1305, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1316, 8, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 1343, 8, 97, 10, 97, 12, 97, 1346, 9, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1367, 8, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 1383, 8, 102, 10, 102, 12, 102, 1386, 9, 102, 1, 102, 1, 102, 3, 102, 1390, 8, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 1400, 8, 104, 10, 104, 12, 104, 1403, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 1413, 8, 105, 10, 105, 12, 105, 1416, 9, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 1425, 8, 105, 10, 105, 12, 105, 1428, 9, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 1437, 8, 105, 10, 105, 12, 105, 1440, 9, 105, 1, 105, 1, 105, 3, 105, 1444, 8, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 5, 112, 1469, 8, 112, 10, 112, 12, 112, 1472, 9, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 3, 114, 1479, 8, 114, 1, 114, 1, 114, 3, 114, 1483, 8, 114, 1, 114, 3, 114, 1486, 8, 114, 1, 114, 3, 114, 1489, 8, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 3, 115, 1496, 8, 115, 1, 115, 3, 115, 1499, 8, 115, 1, 115, 3, 115, 1502, 8, 115, 1, 115, 3, 115, 1505, 8, 115, 1, 115, 3, 115, 1508, 8, 115, 1, 115, 3, 115, 1511, 8, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1516, 8, 115, 1, 115, 3, 115, 1519, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 1526, 8, 116, 10, 116, 12, 116, 1529, 9, 116, 1, 117, 1, 117, 3, 117, 1533, 8, 117, 1, 117, 1, 117, 3, 117, 1537, 8, 117, 1, 118, 1, 118, 1, 118, 3, 118, 1542, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 1549, 8, 119, 10, 119, 12, 119, 1552, 9, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1570, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 1576, 8, 121, 10, 121, 12, 121, 1579, 9, 121, 1, 122, 1, 122, 1, 122, 4, 122, 1584, 8, 122, 11, 122, 12, 122, 1585, 1, 122, 1, 122, 3, 122, 1590, 8, 122, 1, 123, 1, 123, 3, 123, 1594, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1604, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 1630, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 1636, 8, 126, 10, 126, 12, 126, 1639, 9, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1650, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1672, 8, 131, 3, 131, 1674, 8, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1682, 8, 131, 10, 131, 12, 131, 1685, 9, 131, 1, 132, 3, 132, 1688, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1696, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 5, 132, 1703, 8, 132, 10, 132, 12, 132, 1706, 9, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1711, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1724, 8, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1729, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 5, 132, 1739, 8, 132, 10, 132, 12, 132, 1742, 9, 132, 1, 132, 1, 132, 3, 132, 1746, 8, 132, 1, 132, 3, 132, 1749, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1755, 8, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1760, 8, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1765, 8, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1770, 8, 132, 1, 133, 3, 133, 1773, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1783, 8, 133, 10, 133, 12, 133, 1786, 9, 133, 1, 133, 1, 133, 3, 133, 1790, 8, 133, 1, 133, 3, 133, 1793, 8, 133, 1, 133, 1, 133, 3, 133, 1797, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 3, 134, 1803, 8, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1824, 8, 134, 10, 134, 12, 134, 1827, 9, 134, 1, 135, 1, 135, 1, 135, 4, 135, 1832, 8, 135, 11, 135, 12, 135, 1833, 1, 135, 1, 135, 3, 135, 1838, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 4, 135, 1845, 8, 135, 11, 135, 12, 135, 1846, 1, 135, 1, 135, 3, 135, 1851, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 1867, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 1876, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 1900, 8, 135, 1, 135, 1, 135, 1, 135, 5, 135, 1905, 8, 135, 10, 135, 12, 135, 1908, 9, 135, 3, 135, 1910, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 1920, 8, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 5, 135, 1927, 8, 135, 10, 135, 12, 135, 1930, 9, 135, 1, 136, 1, 136, 1, 136, 3, 136, 1935, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 1943, 8, 139, 1, 140, 1, 140, 1, 140, 3, 140, 1948, 8, 140, 1, 141, 1, 141, 3, 141, 1952, 8, 141, 1, 142, 1, 142, 1, 142, 4, 142, 1957, 8, 142, 11, 142, 12, 142, 1958, 1, 143, 1, 143, 1, 143, 3, 143, 1964, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 3, 145, 1972, 8, 145, 1, 145, 1, 145, 3, 145, 1976, 8, 145, 1, 146, 1, 146, 3, 146, 1980, 8, 146, 1, 147, 3, 147, 1983, 8, 147, 1, 147, 1, 147, 3, 147, 1987, 8, 147, 1, 148, 3, 148, 1990, 8, 148, 1, 148, 1, 148, 3, 148, 1994, 8, 148, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 4, 150, 2001, 8, 150, 11, 150, 12, 150, 2002, 1, 150, 3, 150, 2006, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 5, 152, 2015, 8, 152, 10, 152, 12, 152, 2018, 9, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2023, 8, 153, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 5, 157, 2037, 8, 157, 10, 157, 12, 157, 2040, 9, 157, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 2056, 8, 161, 10, 161, 12, 161, 2059, 9, 161, 1, 161, 1, 161, 1, 162, 1, 162, 3, 162, 2065, 8, 162, 1, 162, 3, 162, 2068, 8, 162, 1, 163, 1, 163, 1, 163, 3, 163, 2073, 8, 163, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 2079, 8, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 2087, 8, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 2103, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 2112, 8, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2127, 8, 170, 1, 170, 3, 170, 2130, 8, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 2038, 5, 158, 178, 262, 268, 270, 177, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 0, 41, 2, 0, 30, 30, 231, 231, 3, 0, 16, 16, 37, 37, 67, 67, 4, 0, 13, 13, 26, 26, 64, 64, 166, 166, 2, 0, 12, 12, 25, 25, 2, 0, 248, 248, 259, 259, 2, 0, 165, 165, 337, 337, 2, 0, 4, 4, 117, 117, 1, 0, 107, 111, 3, 0, 192, 192, 222, 222, 295, 295, 11, 0, 10, 10, 145, 145, 151, 151, 188, 189, 201, 201, 223, 223, 264, 265, 329, 329, 340, 340, 342, 342, 356, 357, 2, 0, 361, 361, 363, 363, 4, 0, 225, 226, 233, 233, 246, 246, 296, 296, 2, 0, 182, 182, 289, 289, 2, 0, 40, 40, 260, 260, 3, 0, 21, 21, 95, 95, 176, 176, 3, 0, 40, 40, 93, 93, 260, 260, 3, 0, 52, 52, 89, 89, 169, 169, 3, 0, 65, 65, 106, 106, 125, 125, 2, 0, 11, 11, 122, 122, 2, 0, 92, 92, 268, 268, 3, 0, 239, 239, 266, 266, 346, 346, 4, 0, 249, 249, 261, 261, 275, 275, 318, 318, 3, 0, 23, 23, 56, 56, 155, 155, 5, 0, 24, 24, 138, 139, 144, 144, 150, 150, 298, 298, 2, 0, 218, 218, 321, 321, 3, 0, 56, 56, 135, 135, 155, 155, 2, 0, 8, 8, 30, 30, 2, 0, 44, 44, 72, 72, 2, 0, 176, 176, 180, 180, 2, 0, 245, 245, 344, 344, 2, 0, 369, 369, 389, 390, 4, 0, 32, 32, 387, 387, 391, 391, 394, 394, 2, 0, 389, 390, 392, 392, 1, 0, 389, 390, 1, 0, 398, 399, 2, 0, 398, 398, 401, 401, 4, 0, 32, 32, 387, 387, 389, 391, 393, 394, 3, 0, 294, 294, 368, 369, 389, 390, 2, 0, 176, 176, 232, 232, 1, 0, 175, 364, 1, 0, 4, 174, 2329, 0, 354, 1, 0, 0, 0, 2, 357, 1, 0, 0, 0, 4, 367, 1, 0, 0, 0, 6, 382, 1, 0, 0, 0, 8, 384, 1, 0, 0, 0, 10, 400, 1, 0, 0, 0, 12, 404, 1, 0, 0, 0, 14, 406, 1, 0, 0, 0, 16, 409, 1, 0, 0, 0, 18, 420, 1, 0, 0, 0, 20, 428, 1, 0, 0, 0, 22, 436, 1, 0, 0, 0, 24, 438, 1, 0, 0, 0, 26, 483, 1, 0, 0, 0, 28, 485, 1, 0, 0, 0, 30, 492, 1, 0, 0, 0, 32, 496, 1, 0, 0, 0, 34, 500, 1, 0, 0, 0, 36, 504, 1, 0, 0, 0, 38, 547, 1, 0, 0, 0, 40, 551, 1, 0, 0, 0, 42, 553, 1, 0, 0, 0, 44, 594, 1, 0, 0, 0, 46, 608, 1, 0, 0, 0, 48, 610, 1, 0, 0, 0, 50, 620, 1, 0, 0, 0, 52, 622, 1, 0, 0, 0, 54, 670, 1, 0, 0, 0, 56, 672, 1, 0, 0, 0, 58, 676, 1, 0, 0, 0, 60, 684, 1, 0, 0, 0, 62, 692, 1, 0, 0, 0, 64, 696, 1, 0, 0, 0, 66, 703, 1, 0, 0, 0, 68, 731, 1, 0, 0, 0, 70, 733, 1, 0, 0, 0, 72, 736, 1, 0, 0, 0, 74, 746, 1, 0, 0, 0, 76, 748, 1, 0, 0, 0, 78, 754, 1, 0, 0, 0, 80, 756, 1, 0, 0, 0, 82, 764, 1, 0, 0, 0, 84, 772, 1, 0, 0, 0, 86, 774, 1, 0, 0, 0, 88, 778, 1, 0, 0, 0, 90, 782, 1, 0, 0, 0, 92, 806, 1, 0, 0, 0, 94, 810, 1, 0, 0, 0, 96, 812, 1, 0, 0, 0, 98, 824, 1, 0, 0, 0, 100, 830, 1, 0, 0, 0, 102, 832, 1, 0, 0, 0, 104, 837, 1, 0, 0, 0, 106, 848, 1, 0, 0, 0, 108, 866, 1, 0, 0, 0, 110, 886, 1, 0, 0, 0, 112, 897, 1, 0, 0, 0, 114, 899, 1, 0, 0, 0, 116, 912, 1, 0, 0, 0, 118, 919, 1, 0, 0, 0, 120, 922, 1, 0, 0, 0, 122, 931, 1, 0, 0, 0, 124, 935, 1, 0, 0, 0, 126, 939, 1, 0, 0, 0, 128, 942, 1, 0, 0, 0, 130, 950, 1, 0, 0, 0, 132, 955, 1, 0, 0, 0, 134, 972, 1, 0, 0, 0, 136, 979, 1, 0, 0, 0, 138, 989, 1, 0, 0, 0, 140, 998, 1, 0, 0, 0, 142, 1008, 1, 0, 0, 0, 144, 1027, 1, 0, 0, 0, 146, 1029, 1, 0, 0, 0, 148, 1042, 1, 0, 0, 0, 150, 1045, 1, 0, 0, 0, 152, 1054, 1, 0, 0, 0, 154, 1065, 1, 0, 0, 0, 156, 1078, 1, 0, 0, 0, 158, 1113, 1, 0, 0, 0, 160, 1132, 1, 0, 0, 0, 162, 1141, 1, 0, 0, 0, 164, 1150, 1, 0, 0, 0, 166, 1169, 1, 0, 0, 0, 168, 1189, 1, 0, 0, 0, 170, 1191, 1, 0, 0, 0, 172, 1214, 1, 0, 0, 0, 174, 1228, 1, 0, 0, 0, 176, 1230, 1, 0, 0, 0, 178, 1244, 1, 0, 0, 0, 180, 1270, 1, 0, 0, 0, 182, 1315, 1, 0, 0, 0, 184, 1317, 1, 0, 0, 0, 186, 1319, 1, 0, 0, 0, 188, 1325, 1, 0, 0, 0, 190, 1327, 1, 0, 0, 0, 192, 1332, 1, 0, 0, 0, 194, 1337, 1, 0, 0, 0, 196, 1349, 1, 0, 0, 0, 198, 1366, 1, 0, 0, 0, 200, 1368, 1, 0, 0, 0, 202, 1370, 1, 0, 0, 0, 204, 1389, 1, 0, 0, 0, 206, 1391, 1, 0, 0, 0, 208, 1394, 1, 0, 0, 0, 210, 1443, 1, 0, 0, 0, 212, 1445, 1, 0, 0, 0, 214, 1448, 1, 0, 0, 0, 216, 1450, 1, 0, 0, 0, 218, 1457, 1, 0, 0, 0, 220, 1459, 1, 0, 0, 0, 222, 1461, 1, 0, 0, 0, 224, 1464, 1, 0, 0, 0, 226, 1473, 1, 0, 0, 0, 228, 1478, 1, 0, 0, 0, 230, 1492, 1, 0, 0, 0, 232, 1520, 1, 0, 0, 0, 234, 1530, 1, 0, 0, 0, 236, 1538, 1, 0, 0, 0, 238, 1543, 1, 0, 0, 0, 240, 1569, 1, 0, 0, 0, 242, 1571, 1, 0, 0, 0, 244, 1580, 1, 0, 0, 0, 246, 1591, 1, 0, 0, 0, 248, 1603, 1, 0, 0, 0, 250, 1629, 1, 0, 0, 0, 252, 1631, 1, 0, 0, 0, 254, 1649, 1, 0, 0, 0, 256, 1651, 1, 0, 0, 0, 258, 1656, 1, 0, 0, 0, 260, 1659, 1, 0, 0, 0, 262, 1673, 1, 0, 0, 0, 264, 1769, 1, 0, 0, 0, 266, 1796, 1, 0, 0, 0, 268, 1802, 1, 0, 0, 0, 270, 1919, 1, 0, 0, 0, 272, 1934, 1, 0, 0, 0, 274, 1936, 1, 0, 0, 0, 276, 1938, 1, 0, 0, 0, 278, 1942, 1, 0, 0, 0, 280, 1944, 1, 0, 0, 0, 282, 1949, 1, 0, 0, 0, 284, 1956, 1, 0, 0, 0, 286, 1960, 1, 0, 0, 0, 288, 1965, 1, 0, 0, 0, 290, 1975, 1, 0, 0, 0, 292, 1979, 1, 0, 0, 0, 294, 1982, 1, 0, 0, 0, 296, 1989, 1, 0, 0, 0, 298, 1995, 1, 0, 0, 0, 300, 2005, 1, 0, 0, 0, 302, 2007, 1, 0, 0, 0, 304, 2011, 1, 0, 0, 0, 306, 2022, 1, 0, 0, 0, 308, 2024, 1, 0, 0, 0, 310, 2026, 1, 0, 0, 0, 312, 2028, 1, 0, 0, 0, 314, 2033, 1, 0, 0, 0, 316, 2041, 1, 0, 0, 0, 318, 2044, 1, 0, 0, 0, 320, 2048, 1, 0, 0, 0, 322, 2051, 1, 0, 0, 0, 324, 2062, 1, 0, 0, 0, 326, 2072, 1, 0, 0, 0, 328, 2078, 1, 0, 0, 0, 330, 2086, 1, 0, 0, 0, 332, 2102, 1, 0, 0, 0, 334, 2111, 1, 0, 0, 0, 336, 2113, 1, 0, 0, 0, 338, 2115, 1, 0, 0, 0, 340, 2129, 1, 0, 0, 0, 342, 2131, 1, 0, 0, 0, 344, 2133, 1, 0, 0, 0, 346, 2135, 1, 0, 0, 0, 348, 2137, 1, 0, 0, 0, 350, 2139, 1, 0, 0, 0, 352, 2141, 1, 0, 0, 0, 354, 355, 3, 2, 1, 0, 355, 356, 5, 0, 0, 1, 356, 1, 1, 0, 0, 0, 357, 358, 3, 4, 2, 0, 358, 359, 5, 0, 0, 1, 359, 3, 1, 0, 0, 0, 360, 362, 3, 6, 3, 0, 361, 363, 5, 381, 0, 0, 362, 361, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 366, 3, 8, 4, 0, 365, 360, 1, 0, 0, 0, 365, 364, 1, 0, 0, 0, 366, 369, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 5, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 383, 3, 10, 5, 0, 371, 383, 3, 12, 6, 0, 372, 383, 3, 14, 7, 0, 373, 383, 3, 16, 8, 0, 374, 383, 3, 22, 11, 0, 375, 383, 3, 26, 13, 0, 376, 383, 3, 28, 14, 0, 377, 383, 3, 30, 15, 0, 378, 383, 3, 32, 16, 0, 379, 383, 3, 34, 17, 0, 380, 383, 3, 36, 18, 0, 381, 383, 3, 38, 19, 0, 382, 370, 1, 0, 0, 0, 382, 371, 1, 0, 0, 0, 382, 372, 1, 0, 0, 0, 382, 373, 1, 0, 0, 0, 382, 374, 1, 0, 0, 0, 382, 375, 1, 0, 0, 0, 382, 376, 1, 0, 0, 0, 382, 377, 1, 0, 0, 0, 382, 378, 1, 0, 0, 0, 382, 379, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 7, 1, 0, 0, 0, 384, 385, 5, 381, 0, 0, 385, 9, 1, 0, 0, 0, 386, 401, 3, 40, 20, 0, 387, 401, 3, 104, 52, 0, 388, 401, 3, 106, 53, 0, 389, 401, 3, 108, 54, 0, 390, 401, 3, 102, 51, 0, 391, 401, 3, 114, 57, 0, 392, 401, 3, 128, 64, 0, 393, 401, 3, 130, 65, 0, 394, 401, 3, 132, 66, 0, 395, 401, 3, 134, 67, 0, 396, 401, 3, 136, 68, 0, 397, 401, 3, 138, 69, 0, 398, 401, 3, 140, 70, 0, 399, 401, 3, 142, 71, 0, 400, 386, 1, 0, 0, 0, 400, 387, 1, 0, 0, 0, 400, 388, 1, 0, 0, 0, 400, 389, 1, 0, 0, 0, 400, 390, 1, 0, 0, 0, 400, 391, 1, 0, 0, 0, 400, 392, 1, 0, 0, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 11, 1, 0, 0, 0, 402, 405, 3, 158, 79, 0, 403, 405, 3, 144, 72, 0, 404, 402, 1, 0, 0, 0, 404, 403, 1, 0, 0, 0, 405, 13, 1, 0, 0, 0, 406, 407, 7, 0, 0, 0, 407, 408, 3, 314, 157, 0, 408, 15, 1, 0, 0, 0, 409, 413, 5, 242, 0, 0, 410, 414, 3, 18, 9, 0, 411, 412, 5, 100, 0, 0, 412, 414, 5, 247, 0, 0, 413, 410, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 418, 1, 0, 0, 0, 415, 419, 3, 12, 6, 0, 416, 419, 3, 146, 73, 0, 417, 419, 3, 156, 78, 0, 418, 415, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 418, 417, 1, 0, 0, 0, 419, 17, 1, 0, 0, 0, 420, 425, 3, 20, 10, 0, 421, 422, 5, 380, 0, 0, 422, 424, 3, 20, 10, 0, 423, 421, 1, 0, 0, 0, 424, 427, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 19, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 428, 429, 7, 1, 0, 0, 429, 21, 1, 0, 0, 0, 430, 432, 5, 160, 0, 0, 431, 433, 5, 12, 0, 0, 432, 431, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 437, 3, 314, 157, 0, 435, 437, 3, 24, 12, 0, 436, 430, 1, 0, 0, 0, 436, 435, 1, 0, 0, 0, 437, 23, 1, 0, 0, 0, 438, 439, 5, 160, 0, 0, 439, 440, 5, 83, 0, 0, 440, 445, 3, 314, 157, 0, 441, 442, 5, 380, 0, 0, 442, 444, 3, 314, 157, 0, 443, 441, 1, 0, 0, 0, 444, 447, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 25, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 448, 449, 5, 327, 0, 0, 449, 484, 7, 2, 0, 0, 450, 451, 5, 327, 0, 0, 451, 452, 5, 219, 0, 0, 452, 484, 7, 3, 0, 0, 453, 454, 5, 327, 0, 0, 454, 457, 5, 148, 0, 0, 455, 456, 7, 4, 0, 0, 456, 458, 3, 314, 157, 0, 457, 455, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 461, 3, 266, 133, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 484, 1, 0, 0, 0, 462, 463, 5, 327, 0, 0, 463, 464, 5, 20, 0, 0, 464, 465, 7, 4, 0, 0, 465, 467, 3, 314, 157, 0, 466, 468, 3, 266, 133, 0, 467, 466, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 484, 1, 0, 0, 0, 469, 470, 5, 327, 0, 0, 470, 471, 5, 216, 0, 0, 471, 472, 7, 5, 0, 0, 472, 484, 3, 314, 157, 0, 473, 475, 5, 327, 0, 0, 474, 476, 5, 352, 0, 0, 475, 474, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 484, 5, 50, 0, 0, 478, 480, 5, 327, 0, 0, 479, 481, 5, 249, 0, 0, 480, 479, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 484, 5, 83, 0, 0, 483, 448, 1, 0, 0, 0, 483, 450, 1, 0, 0, 0, 483, 453, 1, 0, 0, 0, 483, 462, 1, 0, 0, 0, 483, 469, 1, 0, 0, 0, 483, 473, 1, 0, 0, 0, 483, 478, 1, 0, 0, 0, 484, 27, 1, 0, 0, 0, 485, 486, 5, 75, 0, 0, 486, 487, 5, 287, 0, 0, 487, 490, 3, 314, 157, 0, 488, 489, 5, 361, 0, 0, 489, 491, 3, 322, 161, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 29, 1, 0, 0, 0, 492, 493, 5, 158, 0, 0, 493, 494, 5, 287, 0, 0, 494, 495, 3, 314, 157, 0, 495, 31, 1, 0, 0, 0, 496, 498, 5, 326, 0, 0, 497, 499, 3, 324, 162, 0, 498, 497, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 33, 1, 0, 0, 0, 500, 502, 5, 316, 0, 0, 501, 503, 3, 326, 163, 0, 502, 501, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 35, 1, 0, 0, 0, 504, 505, 7, 6, 0, 0, 505, 506, 5, 63, 0, 0, 506, 507, 3, 112, 56, 0, 507, 37, 1, 0, 0, 0, 508, 509, 5, 4, 0, 0, 509, 510, 5, 63, 0, 0, 510, 511, 5, 361, 0, 0, 511, 514, 5, 402, 0, 0, 512, 513, 5, 183, 0, 0, 513, 515, 3, 314, 157, 0, 514, 512, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 548, 1, 0, 0, 0, 516, 517, 5, 4, 0, 0, 517, 518, 5, 42, 0, 0, 518, 519, 5, 361, 0, 0, 519, 522, 5, 402, 0, 0, 520, 521, 5, 183, 0, 0, 521, 523, 3, 314, 157, 0, 522, 520, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 526, 1, 0, 0, 0, 524, 525, 5, 118, 0, 0, 525, 527, 3, 314, 157, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 548, 1, 0, 0, 0, 528, 529, 5, 4, 0, 0, 529, 530, 7, 7, 0, 0, 530, 531, 5, 361, 0, 0, 531, 532, 5, 402, 0, 0, 532, 533, 5, 118, 0, 0, 533, 548, 3, 314, 157, 0, 534, 535, 5, 4, 0, 0, 535, 536, 5, 112, 0, 0, 536, 548, 5, 402, 0, 0, 537, 538, 5, 4, 0, 0, 538, 539, 5, 35, 0, 0, 539, 540, 5, 42, 0, 0, 540, 541, 5, 361, 0, 0, 541, 542, 5, 402, 0, 0, 542, 543, 5, 118, 0, 0, 543, 544, 3, 314, 157, 0, 544, 545, 5, 68, 0, 0, 545, 546, 3, 314, 157, 0, 546, 548, 1, 0, 0, 0, 547, 508, 1, 0, 0, 0, 547, 516, 1, 0, 0, 0, 547, 528, 1, 0, 0, 0, 547, 534, 1, 0, 0, 0, 547, 537, 1, 0, 0, 0, 548, 39, 1, 0, 0, 0, 549, 552, 3, 42, 21, 0, 550, 552, 3, 44, 22, 0, 551, 549, 1, 0, 0, 0, 551, 550, 1, 0, 0, 0, 552, 41, 1, 0, 0, 0, 553, 555, 5, 216, 0, 0, 554, 556, 5, 149, 0, 0, 555, 554, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 559, 5, 337, 0, 0, 558, 560, 3, 318, 159, 0, 559, 558, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 3, 98, 49, 0, 562, 563, 5, 376, 0, 0, 563, 568, 3, 46, 23, 0, 564, 565, 5, 380, 0, 0, 565, 567, 3, 46, 23, 0, 566, 564, 1, 0, 0, 0, 567, 570, 1, 0, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 573, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 571, 572, 5, 380, 0, 0, 572, 574, 3, 80, 40, 0, 573, 571, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 577, 1, 0, 0, 0, 575, 576, 5, 380, 0, 0, 576, 578, 3, 82, 41, 0, 577, 575, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 581, 1, 0, 0, 0, 579, 580, 5, 380, 0, 0, 580, 582, 3, 86, 43, 0, 581, 579, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 585, 5, 377, 0, 0, 584, 586, 3, 70, 35, 0, 585, 584, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 588, 1, 0, 0, 0, 587, 589, 3, 88, 44, 0, 588, 587, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 592, 3, 316, 158, 0, 591, 593, 3, 96, 48, 0, 592, 591, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 43, 1, 0, 0, 0, 594, 595, 5, 216, 0, 0, 595, 597, 5, 337, 0, 0, 596, 598, 3, 318, 159, 0, 597, 596, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 600, 3, 98, 49, 0, 600, 603, 3, 316, 158, 0, 601, 602, 5, 183, 0, 0, 602, 604, 3, 158, 79, 0, 603, 601, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 45, 1, 0, 0, 0, 605, 609, 3, 48, 24, 0, 606, 609, 3, 72, 36, 0, 607, 609, 3, 76, 38, 0, 608, 605, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 608, 607, 1, 0, 0, 0, 609, 47, 1, 0, 0, 0, 610, 611, 3, 50, 25, 0, 611, 613, 3, 54, 27, 0, 612, 614, 3, 68, 34, 0, 613, 612, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 616, 1, 0, 0, 0, 615, 617, 3, 70, 35, 0, 616, 615, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 49, 1, 0, 0, 0, 618, 621, 3, 314, 157, 0, 619, 621, 3, 260, 130, 0, 620, 618, 1, 0, 0, 0, 620, 619, 1, 0, 0, 0, 621, 51, 1, 0, 0, 0, 622, 623, 5, 376, 0, 0, 623, 628, 3, 50, 25, 0, 624, 625, 5, 380, 0, 0, 625, 627, 3, 50, 25, 0, 626, 624, 1, 0, 0, 0, 627, 630, 1, 0, 0, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 631, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0, 631, 632, 5, 377, 0, 0, 632, 53, 1, 0, 0, 0, 633, 671, 7, 8, 0, 0, 634, 636, 7, 9, 0, 0, 635, 637, 3, 56, 28, 0, 636, 635, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 671, 1, 0, 0, 0, 638, 640, 5, 341, 0, 0, 639, 641, 3, 56, 28, 0, 640, 639, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 648, 1, 0, 0, 0, 642, 644, 7, 10, 0, 0, 643, 645, 5, 278, 0, 0, 644, 643, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 647, 5, 340, 0, 0, 647, 649, 5, 174, 0, 0, 648, 642, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 671, 1, 0, 0, 0, 650, 652, 7, 11, 0, 0, 651, 653, 3, 58, 29, 0, 652, 651, 1, 0, 0, 0, 652, 653, 1, 0, 0, 0, 653, 671, 1, 0, 0, 0, 654, 656, 7, 12, 0, 0, 655, 657, 3, 62, 31, 0, 656, 655, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 671, 1, 0, 0, 0, 658, 660, 5, 76, 0, 0, 659, 661, 3, 64, 32, 0, 660, 659, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 671, 1, 0, 0, 0, 662, 664, 5, 322, 0, 0, 663, 665, 3, 66, 33, 0, 664, 663, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 671, 1, 0, 0, 0, 666, 668, 5, 114, 0, 0, 667, 669, 3, 60, 30, 0, 668, 667, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 671, 1, 0, 0, 0, 670, 633, 1, 0, 0, 0, 670, 634, 1, 0, 0, 0, 670, 638, 1, 0, 0, 0, 670, 650, 1, 0, 0, 0, 670, 654, 1, 0, 0, 0, 670, 658, 1, 0, 0, 0, 670, 662, 1, 0, 0, 0, 670, 666, 1, 0, 0, 0, 671, 55, 1, 0, 0, 0, 672, 673, 5, 376, 0, 0, 673, 674, 3, 344, 172, 0, 674, 675, 5, 377, 0, 0, 675, 57, 1, 0, 0, 0, 676, 677, 5, 376, 0, 0, 677, 680, 3, 344, 172, 0, 678, 679, 5, 380, 0, 0, 679, 681, 3, 344, 172, 0, 680, 678, 1, 0, 0, 0, 680, 681, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 683, 5, 377, 0, 0, 683, 59, 1, 0, 0, 0, 684, 685, 5, 376, 0, 0, 685, 688, 3, 342, 171, 0, 686, 687, 5, 380, 0, 0, 687, 689, 3, 342, 171, 0, 688, 686, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 691, 5, 377, 0, 0, 691, 61, 1, 0, 0, 0, 692, 693, 5, 367, 0, 0, 693, 694, 3, 54, 27, 0, 694, 695, 5, 366, 0, 0, 695, 63, 1, 0, 0, 0, 696, 697, 5, 367, 0, 0, 697, 698, 3, 54, 27, 0, 698, 699, 5, 380, 0, 0, 699, 700, 3, 54, 27, 0, 700, 701, 1, 0, 0, 0, 701, 702, 5, 366, 0, 0, 702, 65, 1, 0, 0, 0, 703, 704, 5, 367, 0, 0, 704, 705, 3, 50, 25, 0, 705, 712, 3, 54, 27, 0, 706, 707, 5, 380, 0, 0, 707, 708, 3, 50, 25, 0, 708, 709, 3, 54, 27, 0, 709, 711, 1, 0, 0, 0, 710, 706, 1, 0, 0, 0, 711, 714, 1, 0, 0, 0, 712, 710, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, 715, 1, 0, 0, 0, 714, 712, 1, 0, 0, 0, 715, 716, 5, 366, 0, 0, 716, 67, 1, 0, 0, 0, 717, 718, 5, 212, 0, 0, 718, 720, 3, 84, 42, 0, 719, 717, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 722, 5, 313, 0, 0, 722, 725, 5, 68, 0, 0, 723, 724, 5, 294, 0, 0, 724, 726, 5, 34, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 732, 1, 0, 0, 0, 727, 729, 5, 294, 0, 0, 728, 727, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 732, 5, 295, 0, 0, 731, 719, 1, 0, 0, 0, 731, 728, 1, 0, 0, 0, 732, 69, 1, 0, 0, 0, 733, 734, 5, 18, 0, 0, 734, 735, 5, 397, 0, 0, 735, 71, 1, 0, 0, 0, 736, 737, 3, 50, 25, 0, 737, 738, 3, 54, 27, 0, 738, 741, 5, 283, 0, 0, 739, 740, 5, 248, 0, 0, 740, 742, 3, 74, 37, 0, 741, 739, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 744, 1, 0, 0, 0, 743, 745, 5, 167, 0, 0, 744, 743, 1, 0, 0, 0, 744, 745, 1, 0, 0, 0, 745, 73, 1, 0, 0, 0, 746, 747, 5, 397, 0, 0, 747, 75, 1, 0, 0, 0, 748, 749, 3, 50, 25, 0, 749, 750, 5, 183, 0, 0, 750, 752, 3, 78, 39, 0, 751, 753, 3, 70, 35, 0, 752, 751, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 77, 1, 0, 0, 0, 754, 755, 3, 260, 130, 0, 755, 79, 1, 0, 0, 0, 756, 757, 5, 168, 0, 0, 757, 758, 5, 247, 0, 0, 758, 759, 3, 260, 130, 0, 759, 760, 5, 183, 0, 0, 760, 761, 3, 260, 130, 0, 761, 81, 1, 0, 0, 0, 762, 763, 5, 212, 0, 0, 763, 765, 3, 84, 42, 0, 764, 762, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 767, 5, 313, 0, 0, 767, 768, 5, 68, 0, 0, 768, 769, 3, 52, 26, 0, 769, 770, 5, 294, 0, 0, 770, 771, 5, 34, 0, 0, 771, 83, 1, 0, 0, 0, 772, 773, 3, 306, 153, 0, 773, 85, 1, 0, 0, 0, 774, 775, 5, 311, 0, 0, 775, 776, 5, 247, 0, 0, 776, 777, 5, 335, 0, 0, 777, 87, 1, 0, 0, 0, 778, 779, 5, 94, 0, 0, 779, 780, 5, 194, 0, 0, 780, 781, 3, 90, 45, 0, 781, 89, 1, 0, 0, 0, 782, 783, 5, 376, 0, 0, 783, 788, 3, 92, 46, 0, 784, 785, 5, 380, 0, 0, 785, 787, 3, 92, 46, 0, 786, 784, 1, 0, 0, 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 792, 5, 377, 0, 0, 792, 91, 1, 0, 0, 0, 793, 807, 3, 278, 139, 0, 794, 795, 3, 306, 153, 0, 795, 796, 5, 376, 0, 0, 796, 801, 3, 94, 47, 0, 797, 798, 5, 380, 0, 0, 798, 800, 3, 94, 47, 0, 799, 797, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 804, 805, 5, 377, 0, 0, 805, 807, 1, 0, 0, 0, 806, 793, 1, 0, 0, 0, 806, 794, 1, 0, 0, 0, 807, 93, 1, 0, 0, 0, 808, 811, 3, 278, 139, 0, 809, 811, 3, 340, 170, 0, 810, 808, 1, 0, 0, 0, 810, 809, 1, 0, 0, 0, 811, 95, 1, 0, 0, 0, 812, 813, 5, 276, 0, 0, 813, 822, 3, 98, 49, 0, 814, 818, 5, 376, 0, 0, 815, 817, 3, 100, 50, 0, 816, 815, 1, 0, 0, 0, 817, 820, 1, 0, 0, 0, 818, 816, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 818, 1, 0, 0, 0, 821, 823, 5, 377, 0, 0, 822, 814, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 97, 1, 0, 0, 0, 824, 825, 3, 314, 157, 0, 825, 99, 1, 0, 0, 0, 826, 827, 7, 13, 0, 0, 827, 831, 7, 14, 0, 0, 828, 829, 7, 15, 0, 0, 829, 831, 7, 16, 0, 0, 830, 826, 1, 0, 0, 0, 830, 828, 1, 0, 0, 0, 831, 101, 1, 0, 0, 0, 832, 833, 5, 216, 0, 0, 833, 834, 5, 12, 0, 0, 834, 835, 3, 314, 157, 0, 835, 836, 3, 316, 158, 0, 836, 103, 1, 0, 0, 0, 837, 838, 5, 216, 0, 0, 838, 840, 5, 25, 0, 0, 839, 841, 3, 318, 159, 0, 840, 839, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 844, 3, 314, 157, 0, 843, 845, 3, 70, 35, 0, 844, 843, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 846, 1, 0, 0, 0, 846, 847, 3, 316, 158, 0, 847, 105, 1, 0, 0, 0, 848, 850, 5, 216, 0, 0, 849, 851, 5, 149, 0, 0, 850, 849, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 852, 1, 0, 0, 0, 852, 854, 5, 165, 0, 0, 853, 855, 3, 318, 159, 0, 854, 853, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 858, 3, 314, 157, 0, 857, 859, 3, 52, 26, 0, 858, 857, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 861, 1, 0, 0, 0, 860, 862, 3, 70, 35, 0, 861, 860, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 864, 5, 183, 0, 0, 864, 865, 3, 158, 79, 0, 865, 107, 1, 0, 0, 0, 866, 870, 5, 216, 0, 0, 867, 871, 5, 149, 0, 0, 868, 869, 5, 149, 0, 0, 869, 871, 5, 334, 0, 0, 870, 867, 1, 0, 0, 0, 870, 868, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 874, 5, 250, 0, 0, 873, 875, 3, 318, 159, 0, 874, 873, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 876, 1, 0, 0, 0, 876, 877, 3, 314, 157, 0, 877, 878, 5, 183, 0, 0, 878, 881, 3, 306, 153, 0, 879, 880, 5, 272, 0, 0, 880, 882, 7, 17, 0, 0, 881, 879, 1, 0, 0, 0, 881, 882, 1, 0, 0, 0, 882, 884, 1, 0, 0, 0, 883, 885, 3, 110, 55, 0, 884, 883, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, 109, 1, 0, 0, 0, 886, 887, 5, 353, 0, 0, 887, 888, 5, 63, 0, 0, 888, 894, 3, 112, 56, 0, 889, 890, 5, 380, 0, 0, 890, 891, 5, 63, 0, 0, 891, 893, 3, 112, 56, 0, 892, 889, 1, 0, 0, 0, 893, 896, 1, 0, 0, 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 111, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 897, 898, 5, 397, 0, 0, 898, 113, 1, 0, 0, 0, 899, 900, 5, 178, 0, 0, 900, 902, 5, 337, 0, 0, 901, 903, 3, 320, 160, 0, 902, 901, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 910, 3, 314, 157, 0, 905, 911, 3, 116, 58, 0, 906, 911, 3, 118, 59, 0, 907, 911, 3, 120, 60, 0, 908, 911, 3, 122, 61, 0, 909, 911, 3, 124, 62, 0, 910, 905, 1, 0, 0, 0, 910, 906, 1, 0, 0, 0, 910, 907, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 909, 1, 0, 0, 0, 911, 115, 1, 0, 0, 0, 912, 914, 5, 118, 0, 0, 913, 915, 3, 314, 157, 0, 914, 913, 1, 0, 0, 0, 914, 915, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 5, 343, 0, 0, 917, 918, 3, 314, 157, 0, 918, 117, 1, 0, 0, 0, 919, 920, 5, 326, 0, 0, 920, 921, 3, 322, 161, 0, 921, 119, 1, 0, 0, 0, 922, 923, 5, 4, 0, 0, 923, 924, 5, 212, 0, 0, 924, 925, 3, 84, 42, 0, 925, 926, 5, 313, 0, 0, 926, 927, 5, 68, 0, 0, 927, 929, 3, 52, 26, 0, 928, 930, 3, 126, 63, 0, 929, 928, 1, 0, 0, 0, 929, 930, 1, 0, 0, 0, 930, 121, 1, 0, 0, 0, 931, 932, 5, 234, 0, 0, 932, 933, 5, 212, 0, 0, 933, 934, 3, 84, 42, 0, 934, 123, 1, 0, 0, 0, 935, 936, 5, 4, 0, 0, 936, 937, 5, 347, 0, 0, 937, 938, 3, 52, 26, 0, 938, 125, 1, 0, 0, 0, 939, 940, 5, 294, 0, 0, 940, 941, 5, 34, 0, 0, 941, 127, 1, 0, 0, 0, 942, 943, 5, 178, 0, 0, 943, 944, 5, 165, 0, 0, 944, 948, 3, 314, 157, 0, 945, 949, 3, 116, 58, 0, 946, 947, 5, 183, 0, 0, 947, 949, 3, 158, 79, 0, 948, 945, 1, 0, 0, 0, 948, 946, 1, 0, 0, 0, 949, 129, 1, 0, 0, 0, 950, 951, 5, 178, 0, 0, 951, 952, 5, 25, 0, 0, 952, 953, 3, 314, 157, 0, 953, 954, 3, 118, 59, 0, 954, 131, 1, 0, 0, 0, 955, 959, 5, 178, 0, 0, 956, 960, 5, 149, 0, 0, 957, 958, 5, 149, 0, 0, 958, 960, 5, 334, 0, 0, 959, 956, 1, 0, 0, 0, 959, 957, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 963, 5, 250, 0, 0, 962, 964, 3, 320, 160, 0, 963, 962, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 965, 1, 0, 0, 0, 965, 966, 3, 314, 157, 0, 966, 967, 5, 183, 0, 0, 967, 970, 3, 306, 153, 0, 968, 969, 5, 272, 0, 0, 969, 971, 7, 17, 0, 0, 970, 968, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 133, 1, 0, 0, 0, 972, 973, 5, 234, 0, 0, 973, 975, 5, 12, 0, 0, 974, 976, 3, 320, 160, 0, 975, 974, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 978, 3, 314, 157, 0, 978, 135, 1, 0, 0, 0, 979, 981, 5, 234, 0, 0, 980, 982, 5, 149, 0, 0, 981, 980, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 985, 5, 337, 0, 0, 984, 986, 3, 320, 160, 0, 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 3, 314, 157, 0, 988, 137, 1, 0, 0, 0, 989, 990, 5, 234, 0, 0, 990, 992, 5, 25, 0, 0, 991, 993, 3, 320, 160, 0, 992, 991, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 996, 3, 314, 157, 0, 995, 997, 7, 18, 0, 0, 996, 995, 1, 0, 0, 0, 996, 997, 1, 0, 0, 0, 997, 139, 1, 0, 0, 0, 998, 1000, 5, 234, 0, 0, 999, 1001, 5, 149, 0, 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1004, 5, 165, 0, 0, 1003, 1005, 3, 320, 160, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1007, 3, 314, 157, 0, 1007, 141, 1, 0, 0, 0, 1008, 1012, 5, 234, 0, 0, 1009, 1013, 5, 149, 0, 0, 1010, 1011, 5, 149, 0, 0, 1011, 1013, 5, 334, 0, 0, 1012, 1009, 1, 0, 0, 0, 1012, 1010, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1016, 5, 250, 0, 0, 1015, 1017, 3, 320, 160, 0, 1016, 1015, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1019, 3, 314, 157, 0, 1019, 143, 1, 0, 0, 0, 1020, 1022, 5, 240, 0, 0, 1021, 1020, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1028, 3, 146, 73, 0, 1024, 1028, 3, 154, 77, 0, 1025, 1026, 5, 240, 0, 0, 1026, 1028, 3, 156, 78, 0, 1027, 1021, 1, 0, 0, 0, 1027, 1024, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1028, 145, 1, 0, 0, 0, 1029, 1030, 5, 263, 0, 0, 1030, 1031, 7, 19, 0, 0, 1031, 1040, 3, 314, 157, 0, 1032, 1034, 3, 148, 74, 0, 1033, 1032, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1036, 1, 0, 0, 0, 1035, 1037, 3, 52, 26, 0, 1036, 1035, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1041, 3, 158, 79, 0, 1039, 1041, 3, 150, 75, 0, 1040, 1033, 1, 0, 0, 0, 1040, 1039, 1, 0, 0, 0, 1041, 147, 1, 0, 0, 0, 1042, 1043, 5, 307, 0, 0, 1043, 1044, 3, 322, 161, 0, 1044, 149, 1, 0, 0, 0, 1045, 1046, 5, 355, 0, 0, 1046, 1051, 3, 152, 76, 0, 1047, 1048, 5, 380, 0, 0, 1048, 1050, 3, 152, 76, 0, 1049, 1047, 1, 0, 0, 0, 1050, 1053, 1, 0, 0, 0, 1051, 1049, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 151, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1054, 1055, 5, 376, 0, 0, 1055, 1060, 3, 340, 170, 0, 1056, 1057, 5, 380, 0, 0, 1057, 1059, 3, 340, 170, 0, 1058, 1056, 1, 0, 0, 0, 1059, 1062, 1, 0, 0, 0, 1060, 1058, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1063, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1063, 1064, 5, 377, 0, 0, 1064, 153, 1, 0, 0, 0, 1065, 1066, 5, 186, 0, 0, 1066, 1067, 5, 143, 0, 0, 1067, 1068, 5, 326, 0, 0, 1068, 1072, 5, 381, 0, 0, 1069, 1070, 3, 146, 73, 0, 1070, 1071, 5, 381, 0, 0, 1071, 1073, 1, 0, 0, 0, 1072, 1069, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1077, 5, 237, 0, 0, 1077, 155, 1, 0, 0, 0, 1078, 1079, 5, 143, 0, 0, 1079, 1080, 5, 326, 0, 0, 1080, 1084, 5, 186, 0, 0, 1081, 1082, 3, 146, 73, 0, 1082, 1083, 5, 381, 0, 0, 1083, 1085, 1, 0, 0, 0, 1084, 1081, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 237, 0, 0, 1089, 157, 1, 0, 0, 0, 1090, 1091, 6, 79, -1, 0, 1091, 1114, 3, 160, 80, 0, 1092, 1093, 3, 162, 81, 0, 1093, 1094, 3, 158, 79, 5, 1094, 1114, 1, 0, 0, 0, 1095, 1096, 5, 376, 0, 0, 1096, 1097, 3, 158, 79, 0, 1097, 1098, 5, 377, 0, 0, 1098, 1114, 1, 0, 0, 0, 1099, 1101, 3, 170, 85, 0, 1100, 1102, 3, 232, 116, 0, 1101, 1100, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1104, 1, 0, 0, 0, 1103, 1105, 3, 236, 118, 0, 1104, 1103, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1114, 1, 0, 0, 0, 1106, 1108, 3, 168, 84, 0, 1107, 1109, 3, 232, 116, 0, 1108, 1107, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1111, 1, 0, 0, 0, 1110, 1112, 3, 236, 118, 0, 1111, 1110, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1114, 1, 0, 0, 0, 1113, 1090, 1, 0, 0, 0, 1113, 1092, 1, 0, 0, 0, 1113, 1095, 1, 0, 0, 0, 1113, 1099, 1, 0, 0, 0, 1113, 1106, 1, 0, 0, 0, 1114, 1129, 1, 0, 0, 0, 1115, 1116, 10, 3, 0, 0, 1116, 1118, 7, 20, 0, 0, 1117, 1119, 5, 176, 0, 0, 1118, 1117, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 1122, 3, 158, 79, 0, 1121, 1123, 3, 232, 116, 0, 1122, 1121, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1125, 1, 0, 0, 0, 1124, 1126, 3, 236, 118, 0, 1125, 1124, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1128, 1, 0, 0, 0, 1127, 1115, 1, 0, 0, 0, 1128, 1131, 1, 0, 0, 0, 1129, 1127, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 159, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1132, 1133, 5, 355, 0, 0, 1133, 1138, 3, 260, 130, 0, 1134, 1135, 5, 380, 0, 0, 1135, 1137, 3, 260, 130, 0, 1136, 1134, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 161, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1141, 1142, 5, 361, 0, 0, 1142, 1147, 3, 164, 82, 0, 1143, 1144, 5, 380, 0, 0, 1144, 1146, 3, 164, 82, 0, 1145, 1143, 1, 0, 0, 0, 1146, 1149, 1, 0, 0, 0, 1147, 1145, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 163, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1150, 1162, 3, 166, 83, 0, 1151, 1152, 5, 376, 0, 0, 1152, 1157, 3, 50, 25, 0, 1153, 1154, 5, 380, 0, 0, 1154, 1156, 3, 50, 25, 0, 1155, 1153, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 1160, 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1161, 5, 377, 0, 0, 1161, 1163, 1, 0, 0, 0, 1162, 1151, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 1165, 5, 183, 0, 0, 1165, 1166, 5, 376, 0, 0, 1166, 1167, 3, 158, 79, 0, 1167, 1168, 5, 377, 0, 0, 1168, 165, 1, 0, 0, 0, 1169, 1170, 3, 306, 153, 0, 1170, 167, 1, 0, 0, 0, 1171, 1172, 3, 170, 85, 0, 1172, 1174, 3, 176, 88, 0, 1173, 1175, 3, 206, 103, 0, 1174, 1173, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1177, 1, 0, 0, 0, 1176, 1178, 3, 208, 104, 0, 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1181, 3, 222, 111, 0, 1180, 1179, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1183, 1, 0, 0, 0, 1182, 1184, 3, 224, 112, 0, 1183, 1182, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1190, 1, 0, 0, 0, 1185, 1186, 3, 170, 85, 0, 1186, 1187, 3, 176, 88, 0, 1187, 1188, 3, 230, 115, 0, 1188, 1190, 1, 0, 0, 0, 1189, 1171, 1, 0, 0, 0, 1189, 1185, 1, 0, 0, 0, 1190, 169, 1, 0, 0, 0, 1191, 1193, 5, 325, 0, 0, 1192, 1194, 3, 348, 174, 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1204, 1, 0, 0, 0, 1195, 1205, 5, 387, 0, 0, 1196, 1201, 3, 172, 86, 0, 1197, 1198, 5, 380, 0, 0, 1198, 1200, 3, 172, 86, 0, 1199, 1197, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1205, 1, 0, 0, 0, 1203, 1201, 1, 0, 0, 0, 1204, 1195, 1, 0, 0, 0, 1204, 1196, 1, 0, 0, 0, 1205, 171, 1, 0, 0, 0, 1206, 1215, 3, 174, 87, 0, 1207, 1212, 3, 260, 130, 0, 1208, 1210, 5, 183, 0, 0, 1209, 1208, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1213, 3, 260, 130, 0, 1212, 1209, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1215, 1, 0, 0, 0, 1214, 1206, 1, 0, 0, 0, 1214, 1207, 1, 0, 0, 0, 1215, 173, 1, 0, 0, 0, 1216, 1217, 3, 270, 135, 0, 1217, 1218, 5, 305, 0, 0, 1218, 1219, 3, 228, 114, 0, 1219, 1220, 5, 183, 0, 0, 1220, 1221, 3, 306, 153, 0, 1221, 1229, 1, 0, 0, 0, 1222, 1223, 3, 270, 135, 0, 1223, 1224, 5, 305, 0, 0, 1224, 1225, 3, 298, 149, 0, 1225, 1226, 5, 183, 0, 0, 1226, 1227, 3, 306, 153, 0, 1227, 1229, 1, 0, 0, 0, 1228, 1216, 1, 0, 0, 0, 1228, 1222, 1, 0, 0, 0, 1229, 175, 1, 0, 0, 0, 1230, 1231, 5, 248, 0, 0, 1231, 1232, 3, 178, 89, 0, 1232, 177, 1, 0, 0, 0, 1233, 1234, 6, 89, -1, 0, 1234, 1239, 3, 180, 90, 0, 1235, 1236, 5, 380, 0, 0, 1236, 1238, 3, 180, 90, 0, 1237, 1235, 1, 0, 0, 0, 1238, 1241, 1, 0, 0, 0, 1239, 1237, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1245, 1, 0, 0, 0, 1241, 1239, 1, 0, 0, 0, 1242, 1245, 3, 190, 95, 0, 1243, 1245, 3, 192, 96, 0, 1244, 1233, 1, 0, 0, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1243, 1, 0, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1247, 10, 3, 0, 0, 1247, 1248, 5, 217, 0, 0, 1248, 1249, 5, 270, 0, 0, 1249, 1266, 3, 178, 89, 4, 1250, 1252, 10, 4, 0, 0, 1251, 1253, 5, 290, 0, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1255, 1, 0, 0, 0, 1254, 1256, 7, 21, 0, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 1, 0, 0, 0, 1257, 1259, 5, 304, 0, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1261, 5, 270, 0, 0, 1261, 1263, 3, 178, 89, 0, 1262, 1264, 3, 204, 102, 0, 1263, 1262, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1266, 1, 0, 0, 0, 1265, 1246, 1, 0, 0, 0, 1265, 1250, 1, 0, 0, 0, 1266, 1269, 1, 0, 0, 0, 1267, 1265, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 179, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1270, 1272, 3, 182, 91, 0, 1271, 1273, 3, 296, 148, 0, 1272, 1271, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 181, 1, 0, 0, 0, 1274, 1276, 5, 337, 0, 0, 1275, 1274, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 3, 184, 92, 0, 1278, 1280, 3, 186, 93, 0, 1279, 1278, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1285, 1, 0, 0, 0, 1281, 1283, 5, 183, 0, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1286, 3, 276, 138, 0, 1285, 1282, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1316, 1, 0, 0, 0, 1287, 1288, 5, 273, 0, 0, 1288, 1289, 5, 337, 0, 0, 1289, 1290, 5, 376, 0, 0, 1290, 1291, 3, 272, 136, 0, 1291, 1292, 5, 376, 0, 0, 1292, 1297, 3, 260, 130, 0, 1293, 1294, 5, 380, 0, 0, 1294, 1296, 3, 260, 130, 0, 1295, 1293, 1, 0, 0, 0, 1296, 1299, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1300, 1, 0, 0, 0, 1299, 1297, 1, 0, 0, 0, 1300, 1301, 5, 377, 0, 0, 1301, 1302, 5, 377, 0, 0, 1302, 1316, 1, 0, 0, 0, 1303, 1305, 5, 273, 0, 0, 1304, 1303, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1307, 5, 376, 0, 0, 1307, 1308, 3, 158, 79, 0, 1308, 1309, 5, 377, 0, 0, 1309, 1316, 1, 0, 0, 0, 1310, 1311, 5, 349, 0, 0, 1311, 1312, 5, 376, 0, 0, 1312, 1313, 3, 260, 130, 0, 1313, 1314, 5, 377, 0, 0, 1314, 1316, 1, 0, 0, 0, 1315, 1275, 1, 0, 0, 0, 1315, 1287, 1, 0, 0, 0, 1315, 1304, 1, 0, 0, 0, 1315, 1310, 1, 0, 0, 0, 1316, 183, 1, 0, 0, 0, 1317, 1318, 3, 314, 157, 0, 1318, 185, 1, 0, 0, 0, 1319, 1320, 5, 247, 0, 0, 1320, 1321, 5, 335, 0, 0, 1321, 1322, 5, 183, 0, 0, 1322, 1323, 5, 297, 0, 0, 1323, 1324, 3, 188, 94, 0, 1324, 187, 1, 0, 0, 0, 1325, 1326, 3, 260, 130, 0, 1326, 189, 1, 0, 0, 0, 1327, 1328, 5, 376, 0, 0, 1328, 1329, 3, 150, 75, 0, 1329, 1330, 5, 377, 0, 0, 1330, 1331, 3, 296, 148, 0, 1331, 191, 1, 0, 0, 0, 1332, 1333, 5, 337, 0, 0, 1333, 1334, 5, 376, 0, 0, 1334, 1335, 3, 194, 97, 0, 1335, 1336, 5, 377, 0, 0, 1336, 193, 1, 0, 0, 0, 1337, 1338, 3, 196, 98, 0, 1338, 1339, 5, 376, 0, 0, 1339, 1344, 3, 198, 99, 0, 1340, 1341, 5, 380, 0, 0, 1341, 1343, 3, 198, 99, 0, 1342, 1340, 1, 0, 0, 0, 1343, 1346, 1, 0, 0, 0, 1344, 1342, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1344, 1, 0, 0, 0, 1347, 1348, 5, 377, 0, 0, 1348, 195, 1, 0, 0, 0, 1349, 1350, 7, 22, 0, 0, 1350, 197, 1, 0, 0, 0, 1351, 1352, 5, 337, 0, 0, 1352, 1367, 3, 220, 110, 0, 1353, 1367, 3, 202, 101, 0, 1354, 1367, 3, 280, 140, 0, 1355, 1356, 5, 24, 0, 0, 1356, 1357, 5, 396, 0, 0, 1357, 1358, 5, 337, 0, 0, 1358, 1367, 3, 220, 110, 0, 1359, 1360, 5, 150, 0, 0, 1360, 1361, 5, 396, 0, 0, 1361, 1367, 3, 202, 101, 0, 1362, 1363, 3, 200, 100, 0, 1363, 1364, 5, 396, 0, 0, 1364, 1365, 3, 280, 140, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1351, 1, 0, 0, 0, 1366, 1353, 1, 0, 0, 0, 1366, 1354, 1, 0, 0, 0, 1366, 1355, 1, 0, 0, 0, 1366, 1359, 1, 0, 0, 0, 1366, 1362, 1, 0, 0, 0, 1367, 199, 1, 0, 0, 0, 1368, 1369, 7, 23, 0, 0, 1369, 201, 1, 0, 0, 0, 1370, 1371, 5, 31, 0, 0, 1371, 1372, 5, 376, 0, 0, 1372, 1373, 3, 314, 157, 0, 1373, 1374, 5, 377, 0, 0, 1374, 203, 1, 0, 0, 0, 1375, 1376, 5, 299, 0, 0, 1376, 1390, 3, 262, 131, 0, 1377, 1378, 5, 353, 0, 0, 1378, 1379, 5, 376, 0, 0, 1379, 1384, 3, 314, 157, 0, 1380, 1381, 5, 380, 0, 0, 1381, 1383, 3, 314, 157, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 5, 377, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1375, 1, 0, 0, 0, 1389, 1377, 1, 0, 0, 0, 1390, 205, 1, 0, 0, 0, 1391, 1392, 5, 359, 0, 0, 1392, 1393, 3, 262, 131, 0, 1393, 207, 1, 0, 0, 0, 1394, 1395, 5, 253, 0, 0, 1395, 1396, 5, 194, 0, 0, 1396, 1401, 3, 210, 105, 0, 1397, 1398, 5, 380, 0, 0, 1398, 1400, 3, 210, 105, 0, 1399, 1397, 1, 0, 0, 0, 1400, 1403, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 209, 1, 0, 0, 0, 1403, 1401, 1, 0, 0, 0, 1404, 1444, 3, 260, 130, 0, 1405, 1444, 3, 216, 108, 0, 1406, 1407, 5, 376, 0, 0, 1407, 1444, 5, 377, 0, 0, 1408, 1409, 5, 376, 0, 0, 1409, 1414, 3, 260, 130, 0, 1410, 1411, 5, 380, 0, 0, 1411, 1413, 3, 260, 130, 0, 1412, 1410, 1, 0, 0, 0, 1413, 1416, 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1417, 1, 0, 0, 0, 1416, 1414, 1, 0, 0, 0, 1417, 1418, 5, 377, 0, 0, 1418, 1444, 1, 0, 0, 0, 1419, 1420, 3, 214, 107, 0, 1420, 1421, 5, 376, 0, 0, 1421, 1426, 3, 260, 130, 0, 1422, 1423, 5, 380, 0, 0, 1423, 1425, 3, 260, 130, 0, 1424, 1422, 1, 0, 0, 0, 1425, 1428, 1, 0, 0, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1429, 1, 0, 0, 0, 1428, 1426, 1, 0, 0, 0, 1429, 1430, 5, 377, 0, 0, 1430, 1444, 1, 0, 0, 0, 1431, 1432, 3, 212, 106, 0, 1432, 1433, 5, 376, 0, 0, 1433, 1438, 3, 210, 105, 0, 1434, 1435, 5, 380, 0, 0, 1435, 1437, 3, 210, 105, 0, 1436, 1434, 1, 0, 0, 0, 1437, 1440, 1, 0, 0, 0, 1438, 1436, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1441, 1, 0, 0, 0, 1440, 1438, 1, 0, 0, 0, 1441, 1442, 5, 377, 0, 0, 1442, 1444, 1, 0, 0, 0, 1443, 1404, 1, 0, 0, 0, 1443, 1405, 1, 0, 0, 0, 1443, 1406, 1, 0, 0, 0, 1443, 1408, 1, 0, 0, 0, 1443, 1419, 1, 0, 0, 0, 1443, 1431, 1, 0, 0, 0, 1444, 211, 1, 0, 0, 0, 1445, 1446, 5, 254, 0, 0, 1446, 1447, 5, 136, 0, 0, 1447, 213, 1, 0, 0, 0, 1448, 1449, 7, 24, 0, 0, 1449, 215, 1, 0, 0, 0, 1450, 1451, 3, 218, 109, 0, 1451, 1452, 5, 376, 0, 0, 1452, 1453, 3, 220, 110, 0, 1453, 1454, 5, 380, 0, 0, 1454, 1455, 3, 280, 140, 0, 1455, 1456, 5, 377, 0, 0, 1456, 217, 1, 0, 0, 0, 1457, 1458, 7, 25, 0, 0, 1458, 219, 1, 0, 0, 0, 1459, 1460, 3, 314, 157, 0, 1460, 221, 1, 0, 0, 0, 1461, 1462, 5, 256, 0, 0, 1462, 1463, 3, 262, 131, 0, 1463, 223, 1, 0, 0, 0, 1464, 1465, 5, 360, 0, 0, 1465, 1470, 3, 226, 113, 0, 1466, 1467, 5, 380, 0, 0, 1467, 1469, 3, 226, 113, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 225, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1474, 3, 298, 149, 0, 1474, 1475, 5, 183, 0, 0, 1475, 1476, 3, 228, 114, 0, 1476, 227, 1, 0, 0, 0, 1477, 1479, 3, 298, 149, 0, 1478, 1477, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1482, 5, 376, 0, 0, 1481, 1483, 3, 238, 119, 0, 1482, 1481, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1485, 1, 0, 0, 0, 1484, 1486, 3, 232, 116, 0, 1485, 1484, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1488, 1, 0, 0, 0, 1487, 1489, 3, 254, 127, 0, 1488, 1487, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1491, 5, 377, 0, 0, 1491, 229, 1, 0, 0, 0, 1492, 1493, 5, 280, 0, 0, 1493, 1495, 5, 376, 0, 0, 1494, 1496, 3, 238, 119, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1498, 1, 0, 0, 0, 1497, 1499, 3, 232, 116, 0, 1498, 1497, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1501, 1, 0, 0, 0, 1500, 1502, 3, 242, 121, 0, 1501, 1500, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1504, 1, 0, 0, 0, 1503, 1505, 3, 248, 124, 0, 1504, 1503, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1507, 1, 0, 0, 0, 1506, 1508, 3, 250, 125, 0, 1507, 1506, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1510, 1, 0, 0, 0, 1509, 1511, 3, 244, 122, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 3, 252, 126, 0, 1513, 1518, 5, 377, 0, 0, 1514, 1516, 5, 183, 0, 0, 1515, 1514, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1519, 3, 306, 153, 0, 1518, 1515, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 231, 1, 0, 0, 0, 1520, 1521, 5, 302, 0, 0, 1521, 1522, 5, 194, 0, 0, 1522, 1527, 3, 234, 117, 0, 1523, 1524, 5, 380, 0, 0, 1524, 1526, 3, 234, 117, 0, 1525, 1523, 1, 0, 0, 0, 1526, 1529, 1, 0, 0, 0, 1527, 1525, 1, 0, 0, 0, 1527, 1528, 1, 0, 0, 0, 1528, 233, 1, 0, 0, 0, 1529, 1527, 1, 0, 0, 0, 1530, 1532, 3, 260, 130, 0, 1531, 1533, 7, 26, 0, 0, 1532, 1531, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1536, 1, 0, 0, 0, 1534, 1535, 5, 86, 0, 0, 1535, 1537, 7, 27, 0, 0, 1536, 1534, 1, 0, 0, 0, 1536, 1537, 1, 0, 0, 0, 1537, 235, 1, 0, 0, 0, 1538, 1541, 5, 277, 0, 0, 1539, 1542, 5, 176, 0, 0, 1540, 1542, 3, 260, 130, 0, 1541, 1539, 1, 0, 0, 0, 1541, 1540, 1, 0, 0, 0, 1542, 237, 1, 0, 0, 0, 1543, 1544, 5, 307, 0, 0, 1544, 1545, 5, 194, 0, 0, 1545, 1550, 3, 260, 130, 0, 1546, 1547, 5, 380, 0, 0, 1547, 1549, 3, 260, 130, 0, 1548, 1546, 1, 0, 0, 0, 1549, 1552, 1, 0, 0, 0, 1550, 1548, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 239, 1, 0, 0, 0, 1552, 1550, 1, 0, 0, 0, 1553, 1570, 5, 387, 0, 0, 1554, 1570, 5, 390, 0, 0, 1555, 1570, 5, 395, 0, 0, 1556, 1557, 5, 378, 0, 0, 1557, 1558, 5, 398, 0, 0, 1558, 1559, 5, 380, 0, 0, 1559, 1560, 5, 398, 0, 0, 1560, 1570, 5, 379, 0, 0, 1561, 1562, 5, 378, 0, 0, 1562, 1563, 5, 398, 0, 0, 1563, 1564, 5, 380, 0, 0, 1564, 1570, 5, 379, 0, 0, 1565, 1566, 5, 378, 0, 0, 1566, 1567, 5, 380, 0, 0, 1567, 1568, 5, 398, 0, 0, 1568, 1570, 5, 379, 0, 0, 1569, 1553, 1, 0, 0, 0, 1569, 1554, 1, 0, 0, 0, 1569, 1555, 1, 0, 0, 0, 1569, 1556, 1, 0, 0, 0, 1569, 1561, 1, 0, 0, 0, 1569, 1565, 1, 0, 0, 0, 1570, 241, 1, 0, 0, 0, 1571, 1572, 5, 281, 0, 0, 1572, 1577, 3, 172, 86, 0, 1573, 1574, 5, 380, 0, 0, 1574, 1576, 3, 172, 86, 0, 1575, 1573, 1, 0, 0, 0, 1576, 1579, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 243, 1, 0, 0, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1581, 5, 308, 0, 0, 1581, 1583, 5, 376, 0, 0, 1582, 1584, 3, 246, 123, 0, 1583, 1582, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1583, 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1589, 5, 377, 0, 0, 1588, 1590, 3, 258, 129, 0, 1589, 1588, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 245, 1, 0, 0, 0, 1591, 1593, 3, 308, 154, 0, 1592, 1594, 3, 240, 120, 0, 1593, 1592, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 247, 1, 0, 0, 0, 1595, 1596, 5, 176, 0, 0, 1596, 1597, 5, 323, 0, 0, 1597, 1598, 5, 309, 0, 0, 1598, 1604, 5, 279, 0, 0, 1599, 1600, 5, 300, 0, 0, 1600, 1601, 5, 322, 0, 0, 1601, 1602, 5, 309, 0, 0, 1602, 1604, 5, 279, 0, 0, 1603, 1595, 1, 0, 0, 0, 1603, 1599, 1, 0, 0, 0, 1604, 249, 1, 0, 0, 0, 1605, 1606, 5, 6, 0, 0, 1606, 1607, 5, 279, 0, 0, 1607, 1608, 5, 328, 0, 0, 1608, 1609, 5, 97, 0, 0, 1609, 1610, 5, 72, 0, 0, 1610, 1630, 5, 322, 0, 0, 1611, 1612, 5, 6, 0, 0, 1612, 1613, 5, 279, 0, 0, 1613, 1614, 5, 328, 0, 0, 1614, 1615, 5, 343, 0, 0, 1615, 1616, 5, 291, 0, 0, 1616, 1630, 5, 322, 0, 0, 1617, 1618, 5, 6, 0, 0, 1618, 1619, 5, 279, 0, 0, 1619, 1620, 5, 328, 0, 0, 1620, 1621, 5, 343, 0, 0, 1621, 1622, 5, 72, 0, 0, 1622, 1630, 3, 308, 154, 0, 1623, 1624, 5, 6, 0, 0, 1624, 1625, 5, 279, 0, 0, 1625, 1626, 5, 328, 0, 0, 1626, 1627, 5, 343, 0, 0, 1627, 1628, 5, 44, 0, 0, 1628, 1630, 3, 308, 154, 0, 1629, 1605, 1, 0, 0, 0, 1629, 1611, 1, 0, 0, 0, 1629, 1617, 1, 0, 0, 0, 1629, 1623, 1, 0, 0, 0, 1630, 251, 1, 0, 0, 0, 1631, 1632, 5, 229, 0, 0, 1632, 1637, 3, 172, 86, 0, 1633, 1634, 5, 380, 0, 0, 1634, 1636, 3, 172, 86, 0, 1635, 1633, 1, 0, 0, 0, 1636, 1639, 1, 0, 0, 0, 1637, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 253, 1, 0, 0, 0, 1639, 1637, 1, 0, 0, 0, 1640, 1641, 5, 314, 0, 0, 1641, 1642, 5, 187, 0, 0, 1642, 1643, 3, 280, 140, 0, 1643, 1644, 3, 256, 128, 0, 1644, 1650, 1, 0, 0, 0, 1645, 1646, 5, 323, 0, 0, 1646, 1647, 5, 187, 0, 0, 1647, 1648, 5, 398, 0, 0, 1648, 1650, 3, 256, 128, 0, 1649, 1640, 1, 0, 0, 0, 1649, 1645, 1, 0, 0, 0, 1650, 255, 1, 0, 0, 0, 1651, 1652, 5, 101, 0, 0, 1652, 1653, 5, 179, 0, 0, 1653, 1654, 5, 219, 0, 0, 1654, 1655, 5, 322, 0, 0, 1655, 257, 1, 0, 0, 0, 1656, 1657, 5, 362, 0, 0, 1657, 1658, 3, 280, 140, 0, 1658, 259, 1, 0, 0, 0, 1659, 1660, 3, 262, 131, 0, 1660, 261, 1, 0, 0, 0, 1661, 1662, 6, 131, -1, 0, 1662, 1663, 5, 294, 0, 0, 1663, 1674, 3, 262, 131, 5, 1664, 1665, 5, 241, 0, 0, 1665, 1666, 5, 376, 0, 0, 1666, 1667, 3, 158, 79, 0, 1667, 1668, 5, 377, 0, 0, 1668, 1674, 1, 0, 0, 0, 1669, 1671, 3, 268, 134, 0, 1670, 1672, 3, 264, 132, 0, 1671, 1670, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1674, 1, 0, 0, 0, 1673, 1661, 1, 0, 0, 0, 1673, 1664, 1, 0, 0, 0, 1673, 1669, 1, 0, 0, 0, 1674, 1683, 1, 0, 0, 0, 1675, 1676, 10, 2, 0, 0, 1676, 1677, 5, 179, 0, 0, 1677, 1682, 3, 262, 131, 3, 1678, 1679, 10, 1, 0, 0, 1679, 1680, 5, 301, 0, 0, 1680, 1682, 3, 262, 131, 2, 1681, 1675, 1, 0, 0, 0, 1681, 1678, 1, 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 263, 1, 0, 0, 0, 1685, 1683, 1, 0, 0, 0, 1686, 1688, 5, 294, 0, 0, 1687, 1686, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1690, 5, 187, 0, 0, 1690, 1691, 3, 268, 134, 0, 1691, 1692, 5, 179, 0, 0, 1692, 1693, 3, 268, 134, 0, 1693, 1770, 1, 0, 0, 0, 1694, 1696, 5, 294, 0, 0, 1695, 1694, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 5, 259, 0, 0, 1698, 1699, 5, 376, 0, 0, 1699, 1704, 3, 260, 130, 0, 1700, 1701, 5, 380, 0, 0, 1701, 1703, 3, 260, 130, 0, 1702, 1700, 1, 0, 0, 0, 1703, 1706, 1, 0, 0, 0, 1704, 1702, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1707, 1, 0, 0, 0, 1706, 1704, 1, 0, 0, 0, 1707, 1708, 5, 377, 0, 0, 1708, 1770, 1, 0, 0, 0, 1709, 1711, 5, 294, 0, 0, 1710, 1709, 1, 0, 0, 0, 1710, 1711, 1, 0, 0, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1713, 5, 259, 0, 0, 1713, 1714, 5, 376, 0, 0, 1714, 1715, 3, 158, 79, 0, 1715, 1716, 5, 377, 0, 0, 1716, 1770, 1, 0, 0, 0, 1717, 1718, 5, 241, 0, 0, 1718, 1719, 5, 376, 0, 0, 1719, 1720, 3, 158, 79, 0, 1720, 1721, 5, 377, 0, 0, 1721, 1770, 1, 0, 0, 0, 1722, 1724, 5, 294, 0, 0, 1723, 1722, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1726, 5, 319, 0, 0, 1726, 1770, 3, 268, 134, 0, 1727, 1729, 5, 294, 0, 0, 1728, 1727, 1, 0, 0, 0, 1728, 1729, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1731, 5, 276, 0, 0, 1731, 1745, 7, 28, 0, 0, 1732, 1733, 5, 376, 0, 0, 1733, 1746, 5, 377, 0, 0, 1734, 1735, 5, 376, 0, 0, 1735, 1740, 3, 260, 130, 0, 1736, 1737, 5, 380, 0, 0, 1737, 1739, 3, 260, 130, 0, 1738, 1736, 1, 0, 0, 0, 1739, 1742, 1, 0, 0, 0, 1740, 1738, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1743, 1, 0, 0, 0, 1742, 1740, 1, 0, 0, 0, 1743, 1744, 5, 377, 0, 0, 1744, 1746, 1, 0, 0, 0, 1745, 1732, 1, 0, 0, 0, 1745, 1734, 1, 0, 0, 0, 1746, 1770, 1, 0, 0, 0, 1747, 1749, 5, 294, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1751, 5, 276, 0, 0, 1751, 1770, 3, 268, 134, 0, 1752, 1754, 5, 269, 0, 0, 1753, 1755, 5, 294, 0, 0, 1754, 1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1770, 5, 295, 0, 0, 1757, 1759, 5, 269, 0, 0, 1758, 1760, 5, 294, 0, 0, 1759, 1758, 1, 0, 0, 0, 1759, 1760, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1770, 7, 29, 0, 0, 1762, 1764, 5, 269, 0, 0, 1763, 1765, 5, 294, 0, 0, 1764, 1763, 1, 0, 0, 0, 1764, 1765, 1, 0, 0, 0, 1765, 1766, 1, 0, 0, 0, 1766, 1767, 5, 232, 0, 0, 1767, 1768, 5, 248, 0, 0, 1768, 1770, 3, 268, 134, 0, 1769, 1687, 1, 0, 0, 0, 1769, 1695, 1, 0, 0, 0, 1769, 1710, 1, 0, 0, 0, 1769, 1717, 1, 0, 0, 0, 1769, 1723, 1, 0, 0, 0, 1769, 1728, 1, 0, 0, 0, 1769, 1748, 1, 0, 0, 0, 1769, 1752, 1, 0, 0, 0, 1769, 1757, 1, 0, 0, 0, 1769, 1762, 1, 0, 0, 0, 1770, 265, 1, 0, 0, 0, 1771, 1773, 5, 294, 0, 0, 1772, 1771, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1775, 5, 276, 0, 0, 1775, 1789, 7, 28, 0, 0, 1776, 1777, 5, 376, 0, 0, 1777, 1790, 5, 377, 0, 0, 1778, 1779, 5, 376, 0, 0, 1779, 1784, 3, 260, 130, 0, 1780, 1781, 5, 380, 0, 0, 1781, 1783, 3, 260, 130, 0, 1782, 1780, 1, 0, 0, 0, 1783, 1786, 1, 0, 0, 0, 1784, 1782, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 1787, 1, 0, 0, 0, 1786, 1784, 1, 0, 0, 0, 1787, 1788, 5, 377, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1776, 1, 0, 0, 0, 1789, 1778, 1, 0, 0, 0, 1790, 1797, 1, 0, 0, 0, 1791, 1793, 5, 294, 0, 0, 1792, 1791, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 1794, 1, 0, 0, 0, 1794, 1795, 5, 276, 0, 0, 1795, 1797, 3, 268, 134, 0, 1796, 1772, 1, 0, 0, 0, 1796, 1792, 1, 0, 0, 0, 1797, 267, 1, 0, 0, 0, 1798, 1799, 6, 134, -1, 0, 1799, 1803, 3, 270, 135, 0, 1800, 1801, 7, 30, 0, 0, 1801, 1803, 3, 268, 134, 7, 1802, 1798, 1, 0, 0, 0, 1802, 1800, 1, 0, 0, 0, 1803, 1825, 1, 0, 0, 0, 1804, 1805, 10, 6, 0, 0, 1805, 1806, 7, 31, 0, 0, 1806, 1824, 3, 268, 134, 7, 1807, 1808, 10, 5, 0, 0, 1808, 1809, 7, 32, 0, 0, 1809, 1824, 3, 268, 134, 6, 1810, 1811, 10, 4, 0, 0, 1811, 1812, 5, 371, 0, 0, 1812, 1824, 3, 268, 134, 5, 1813, 1814, 10, 3, 0, 0, 1814, 1815, 5, 372, 0, 0, 1815, 1824, 3, 268, 134, 4, 1816, 1817, 10, 2, 0, 0, 1817, 1818, 5, 370, 0, 0, 1818, 1824, 3, 268, 134, 3, 1819, 1820, 10, 1, 0, 0, 1820, 1821, 3, 332, 166, 0, 1821, 1822, 3, 268, 134, 2, 1822, 1824, 1, 0, 0, 0, 1823, 1804, 1, 0, 0, 0, 1823, 1807, 1, 0, 0, 0, 1823, 1810, 1, 0, 0, 0, 1823, 1813, 1, 0, 0, 0, 1823, 1816, 1, 0, 0, 0, 1823, 1819, 1, 0, 0, 0, 1824, 1827, 1, 0, 0, 0, 1825, 1823, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 269, 1, 0, 0, 0, 1827, 1825, 1, 0, 0, 0, 1828, 1829, 6, 135, -1, 0, 1829, 1831, 5, 198, 0, 0, 1830, 1832, 3, 312, 156, 0, 1831, 1830, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 1831, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1837, 1, 0, 0, 0, 1835, 1836, 5, 236, 0, 0, 1836, 1838, 3, 260, 130, 0, 1837, 1835, 1, 0, 0, 0, 1837, 1838, 1, 0, 0, 0, 1838, 1839, 1, 0, 0, 0, 1839, 1840, 5, 237, 0, 0, 1840, 1920, 1, 0, 0, 0, 1841, 1842, 5, 198, 0, 0, 1842, 1844, 3, 260, 130, 0, 1843, 1845, 3, 312, 156, 0, 1844, 1843, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1844, 1, 0, 0, 0, 1846, 1847, 1, 0, 0, 0, 1847, 1850, 1, 0, 0, 0, 1848, 1849, 5, 236, 0, 0, 1849, 1851, 3, 260, 130, 0, 1850, 1848, 1, 0, 0, 0, 1850, 1851, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1853, 5, 237, 0, 0, 1853, 1920, 1, 0, 0, 0, 1854, 1855, 5, 199, 0, 0, 1855, 1856, 5, 376, 0, 0, 1856, 1857, 3, 260, 130, 0, 1857, 1858, 5, 183, 0, 0, 1858, 1859, 3, 54, 27, 0, 1859, 1860, 5, 377, 0, 0, 1860, 1920, 1, 0, 0, 0, 1861, 1862, 5, 44, 0, 0, 1862, 1863, 5, 376, 0, 0, 1863, 1866, 3, 260, 130, 0, 1864, 1865, 5, 59, 0, 0, 1865, 1867, 5, 86, 0, 0, 1866, 1864, 1, 0, 0, 0, 1866, 1867, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1869, 5, 377, 0, 0, 1869, 1920, 1, 0, 0, 0, 1870, 1871, 5, 72, 0, 0, 1871, 1872, 5, 376, 0, 0, 1872, 1875, 3, 260, 130, 0, 1873, 1874, 5, 59, 0, 0, 1874, 1876, 5, 86, 0, 0, 1875, 1873, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1877, 1, 0, 0, 0, 1877, 1878, 5, 377, 0, 0, 1878, 1920, 1, 0, 0, 0, 1879, 1880, 5, 312, 0, 0, 1880, 1881, 5, 376, 0, 0, 1881, 1882, 3, 268, 134, 0, 1882, 1883, 5, 259, 0, 0, 1883, 1884, 3, 268, 134, 0, 1884, 1885, 5, 377, 0, 0, 1885, 1920, 1, 0, 0, 0, 1886, 1920, 3, 340, 170, 0, 1887, 1920, 5, 387, 0, 0, 1888, 1889, 3, 314, 157, 0, 1889, 1890, 5, 373, 0, 0, 1890, 1891, 5, 387, 0, 0, 1891, 1920, 1, 0, 0, 0, 1892, 1893, 5, 376, 0, 0, 1893, 1894, 3, 158, 79, 0, 1894, 1895, 5, 377, 0, 0, 1895, 1920, 1, 0, 0, 0, 1896, 1897, 3, 272, 136, 0, 1897, 1909, 5, 376, 0, 0, 1898, 1900, 3, 348, 174, 0, 1899, 1898, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1901, 1, 0, 0, 0, 1901, 1906, 3, 260, 130, 0, 1902, 1903, 5, 380, 0, 0, 1903, 1905, 3, 260, 130, 0, 1904, 1902, 1, 0, 0, 0, 1905, 1908, 1, 0, 0, 0, 1906, 1904, 1, 0, 0, 0, 1906, 1907, 1, 0, 0, 0, 1907, 1910, 1, 0, 0, 0, 1908, 1906, 1, 0, 0, 0, 1909, 1899, 1, 0, 0, 0, 1909, 1910, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1912, 5, 377, 0, 0, 1912, 1920, 1, 0, 0, 0, 1913, 1920, 3, 306, 153, 0, 1914, 1920, 3, 274, 137, 0, 1915, 1916, 5, 376, 0, 0, 1916, 1917, 3, 260, 130, 0, 1917, 1918, 5, 377, 0, 0, 1918, 1920, 1, 0, 0, 0, 1919, 1828, 1, 0, 0, 0, 1919, 1841, 1, 0, 0, 0, 1919, 1854, 1, 0, 0, 0, 1919, 1861, 1, 0, 0, 0, 1919, 1870, 1, 0, 0, 0, 1919, 1879, 1, 0, 0, 0, 1919, 1886, 1, 0, 0, 0, 1919, 1887, 1, 0, 0, 0, 1919, 1888, 1, 0, 0, 0, 1919, 1892, 1, 0, 0, 0, 1919, 1896, 1, 0, 0, 0, 1919, 1913, 1, 0, 0, 0, 1919, 1914, 1, 0, 0, 0, 1919, 1915, 1, 0, 0, 0, 1920, 1928, 1, 0, 0, 0, 1921, 1922, 10, 4, 0, 0, 1922, 1923, 5, 374, 0, 0, 1923, 1924, 3, 268, 134, 0, 1924, 1925, 5, 375, 0, 0, 1925, 1927, 1, 0, 0, 0, 1926, 1921, 1, 0, 0, 0, 1927, 1930, 1, 0, 0, 0, 1928, 1926, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 271, 1, 0, 0, 0, 1930, 1928, 1, 0, 0, 0, 1931, 1935, 3, 350, 175, 0, 1932, 1935, 3, 352, 176, 0, 1933, 1935, 3, 314, 157, 0, 1934, 1931, 1, 0, 0, 0, 1934, 1932, 1, 0, 0, 0, 1934, 1933, 1, 0, 0, 0, 1935, 273, 1, 0, 0, 0, 1936, 1937, 3, 314, 157, 0, 1937, 275, 1, 0, 0, 0, 1938, 1939, 3, 306, 153, 0, 1939, 277, 1, 0, 0, 0, 1940, 1943, 3, 306, 153, 0, 1941, 1943, 3, 274, 137, 0, 1942, 1940, 1, 0, 0, 0, 1942, 1941, 1, 0, 0, 0, 1943, 279, 1, 0, 0, 0, 1944, 1947, 5, 267, 0, 0, 1945, 1948, 3, 282, 141, 0, 1946, 1948, 3, 286, 143, 0, 1947, 1945, 1, 0, 0, 0, 1947, 1946, 1, 0, 0, 0, 1947, 1948, 1, 0, 0, 0, 1948, 281, 1, 0, 0, 0, 1949, 1951, 3, 284, 142, 0, 1950, 1952, 3, 288, 144, 0, 1951, 1950, 1, 0, 0, 0, 1951, 1952, 1, 0, 0, 0, 1952, 283, 1, 0, 0, 0, 1953, 1954, 3, 290, 145, 0, 1954, 1955, 3, 292, 146, 0, 1955, 1957, 1, 0, 0, 0, 1956, 1953, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1956, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 285, 1, 0, 0, 0, 1960, 1963, 3, 288, 144, 0, 1961, 1964, 3, 284, 142, 0, 1962, 1964, 3, 288, 144, 0, 1963, 1961, 1, 0, 0, 0, 1963, 1962, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 287, 1, 0, 0, 0, 1965, 1966, 3, 290, 145, 0, 1966, 1967, 3, 292, 146, 0, 1967, 1968, 5, 343, 0, 0, 1968, 1969, 3, 292, 146, 0, 1969, 289, 1, 0, 0, 0, 1970, 1972, 7, 33, 0, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1976, 7, 34, 0, 0, 1974, 1976, 5, 397, 0, 0, 1975, 1971, 1, 0, 0, 0, 1975, 1974, 1, 0, 0, 0, 1976, 291, 1, 0, 0, 0, 1977, 1980, 3, 306, 153, 0, 1978, 1980, 3, 350, 175, 0, 1979, 1977, 1, 0, 0, 0, 1979, 1978, 1, 0, 0, 0, 1980, 293, 1, 0, 0, 0, 1981, 1983, 5, 183, 0, 0, 1982, 1981, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 1984, 1, 0, 0, 0, 1984, 1986, 3, 306, 153, 0, 1985, 1987, 3, 302, 151, 0, 1986, 1985, 1, 0, 0, 0, 1986, 1987, 1, 0, 0, 0, 1987, 295, 1, 0, 0, 0, 1988, 1990, 5, 183, 0, 0, 1989, 1988, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1993, 3, 306, 153, 0, 1992, 1994, 3, 302, 151, 0, 1993, 1992, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 297, 1, 0, 0, 0, 1995, 1996, 3, 306, 153, 0, 1996, 1997, 3, 300, 150, 0, 1997, 299, 1, 0, 0, 0, 1998, 1999, 5, 284, 0, 0, 1999, 2001, 3, 306, 153, 0, 2000, 1998, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2006, 1, 0, 0, 0, 2004, 2006, 1, 0, 0, 0, 2005, 2000, 1, 0, 0, 0, 2005, 2004, 1, 0, 0, 0, 2006, 301, 1, 0, 0, 0, 2007, 2008, 5, 376, 0, 0, 2008, 2009, 3, 304, 152, 0, 2009, 2010, 5, 377, 0, 0, 2010, 303, 1, 0, 0, 0, 2011, 2016, 3, 306, 153, 0, 2012, 2013, 5, 380, 0, 0, 2013, 2015, 3, 306, 153, 0, 2014, 2012, 1, 0, 0, 0, 2015, 2018, 1, 0, 0, 0, 2016, 2014, 1, 0, 0, 0, 2016, 2017, 1, 0, 0, 0, 2017, 305, 1, 0, 0, 0, 2018, 2016, 1, 0, 0, 0, 2019, 2023, 3, 308, 154, 0, 2020, 2023, 3, 310, 155, 0, 2021, 2023, 3, 352, 176, 0, 2022, 2019, 1, 0, 0, 0, 2022, 2020, 1, 0, 0, 0, 2022, 2021, 1, 0, 0, 0, 2023, 307, 1, 0, 0, 0, 2024, 2025, 7, 35, 0, 0, 2025, 309, 1, 0, 0, 0, 2026, 2027, 5, 397, 0, 0, 2027, 311, 1, 0, 0, 0, 2028, 2029, 5, 358, 0, 0, 2029, 2030, 3, 260, 130, 0, 2030, 2031, 5, 339, 0, 0, 2031, 2032, 3, 260, 130, 0, 2032, 313, 1, 0, 0, 0, 2033, 2038, 3, 306, 153, 0, 2034, 2035, 5, 373, 0, 0, 2035, 2037, 3, 306, 153, 0, 2036, 2034, 1, 0, 0, 0, 2037, 2040, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2038, 2036, 1, 0, 0, 0, 2039, 315, 1, 0, 0, 0, 2040, 2038, 1, 0, 0, 0, 2041, 2042, 5, 361, 0, 0, 2042, 2043, 3, 322, 161, 0, 2043, 317, 1, 0, 0, 0, 2044, 2045, 5, 58, 0, 0, 2045, 2046, 5, 294, 0, 0, 2046, 2047, 5, 241, 0, 0, 2047, 319, 1, 0, 0, 0, 2048, 2049, 5, 58, 0, 0, 2049, 2050, 5, 241, 0, 0, 2050, 321, 1, 0, 0, 0, 2051, 2052, 5, 376, 0, 0, 2052, 2057, 3, 324, 162, 0, 2053, 2054, 5, 380, 0, 0, 2054, 2056, 3, 324, 162, 0, 2055, 2053, 1, 0, 0, 0, 2056, 2059, 1, 0, 0, 0, 2057, 2055, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2060, 1, 0, 0, 0, 2059, 2057, 1, 0, 0, 0, 2060, 2061, 5, 377, 0, 0, 2061, 323, 1, 0, 0, 0, 2062, 2067, 3, 326, 163, 0, 2063, 2065, 5, 365, 0, 0, 2064, 2063, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2066, 1, 0, 0, 0, 2066, 2068, 3, 328, 164, 0, 2067, 2064, 1, 0, 0, 0, 2067, 2068, 1, 0, 0, 0, 2068, 325, 1, 0, 0, 0, 2069, 2073, 3, 306, 153, 0, 2070, 2073, 3, 274, 137, 0, 2071, 2073, 5, 397, 0, 0, 2072, 2069, 1, 0, 0, 0, 2072, 2070, 1, 0, 0, 0, 2072, 2071, 1, 0, 0, 0, 2073, 327, 1, 0, 0, 0, 2074, 2079, 5, 398, 0, 0, 2075, 2079, 5, 399, 0, 0, 2076, 2079, 3, 346, 173, 0, 2077, 2079, 5, 397, 0, 0, 2078, 2074, 1, 0, 0, 0, 2078, 2075, 1, 0, 0, 0, 2078, 2076, 1, 0, 0, 0, 2078, 2077, 1, 0, 0, 0, 2079, 329, 1, 0, 0, 0, 2080, 2087, 5, 179, 0, 0, 2081, 2082, 5, 371, 0, 0, 2082, 2087, 5, 371, 0, 0, 2083, 2087, 5, 301, 0, 0, 2084, 2085, 5, 370, 0, 0, 2085, 2087, 5, 370, 0, 0, 2086, 2080, 1, 0, 0, 0, 2086, 2081, 1, 0, 0, 0, 2086, 2083, 1, 0, 0, 0, 2086, 2084, 1, 0, 0, 0, 2087, 331, 1, 0, 0, 0, 2088, 2103, 5, 365, 0, 0, 2089, 2103, 5, 366, 0, 0, 2090, 2103, 5, 367, 0, 0, 2091, 2092, 5, 367, 0, 0, 2092, 2103, 5, 365, 0, 0, 2093, 2094, 5, 366, 0, 0, 2094, 2103, 5, 365, 0, 0, 2095, 2096, 5, 367, 0, 0, 2096, 2103, 5, 366, 0, 0, 2097, 2098, 5, 368, 0, 0, 2098, 2103, 5, 365, 0, 0, 2099, 2100, 5, 367, 0, 0, 2100, 2101, 5, 365, 0, 0, 2101, 2103, 5, 366, 0, 0, 2102, 2088, 1, 0, 0, 0, 2102, 2089, 1, 0, 0, 0, 2102, 2090, 1, 0, 0, 0, 2102, 2091, 1, 0, 0, 0, 2102, 2093, 1, 0, 0, 0, 2102, 2095, 1, 0, 0, 0, 2102, 2097, 1, 0, 0, 0, 2102, 2099, 1, 0, 0, 0, 2103, 333, 1, 0, 0, 0, 2104, 2105, 5, 367, 0, 0, 2105, 2112, 5, 367, 0, 0, 2106, 2107, 5, 366, 0, 0, 2107, 2112, 5, 366, 0, 0, 2108, 2112, 5, 371, 0, 0, 2109, 2112, 5, 372, 0, 0, 2110, 2112, 5, 370, 0, 0, 2111, 2104, 1, 0, 0, 0, 2111, 2106, 1, 0, 0, 0, 2111, 2108, 1, 0, 0, 0, 2111, 2109, 1, 0, 0, 0, 2111, 2110, 1, 0, 0, 0, 2112, 335, 1, 0, 0, 0, 2113, 2114, 7, 36, 0, 0, 2114, 337, 1, 0, 0, 0, 2115, 2116, 7, 37, 0, 0, 2116, 339, 1, 0, 0, 0, 2117, 2130, 3, 342, 171, 0, 2118, 2130, 3, 344, 172, 0, 2119, 2130, 3, 280, 140, 0, 2120, 2121, 5, 389, 0, 0, 2121, 2130, 3, 344, 172, 0, 2122, 2130, 3, 346, 173, 0, 2123, 2130, 5, 399, 0, 0, 2124, 2130, 5, 400, 0, 0, 2125, 2127, 5, 294, 0, 0, 2126, 2125, 1, 0, 0, 0, 2126, 2127, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2130, 5, 295, 0, 0, 2129, 2117, 1, 0, 0, 0, 2129, 2118, 1, 0, 0, 0, 2129, 2119, 1, 0, 0, 0, 2129, 2120, 1, 0, 0, 0, 2129, 2122, 1, 0, 0, 0, 2129, 2123, 1, 0, 0, 0, 2129, 2124, 1, 0, 0, 0, 2129, 2126, 1, 0, 0, 0, 2130, 341, 1, 0, 0, 0, 2131, 2132, 5, 397, 0, 0, 2132, 343, 1, 0, 0, 0, 2133, 2134, 5, 398, 0, 0, 2134, 345, 1, 0, 0, 0, 2135, 2136, 7, 29, 0, 0, 2136, 347, 1, 0, 0, 0, 2137, 2138, 7, 38, 0, 0, 2138, 349, 1, 0, 0, 0, 2139, 2140, 7, 39, 0, 0, 2140, 351, 1, 0, 0, 0, 2141, 2142, 7, 40, 0, 0, 2142, 353, 1, 0, 0, 0, 248, 362, 365, 367, 382, 400, 404, 413, 418, 425, 432, 436, 445, 457, 460, 467, 475, 480, 483, 490, 498, 502, 514, 522, 526, 547, 551, 555, 559, 568, 573, 577, 581, 585, 588, 592, 597, 603, 608, 613, 616, 620, 628, 636, 640, 644, 648, 652, 656, 660, 664, 668, 670, 680, 688, 712, 719, 725, 728, 731, 741, 744, 752, 764, 788, 801, 806, 810, 818, 822, 830, 840, 844, 850, 854, 858, 861, 870, 874, 881, 884, 894, 902, 910, 914, 929, 948, 959, 963, 970, 975, 981, 985, 992, 996, 1000, 1004, 1012, 1016, 1021, 1027, 1033, 1036, 1040, 1051, 1060, 1074, 1086, 1101, 1104, 1108, 1111, 1113, 1118, 1122, 1125, 1129, 1138, 1147, 1157, 1162, 1174, 1177, 1180, 1183, 1189, 1193, 1201, 1204, 1209, 1212, 1214, 1228, 1239, 1244, 1252, 1255, 1258, 1263, 1265, 1267, 1272, 1275, 1279, 1282, 1285, 1297, 1304, 1315, 1344, 1366, 1384, 1389, 1401, 1414, 1426, 1438, 1443, 1470, 1478, 1482, 1485, 1488, 1495, 1498, 1501, 1504, 1507, 1510, 1515, 1518, 1527, 1532, 1536, 1541, 1550, 1569, 1577, 1585, 1589, 1593, 1603, 1629, 1637, 1649, 1671, 1673, 1681, 1683, 1687, 1695, 1704, 1710, 1723, 1728, 1740, 1745, 1748, 1754, 1759, 1764, 1769, 1772, 1784, 1789, 1792, 1796, 1802, 1823, 1825, 1833, 1837, 1846, 1850, 1866, 1875, 1899, 1906, 1909, 1919, 1928, 1934, 1942, 1947, 1951, 1958, 1963, 1971, 1975, 1979, 1982, 1986, 1989, 1993, 2002, 2005, 2016, 2022, 2038, 2057, 2064, 2067, 2072, 2078, 2086, 2102, 2111, 2126, 2129] \ No newline at end of file diff --git a/src/lib/flinksql/FlinkSqlParser.ts b/src/lib/flinksql/FlinkSqlParser.ts index 692614a..13b911b 100644 --- a/src/lib/flinksql/FlinkSqlParser.ts +++ b/src/lib/flinksql/FlinkSqlParser.ts @@ -1,4 +1,4 @@ -// Generated from /Users/mortalYoung/Projects/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0 +// Generated from /Users/zhenglin/Documents/parser/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { @@ -499,105 +499,106 @@ export default class FlinkSqlParser extends Parser { public static readonly RULE_insertPartitionDefinition = 74; public static readonly RULE_valuesDefinition = 75; public static readonly RULE_valuesRowDefinition = 76; - public static readonly RULE_insertMulStatement = 77; - public static readonly RULE_queryStatement = 78; - public static readonly RULE_valuesCaluse = 79; - public static readonly RULE_withClause = 80; - public static readonly RULE_withItem = 81; - public static readonly RULE_withItemName = 82; - public static readonly RULE_selectStatement = 83; - public static readonly RULE_selectClause = 84; - public static readonly RULE_projectItemDefinition = 85; - public static readonly RULE_overWindowItem = 86; - public static readonly RULE_fromClause = 87; - public static readonly RULE_tableExpression = 88; - public static readonly RULE_tableReference = 89; - public static readonly RULE_tablePrimary = 90; - public static readonly RULE_tablePath = 91; - public static readonly RULE_systemTimePeriod = 92; - public static readonly RULE_dateTimeExpression = 93; - public static readonly RULE_inlineDataValueClause = 94; - public static readonly RULE_windoTVFClause = 95; - public static readonly RULE_windowTVFExression = 96; - public static readonly RULE_windoTVFName = 97; - public static readonly RULE_windowTVFParam = 98; - public static readonly RULE_timeIntervalParamName = 99; - public static readonly RULE_columnDescriptor = 100; - public static readonly RULE_joinCondition = 101; - public static readonly RULE_whereClause = 102; - public static readonly RULE_groupByClause = 103; - public static readonly RULE_groupItemDefinition = 104; - public static readonly RULE_groupingSets = 105; - public static readonly RULE_groupingSetsNotaionName = 106; - public static readonly RULE_groupWindowFunction = 107; - public static readonly RULE_groupWindowFunctionName = 108; - public static readonly RULE_timeAttrColumn = 109; - public static readonly RULE_havingClause = 110; - public static readonly RULE_windowClause = 111; - public static readonly RULE_namedWindow = 112; - public static readonly RULE_windowSpec = 113; - public static readonly RULE_matchRecognizeClause = 114; - public static readonly RULE_orderByCaluse = 115; - public static readonly RULE_orderItemDefition = 116; - public static readonly RULE_limitClause = 117; - public static readonly RULE_partitionByClause = 118; - public static readonly RULE_quantifiers = 119; - public static readonly RULE_measuresClause = 120; - public static readonly RULE_patternDefination = 121; - public static readonly RULE_patternVariable = 122; - public static readonly RULE_outputMode = 123; - public static readonly RULE_afterMatchStrategy = 124; - public static readonly RULE_patternVariablesDefination = 125; - public static readonly RULE_windowFrame = 126; - public static readonly RULE_frameBound = 127; - public static readonly RULE_withinClause = 128; - public static readonly RULE_expression = 129; - public static readonly RULE_booleanExpression = 130; - public static readonly RULE_predicate = 131; - public static readonly RULE_likePredicate = 132; - public static readonly RULE_valueExpression = 133; - public static readonly RULE_primaryExpression = 134; - public static readonly RULE_functionName = 135; - public static readonly RULE_dereferenceDefinition = 136; - public static readonly RULE_correlationName = 137; - public static readonly RULE_qualifiedName = 138; - public static readonly RULE_timeIntervalExpression = 139; - public static readonly RULE_errorCapturingMultiUnitsInterval = 140; - public static readonly RULE_multiUnitsInterval = 141; - public static readonly RULE_errorCapturingUnitToUnitInterval = 142; - public static readonly RULE_unitToUnitInterval = 143; - public static readonly RULE_intervalValue = 144; - public static readonly RULE_intervalTimeUnit = 145; - public static readonly RULE_columnAlias = 146; - public static readonly RULE_tableAlias = 147; - public static readonly RULE_errorCapturingIdentifier = 148; - public static readonly RULE_errorCapturingIdentifierExtra = 149; - public static readonly RULE_identifierList = 150; - public static readonly RULE_identifierSeq = 151; - public static readonly RULE_identifier = 152; - public static readonly RULE_unquotedIdentifier = 153; - public static readonly RULE_quotedIdentifier = 154; - public static readonly RULE_whenClause = 155; - public static readonly RULE_uid = 156; - public static readonly RULE_withOption = 157; - public static readonly RULE_ifNotExists = 158; - public static readonly RULE_ifExists = 159; - public static readonly RULE_tablePropertyList = 160; - public static readonly RULE_tableProperty = 161; - public static readonly RULE_tablePropertyKey = 162; - public static readonly RULE_tablePropertyValue = 163; - public static readonly RULE_logicalOperator = 164; - public static readonly RULE_comparisonOperator = 165; - public static readonly RULE_bitOperator = 166; - public static readonly RULE_mathOperator = 167; - public static readonly RULE_unaryOperator = 168; - public static readonly RULE_constant = 169; - public static readonly RULE_stringLiteral = 170; - public static readonly RULE_decimalLiteral = 171; - public static readonly RULE_booleanLiteral = 172; - public static readonly RULE_setQuantifier = 173; - public static readonly RULE_reservedKeywords = 174; - public static readonly RULE_nonReservedKeywords = 175; + public static readonly RULE_insertMulStatementCompatibility = 77; + public static readonly RULE_insertMulStatement = 78; + public static readonly RULE_queryStatement = 79; + public static readonly RULE_valuesCaluse = 80; + public static readonly RULE_withClause = 81; + public static readonly RULE_withItem = 82; + public static readonly RULE_withItemName = 83; + public static readonly RULE_selectStatement = 84; + public static readonly RULE_selectClause = 85; + public static readonly RULE_projectItemDefinition = 86; + public static readonly RULE_overWindowItem = 87; + public static readonly RULE_fromClause = 88; + public static readonly RULE_tableExpression = 89; + public static readonly RULE_tableReference = 90; + public static readonly RULE_tablePrimary = 91; + public static readonly RULE_tablePath = 92; + public static readonly RULE_systemTimePeriod = 93; + public static readonly RULE_dateTimeExpression = 94; + public static readonly RULE_inlineDataValueClause = 95; + public static readonly RULE_windoTVFClause = 96; + public static readonly RULE_windowTVFExression = 97; + public static readonly RULE_windoTVFName = 98; + public static readonly RULE_windowTVFParam = 99; + public static readonly RULE_timeIntervalParamName = 100; + public static readonly RULE_columnDescriptor = 101; + public static readonly RULE_joinCondition = 102; + public static readonly RULE_whereClause = 103; + public static readonly RULE_groupByClause = 104; + public static readonly RULE_groupItemDefinition = 105; + public static readonly RULE_groupingSets = 106; + public static readonly RULE_groupingSetsNotaionName = 107; + public static readonly RULE_groupWindowFunction = 108; + public static readonly RULE_groupWindowFunctionName = 109; + public static readonly RULE_timeAttrColumn = 110; + public static readonly RULE_havingClause = 111; + public static readonly RULE_windowClause = 112; + public static readonly RULE_namedWindow = 113; + public static readonly RULE_windowSpec = 114; + public static readonly RULE_matchRecognizeClause = 115; + public static readonly RULE_orderByCaluse = 116; + public static readonly RULE_orderItemDefition = 117; + public static readonly RULE_limitClause = 118; + public static readonly RULE_partitionByClause = 119; + public static readonly RULE_quantifiers = 120; + public static readonly RULE_measuresClause = 121; + public static readonly RULE_patternDefination = 122; + public static readonly RULE_patternVariable = 123; + public static readonly RULE_outputMode = 124; + public static readonly RULE_afterMatchStrategy = 125; + public static readonly RULE_patternVariablesDefination = 126; + public static readonly RULE_windowFrame = 127; + public static readonly RULE_frameBound = 128; + public static readonly RULE_withinClause = 129; + public static readonly RULE_expression = 130; + public static readonly RULE_booleanExpression = 131; + public static readonly RULE_predicate = 132; + public static readonly RULE_likePredicate = 133; + public static readonly RULE_valueExpression = 134; + public static readonly RULE_primaryExpression = 135; + public static readonly RULE_functionName = 136; + public static readonly RULE_dereferenceDefinition = 137; + public static readonly RULE_correlationName = 138; + public static readonly RULE_qualifiedName = 139; + public static readonly RULE_timeIntervalExpression = 140; + public static readonly RULE_errorCapturingMultiUnitsInterval = 141; + public static readonly RULE_multiUnitsInterval = 142; + public static readonly RULE_errorCapturingUnitToUnitInterval = 143; + public static readonly RULE_unitToUnitInterval = 144; + public static readonly RULE_intervalValue = 145; + public static readonly RULE_intervalTimeUnit = 146; + public static readonly RULE_columnAlias = 147; + public static readonly RULE_tableAlias = 148; + public static readonly RULE_errorCapturingIdentifier = 149; + public static readonly RULE_errorCapturingIdentifierExtra = 150; + public static readonly RULE_identifierList = 151; + public static readonly RULE_identifierSeq = 152; + public static readonly RULE_identifier = 153; + public static readonly RULE_unquotedIdentifier = 154; + public static readonly RULE_quotedIdentifier = 155; + public static readonly RULE_whenClause = 156; + public static readonly RULE_uid = 157; + public static readonly RULE_withOption = 158; + public static readonly RULE_ifNotExists = 159; + public static readonly RULE_ifExists = 160; + public static readonly RULE_tablePropertyList = 161; + public static readonly RULE_tableProperty = 162; + public static readonly RULE_tablePropertyKey = 163; + public static readonly RULE_tablePropertyValue = 164; + public static readonly RULE_logicalOperator = 165; + public static readonly RULE_comparisonOperator = 166; + public static readonly RULE_bitOperator = 167; + public static readonly RULE_mathOperator = 168; + public static readonly RULE_unaryOperator = 169; + public static readonly RULE_constant = 170; + public static readonly RULE_stringLiteral = 171; + public static readonly RULE_decimalLiteral = 172; + public static readonly RULE_booleanLiteral = 173; + public static readonly RULE_setQuantifier = 174; + public static readonly RULE_reservedKeywords = 175; + public static readonly RULE_nonReservedKeywords = 176; public static readonly literalNames: (string | null)[] = [ null, null, null, null, "'ADD'", "'ADMIN'", @@ -1255,24 +1256,24 @@ export default class FlinkSqlParser extends Parser { "addUnique", "notForced", "alertView", "alterDatabase", "alterFunction", "dropCatalog", "dropTable", "dropDatabase", "dropView", "dropFunction", "insertStatement", "insertSimpleStatement", "insertPartitionDefinition", - "valuesDefinition", "valuesRowDefinition", "insertMulStatement", "queryStatement", - "valuesCaluse", "withClause", "withItem", "withItemName", "selectStatement", - "selectClause", "projectItemDefinition", "overWindowItem", "fromClause", - "tableExpression", "tableReference", "tablePrimary", "tablePath", "systemTimePeriod", - "dateTimeExpression", "inlineDataValueClause", "windoTVFClause", "windowTVFExression", - "windoTVFName", "windowTVFParam", "timeIntervalParamName", "columnDescriptor", - "joinCondition", "whereClause", "groupByClause", "groupItemDefinition", - "groupingSets", "groupingSetsNotaionName", "groupWindowFunction", "groupWindowFunctionName", - "timeAttrColumn", "havingClause", "windowClause", "namedWindow", "windowSpec", - "matchRecognizeClause", "orderByCaluse", "orderItemDefition", "limitClause", - "partitionByClause", "quantifiers", "measuresClause", "patternDefination", - "patternVariable", "outputMode", "afterMatchStrategy", "patternVariablesDefination", - "windowFrame", "frameBound", "withinClause", "expression", "booleanExpression", - "predicate", "likePredicate", "valueExpression", "primaryExpression", - "functionName", "dereferenceDefinition", "correlationName", "qualifiedName", - "timeIntervalExpression", "errorCapturingMultiUnitsInterval", "multiUnitsInterval", - "errorCapturingUnitToUnitInterval", "unitToUnitInterval", "intervalValue", - "intervalTimeUnit", "columnAlias", "tableAlias", "errorCapturingIdentifier", + "valuesDefinition", "valuesRowDefinition", "insertMulStatementCompatibility", + "insertMulStatement", "queryStatement", "valuesCaluse", "withClause", + "withItem", "withItemName", "selectStatement", "selectClause", "projectItemDefinition", + "overWindowItem", "fromClause", "tableExpression", "tableReference", "tablePrimary", + "tablePath", "systemTimePeriod", "dateTimeExpression", "inlineDataValueClause", + "windoTVFClause", "windowTVFExression", "windoTVFName", "windowTVFParam", + "timeIntervalParamName", "columnDescriptor", "joinCondition", "whereClause", + "groupByClause", "groupItemDefinition", "groupingSets", "groupingSetsNotaionName", + "groupWindowFunction", "groupWindowFunctionName", "timeAttrColumn", "havingClause", + "windowClause", "namedWindow", "windowSpec", "matchRecognizeClause", "orderByCaluse", + "orderItemDefition", "limitClause", "partitionByClause", "quantifiers", + "measuresClause", "patternDefination", "patternVariable", "outputMode", + "afterMatchStrategy", "patternVariablesDefination", "windowFrame", "frameBound", + "withinClause", "expression", "booleanExpression", "predicate", "likePredicate", + "valueExpression", "primaryExpression", "functionName", "dereferenceDefinition", + "correlationName", "qualifiedName", "timeIntervalExpression", "errorCapturingMultiUnitsInterval", + "multiUnitsInterval", "errorCapturingUnitToUnitInterval", "unitToUnitInterval", + "intervalValue", "intervalTimeUnit", "columnAlias", "tableAlias", "errorCapturingIdentifier", "errorCapturingIdentifierExtra", "identifierList", "identifierSeq", "identifier", "unquotedIdentifier", "quotedIdentifier", "whenClause", "uid", "withOption", "ifNotExists", "ifExists", "tablePropertyList", "tableProperty", "tablePropertyKey", @@ -1301,9 +1302,9 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 352; + this.state = 354; this.statement(); - this.state = 353; + this.state = 355; this.match(FlinkSqlParser.EOF); } } @@ -1328,9 +1329,9 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 355; + this.state = 357; this.sqlStatements(); - this.state = 356; + this.state = 358; this.match(FlinkSqlParser.EOF); } } @@ -1356,12 +1357,12 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 365; + this.state = 367; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===4 || _la===30 || _la===75 || _la===117 || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 1048581) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 84180993) !== 0) || _la===263 || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & 3585) !== 0) || ((((_la - 355)) & ~0x1F) === 0 && ((1 << (_la - 355)) & 69206081) !== 0)) { + while (_la===4 || _la===30 || _la===75 || _la===117 || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 269484037) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 84180993) !== 0) || _la===263 || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & 3585) !== 0) || ((((_la - 355)) & ~0x1F) === 0 && ((1 << (_la - 355)) & 69206081) !== 0)) { { - this.state = 363; + this.state = 365; this._errHandler.sync(this); switch (this._input.LA(1)) { case 4: @@ -1371,6 +1372,7 @@ export default class FlinkSqlParser extends Parser { case 158: case 160: case 178: + case 186: case 216: case 231: case 234: @@ -1385,14 +1387,14 @@ export default class FlinkSqlParser extends Parser { case 361: case 376: { - this.state = 358; - this.sqlStatement(); this.state = 360; + this.sqlStatement(); + this.state = 362; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 0, this._ctx) ) { case 1: { - this.state = 359; + this.state = 361; this.match(FlinkSqlParser.SEMICOLON); } break; @@ -1401,7 +1403,7 @@ export default class FlinkSqlParser extends Parser { break; case 381: { - this.state = 362; + this.state = 364; this.emptyStatement(); } break; @@ -1409,7 +1411,7 @@ export default class FlinkSqlParser extends Parser { throw new NoViableAltException(this); } } - this.state = 367; + this.state = 369; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -1434,90 +1436,90 @@ export default class FlinkSqlParser extends Parser { let localctx: SqlStatementContext = new SqlStatementContext(this, this._ctx, this.state); this.enterRule(localctx, 6, FlinkSqlParser.RULE_sqlStatement); try { - this.state = 380; + this.state = 382; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 3, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 368; + this.state = 370; this.ddlStatement(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 369; + this.state = 371; this.dmlStatement(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 370; + this.state = 372; this.describeStatement(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 371; + this.state = 373; this.explainStatement(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 372; + this.state = 374; this.useStatement(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 373; + this.state = 375; this.showStatememt(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 374; + this.state = 376; this.loadStatement(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 375; + this.state = 377; this.unloadStatememt(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 376; + this.state = 378; this.setStatememt(); } break; case 10: this.enterOuterAlt(localctx, 10); { - this.state = 377; + this.state = 379; this.resetStatememt(); } break; case 11: this.enterOuterAlt(localctx, 11); { - this.state = 378; + this.state = 380; this.jarStatememt(); } break; case 12: this.enterOuterAlt(localctx, 12); { - this.state = 379; + this.state = 381; this.dtAddStatement(); } break; @@ -1544,7 +1546,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 382; + this.state = 384; this.match(FlinkSqlParser.SEMICOLON); } } @@ -1567,104 +1569,104 @@ export default class FlinkSqlParser extends Parser { let localctx: DdlStatementContext = new DdlStatementContext(this, this._ctx, this.state); this.enterRule(localctx, 10, FlinkSqlParser.RULE_ddlStatement); try { - this.state = 398; + this.state = 400; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 4, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 384; + this.state = 386; this.createTable(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 385; + this.state = 387; this.createDatabase(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 386; + this.state = 388; this.createView(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 387; + this.state = 389; this.createFunction(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 388; + this.state = 390; this.createCatalog(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 389; + this.state = 391; this.alterTable(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 390; + this.state = 392; this.alertView(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 391; + this.state = 393; this.alterDatabase(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 392; + this.state = 394; this.alterFunction(); } break; case 10: this.enterOuterAlt(localctx, 10); { - this.state = 393; + this.state = 395; this.dropCatalog(); } break; case 11: this.enterOuterAlt(localctx, 11); { - this.state = 394; + this.state = 396; this.dropTable(); } break; case 12: this.enterOuterAlt(localctx, 12); { - this.state = 395; + this.state = 397; this.dropDatabase(); } break; case 13: this.enterOuterAlt(localctx, 13); { - this.state = 396; + this.state = 398; this.dropView(); } break; case 14: this.enterOuterAlt(localctx, 14); { - this.state = 397; + this.state = 399; this.dropFunction(); } break; @@ -1689,7 +1691,7 @@ export default class FlinkSqlParser extends Parser { let localctx: DmlStatementContext = new DmlStatementContext(this, this._ctx, this.state); this.enterRule(localctx, 12, FlinkSqlParser.RULE_dmlStatement); try { - this.state = 402; + this.state = 404; this._errHandler.sync(this); switch (this._input.LA(1)) { case 325: @@ -1698,15 +1700,16 @@ export default class FlinkSqlParser extends Parser { case 376: this.enterOuterAlt(localctx, 1); { - this.state = 400; + this.state = 402; this.queryStatement(0); } break; + case 186: case 240: case 263: this.enterOuterAlt(localctx, 2); { - this.state = 401; + this.state = 403; this.insertStatement(); } break; @@ -1736,7 +1739,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 404; + this.state = 406; _la = this._input.LA(1); if(!(_la===30 || _la===231)) { this._errHandler.recoverInline(this); @@ -1745,7 +1748,7 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 405; + this.state = 407; this.uid(); } } @@ -1770,28 +1773,29 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 407; + this.state = 409; this.match(FlinkSqlParser.KW_EXPLAIN); - this.state = 411; + this.state = 413; this._errHandler.sync(this); switch (this._input.LA(1)) { case 16: case 37: case 67: { - this.state = 408; + this.state = 410; this.explainDetails(); } break; case 100: { - this.state = 409; + this.state = 411; this.match(FlinkSqlParser.KW_PLAN); - this.state = 410; + this.state = 412; this.match(FlinkSqlParser.KW_FOR); } break; case 143: + case 186: case 240: case 263: case 325: @@ -1802,24 +1806,24 @@ export default class FlinkSqlParser extends Parser { default: break; } - this.state = 416; + this.state = 418; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { case 1: { - this.state = 413; + this.state = 415; this.dmlStatement(); } break; case 2: { - this.state = 414; + this.state = 416; this.insertSimpleStatement(); } break; case 3: { - this.state = 415; + this.state = 417; this.insertMulStatement(); } break; @@ -1848,21 +1852,21 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 418; + this.state = 420; this.explainDetail(); - this.state = 423; + this.state = 425; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 419; + this.state = 421; this.match(FlinkSqlParser.COMMA); - this.state = 420; + this.state = 422; this.explainDetail(); } } - this.state = 425; + this.state = 427; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -1890,7 +1894,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 426; + this.state = 428; _la = this._input.LA(1); if(!(_la===16 || _la===37 || _la===67)) { this._errHandler.recoverInline(this); @@ -1920,32 +1924,32 @@ export default class FlinkSqlParser extends Parser { let localctx: UseStatementContext = new UseStatementContext(this, this._ctx, this.state); this.enterRule(localctx, 22, FlinkSqlParser.RULE_useStatement); try { - this.state = 434; + this.state = 436; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 10, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 428; - this.match(FlinkSqlParser.KW_USE); this.state = 430; + this.match(FlinkSqlParser.KW_USE); + this.state = 432; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 9, this._ctx) ) { case 1: { - this.state = 429; + this.state = 431; this.match(FlinkSqlParser.KW_CATALOG); } break; } - this.state = 432; + this.state = 434; this.uid(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 433; + this.state = 435; this.useModuleStatement(); } break; @@ -1973,25 +1977,25 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 436; - this.match(FlinkSqlParser.KW_USE); - this.state = 437; - this.match(FlinkSqlParser.KW_MODULES); this.state = 438; + this.match(FlinkSqlParser.KW_USE); + this.state = 439; + this.match(FlinkSqlParser.KW_MODULES); + this.state = 440; this.uid(); - this.state = 443; + this.state = 445; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 439; + this.state = 441; this.match(FlinkSqlParser.COMMA); - this.state = 440; + this.state = 442; this.uid(); } } - this.state = 445; + this.state = 447; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -2017,15 +2021,15 @@ export default class FlinkSqlParser extends Parser { this.enterRule(localctx, 26, FlinkSqlParser.RULE_showStatememt); let _la: number; try { - this.state = 481; + this.state = 483; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 17, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 446; + this.state = 448; this.match(FlinkSqlParser.KW_SHOW); - this.state = 447; + this.state = 449; _la = this._input.LA(1); if(!(_la===13 || _la===26 || _la===64 || _la===166)) { this._errHandler.recoverInline(this); @@ -2039,11 +2043,11 @@ export default class FlinkSqlParser extends Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 448; - this.match(FlinkSqlParser.KW_SHOW); - this.state = 449; - this.match(FlinkSqlParser.KW_CURRENT); this.state = 450; + this.match(FlinkSqlParser.KW_SHOW); + this.state = 451; + this.match(FlinkSqlParser.KW_CURRENT); + this.state = 452; _la = this._input.LA(1); if(!(_la===12 || _la===25)) { this._errHandler.recoverInline(this); @@ -2057,16 +2061,16 @@ export default class FlinkSqlParser extends Parser { case 3: this.enterOuterAlt(localctx, 3); { - this.state = 451; + this.state = 453; this.match(FlinkSqlParser.KW_SHOW); - this.state = 452; + this.state = 454; this.match(FlinkSqlParser.KW_TABLES); - this.state = 455; + this.state = 457; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===248 || _la===259) { { - this.state = 453; + this.state = 455; _la = this._input.LA(1); if(!(_la===248 || _la===259)) { this._errHandler.recoverInline(this); @@ -2075,17 +2079,17 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 454; + this.state = 456; this.uid(); } } - this.state = 458; + this.state = 460; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===276 || _la===294) { { - this.state = 457; + this.state = 459; this.likePredicate(); } } @@ -2095,11 +2099,11 @@ export default class FlinkSqlParser extends Parser { case 4: this.enterOuterAlt(localctx, 4); { - this.state = 460; - this.match(FlinkSqlParser.KW_SHOW); - this.state = 461; - this.match(FlinkSqlParser.KW_COLUMNS); this.state = 462; + this.match(FlinkSqlParser.KW_SHOW); + this.state = 463; + this.match(FlinkSqlParser.KW_COLUMNS); + this.state = 464; _la = this._input.LA(1); if(!(_la===248 || _la===259)) { this._errHandler.recoverInline(this); @@ -2108,14 +2112,14 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 463; - this.uid(); this.state = 465; + this.uid(); + this.state = 467; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===276 || _la===294) { { - this.state = 464; + this.state = 466; this.likePredicate(); } } @@ -2125,11 +2129,11 @@ export default class FlinkSqlParser extends Parser { case 5: this.enterOuterAlt(localctx, 5); { - this.state = 467; - this.match(FlinkSqlParser.KW_SHOW); - this.state = 468; - this.match(FlinkSqlParser.KW_CREATE); this.state = 469; + this.match(FlinkSqlParser.KW_SHOW); + this.state = 470; + this.match(FlinkSqlParser.KW_CREATE); + this.state = 471; _la = this._input.LA(1); if(!(_la===165 || _la===337)) { this._errHandler.recoverInline(this); @@ -2138,45 +2142,45 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 470; + this.state = 472; this.uid(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 471; - this.match(FlinkSqlParser.KW_SHOW); this.state = 473; + this.match(FlinkSqlParser.KW_SHOW); + this.state = 475; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===352) { { - this.state = 472; + this.state = 474; this.match(FlinkSqlParser.KW_USER); } } - this.state = 475; + this.state = 477; this.match(FlinkSqlParser.KW_FUNCTIONS); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 476; - this.match(FlinkSqlParser.KW_SHOW); this.state = 478; + this.match(FlinkSqlParser.KW_SHOW); + this.state = 480; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===249) { { - this.state = 477; + this.state = 479; this.match(FlinkSqlParser.KW_FULL); } } - this.state = 480; + this.state = 482; this.match(FlinkSqlParser.KW_MODULES); } break; @@ -2203,20 +2207,20 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 483; - this.match(FlinkSqlParser.KW_LOAD); - this.state = 484; - this.match(FlinkSqlParser.KW_MODULE); this.state = 485; + this.match(FlinkSqlParser.KW_LOAD); + this.state = 486; + this.match(FlinkSqlParser.KW_MODULE); + this.state = 487; this.uid(); - this.state = 488; + this.state = 490; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 18, this._ctx) ) { case 1: { - this.state = 486; + this.state = 488; this.match(FlinkSqlParser.KW_WITH); - this.state = 487; + this.state = 489; this.tablePropertyList(); } break; @@ -2244,11 +2248,11 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 490; - this.match(FlinkSqlParser.KW_UNLOAD); - this.state = 491; - this.match(FlinkSqlParser.KW_MODULE); this.state = 492; + this.match(FlinkSqlParser.KW_UNLOAD); + this.state = 493; + this.match(FlinkSqlParser.KW_MODULE); + this.state = 494; this.uid(); } } @@ -2273,14 +2277,14 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 494; - this.match(FlinkSqlParser.KW_SET); this.state = 496; + this.match(FlinkSqlParser.KW_SET); + this.state = 498; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 19, this._ctx) ) { case 1: { - this.state = 495; + this.state = 497; this.tableProperty(); } break; @@ -2308,14 +2312,14 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 498; - this.match(FlinkSqlParser.KW_RESET); this.state = 500; + this.match(FlinkSqlParser.KW_RESET); + this.state = 502; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 20, this._ctx) ) { case 1: { - this.state = 499; + this.state = 501; this.tablePropertyKey(); } break; @@ -2344,7 +2348,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 502; + this.state = 504; _la = this._input.LA(1); if(!(_la===4 || _la===117)) { this._errHandler.recoverInline(this); @@ -2353,9 +2357,9 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 503; + this.state = 505; this.match(FlinkSqlParser.KW_JAR); - this.state = 504; + this.state = 506; this.jarFileName(); } } @@ -2379,28 +2383,28 @@ export default class FlinkSqlParser extends Parser { this.enterRule(localctx, 38, FlinkSqlParser.RULE_dtAddStatement); let _la: number; try { - this.state = 545; + this.state = 547; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 24, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 506; - this.match(FlinkSqlParser.KW_ADD); - this.state = 507; - this.match(FlinkSqlParser.KW_JAR); this.state = 508; - this.match(FlinkSqlParser.KW_WITH); + this.match(FlinkSqlParser.KW_ADD); this.state = 509; + this.match(FlinkSqlParser.KW_JAR); + this.state = 510; + this.match(FlinkSqlParser.KW_WITH); + this.state = 511; this.match(FlinkSqlParser.FILE_PATH); - this.state = 512; + this.state = 514; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===183) { { - this.state = 510; + this.state = 512; this.match(FlinkSqlParser.KW_AS); - this.state = 511; + this.state = 513; this.uid(); } } @@ -2410,34 +2414,34 @@ export default class FlinkSqlParser extends Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 514; - this.match(FlinkSqlParser.KW_ADD); - this.state = 515; - this.match(FlinkSqlParser.KW_FILE); this.state = 516; - this.match(FlinkSqlParser.KW_WITH); + this.match(FlinkSqlParser.KW_ADD); this.state = 517; + this.match(FlinkSqlParser.KW_FILE); + this.state = 518; + this.match(FlinkSqlParser.KW_WITH); + this.state = 519; this.match(FlinkSqlParser.FILE_PATH); - this.state = 520; + this.state = 522; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===183) { { - this.state = 518; + this.state = 520; this.match(FlinkSqlParser.KW_AS); - this.state = 519; + this.state = 521; this.uid(); } } - this.state = 524; + this.state = 526; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===118) { { - this.state = 522; + this.state = 524; this.match(FlinkSqlParser.KW_RENAME); - this.state = 523; + this.state = 525; this.uid(); } } @@ -2447,9 +2451,9 @@ export default class FlinkSqlParser extends Parser { case 3: this.enterOuterAlt(localctx, 3); { - this.state = 526; + this.state = 528; this.match(FlinkSqlParser.KW_ADD); - this.state = 527; + this.state = 529; _la = this._input.LA(1); if(!(((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 31) !== 0))) { this._errHandler.recoverInline(this); @@ -2458,48 +2462,48 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 528; - this.match(FlinkSqlParser.KW_WITH); - this.state = 529; - this.match(FlinkSqlParser.FILE_PATH); this.state = 530; - this.match(FlinkSqlParser.KW_RENAME); + this.match(FlinkSqlParser.KW_WITH); this.state = 531; + this.match(FlinkSqlParser.FILE_PATH); + this.state = 532; + this.match(FlinkSqlParser.KW_RENAME); + this.state = 533; this.uid(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 532; - this.match(FlinkSqlParser.KW_ADD); - this.state = 533; - this.match(FlinkSqlParser.KW_PYTHON_PARAMETER); this.state = 534; + this.match(FlinkSqlParser.KW_ADD); + this.state = 535; + this.match(FlinkSqlParser.KW_PYTHON_PARAMETER); + this.state = 536; this.match(FlinkSqlParser.FILE_PATH); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 535; - this.match(FlinkSqlParser.KW_ADD); - this.state = 536; - this.match(FlinkSqlParser.KW_ENGINE); this.state = 537; - this.match(FlinkSqlParser.KW_FILE); + this.match(FlinkSqlParser.KW_ADD); this.state = 538; - this.match(FlinkSqlParser.KW_WITH); + this.match(FlinkSqlParser.KW_ENGINE); this.state = 539; - this.match(FlinkSqlParser.FILE_PATH); + this.match(FlinkSqlParser.KW_FILE); this.state = 540; - this.match(FlinkSqlParser.KW_RENAME); + this.match(FlinkSqlParser.KW_WITH); this.state = 541; - this.uid(); + this.match(FlinkSqlParser.FILE_PATH); this.state = 542; - this.match(FlinkSqlParser.KW_KEY); + this.match(FlinkSqlParser.KW_RENAME); this.state = 543; this.uid(); + this.state = 544; + this.match(FlinkSqlParser.KW_KEY); + this.state = 545; + this.uid(); } break; } @@ -2525,18 +2529,18 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 549; + this.state = 551; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 25, this._ctx) ) { case 1: { - this.state = 547; + this.state = 549; this.simpleCreateTable(); } break; case 2: { - this.state = 548; + this.state = 550; this.createTableAsSelect(); } break; @@ -2566,120 +2570,120 @@ export default class FlinkSqlParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 551; - this.match(FlinkSqlParser.KW_CREATE); this.state = 553; + this.match(FlinkSqlParser.KW_CREATE); + this.state = 555; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===149) { { - this.state = 552; + this.state = 554; this.match(FlinkSqlParser.KW_TEMPORARY); } } - this.state = 555; - this.match(FlinkSqlParser.KW_TABLE); this.state = 557; + this.match(FlinkSqlParser.KW_TABLE); + this.state = 559; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 27, this._ctx) ) { case 1: { - this.state = 556; + this.state = 558; this.ifNotExists(); } break; } - this.state = 559; - this.sourceTable(); - this.state = 560; - this.match(FlinkSqlParser.LR_BRACKET); this.state = 561; + this.sourceTable(); + this.state = 562; + this.match(FlinkSqlParser.LR_BRACKET); + this.state = 563; this.columnOptionDefinition(); - this.state = 566; + this.state = 568; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 562; + this.state = 564; this.match(FlinkSqlParser.COMMA); - this.state = 563; + this.state = 565; this.columnOptionDefinition(); } } } - this.state = 568; + this.state = 570; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); } - this.state = 571; + this.state = 573; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 29, this._ctx) ) { case 1: { - this.state = 569; + this.state = 571; this.match(FlinkSqlParser.COMMA); - this.state = 570; + this.state = 572; this.watermarkDefinition(); } break; } - this.state = 575; + this.state = 577; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 30, this._ctx) ) { case 1: { - this.state = 573; + this.state = 575; this.match(FlinkSqlParser.COMMA); - this.state = 574; + this.state = 576; this.tableConstraint(); } break; } - this.state = 579; + this.state = 581; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===380) { { - this.state = 577; + this.state = 579; this.match(FlinkSqlParser.COMMA); - this.state = 578; + this.state = 580; this.selfDefinitionClause(); } } - this.state = 581; - this.match(FlinkSqlParser.RR_BRACKET); this.state = 583; + this.match(FlinkSqlParser.RR_BRACKET); + this.state = 585; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===18) { { - this.state = 582; + this.state = 584; this.commentSpec(); } } - this.state = 586; + this.state = 588; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===94) { { - this.state = 585; + this.state = 587; this.partitionDefinition(); } } - this.state = 588; - this.withOption(); this.state = 590; + this.withOption(); + this.state = 592; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===276) { { - this.state = 589; + this.state = 591; this.likeDefinition(); } } @@ -2708,32 +2712,32 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 592; + this.state = 594; this.match(FlinkSqlParser.KW_CREATE); - this.state = 593; - this.match(FlinkSqlParser.KW_TABLE); this.state = 595; + this.match(FlinkSqlParser.KW_TABLE); + this.state = 597; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 35, this._ctx) ) { case 1: { - this.state = 594; + this.state = 596; this.ifNotExists(); } break; } - this.state = 597; + this.state = 599; this.sourceTable(); - this.state = 598; + this.state = 600; this.withOption(); - this.state = 601; + this.state = 603; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===183) { { - this.state = 599; + this.state = 601; this.match(FlinkSqlParser.KW_AS); - this.state = 600; + this.state = 602; this.queryStatement(0); } } @@ -2759,27 +2763,27 @@ export default class FlinkSqlParser extends Parser { let localctx: ColumnOptionDefinitionContext = new ColumnOptionDefinitionContext(this, this._ctx, this.state); this.enterRule(localctx, 46, FlinkSqlParser.RULE_columnOptionDefinition); try { - this.state = 606; + this.state = 608; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 37, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 603; + this.state = 605; this.physicalColumnDefinition(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 604; + this.state = 606; this.metadataColumnDefinition(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 605; + this.state = 607; this.computedColumnDefinition(); } break; @@ -2807,26 +2811,26 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 608; + this.state = 610; this.columnName(); - this.state = 609; - this.columnType(); this.state = 611; + this.columnType(); + this.state = 613; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===212 || ((((_la - 294)) & ~0x1F) === 0 && ((1 << (_la - 294)) & 524291) !== 0)) { { - this.state = 610; + this.state = 612; this.columnConstraint(); } } - this.state = 614; + this.state = 616; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===18) { { - this.state = 613; + this.state = 615; this.commentSpec(); } } @@ -2852,20 +2856,20 @@ export default class FlinkSqlParser extends Parser { let localctx: ColumnNameContext = new ColumnNameContext(this, this._ctx, this.state); this.enterRule(localctx, 50, FlinkSqlParser.RULE_columnName); try { - this.state = 618; + this.state = 620; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 40, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 616; + this.state = 618; this.uid(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 617; + this.state = 619; this.expression(); } break; @@ -2893,27 +2897,27 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 620; + this.state = 622; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 621; + this.state = 623; this.columnName(); - this.state = 626; + this.state = 628; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 622; + this.state = 624; this.match(FlinkSqlParser.COMMA); - this.state = 623; + this.state = 625; this.columnName(); } } - this.state = 628; + this.state = 630; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 629; + this.state = 631; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -2937,7 +2941,7 @@ export default class FlinkSqlParser extends Parser { this.enterRule(localctx, 54, FlinkSqlParser.RULE_columnType); let _la: number; try { - this.state = 668; + this.state = 670; this._errHandler.sync(this); switch (this._input.LA(1)) { case 192: @@ -2945,7 +2949,7 @@ export default class FlinkSqlParser extends Parser { case 295: this.enterOuterAlt(localctx, 1); { - this.state = 631; + this.state = 633; localctx._typeName = this._input.LT(1); _la = this._input.LA(1); if(!(_la===192 || _la===222 || _la===295)) { @@ -2973,7 +2977,7 @@ export default class FlinkSqlParser extends Parser { case 357: this.enterOuterAlt(localctx, 2); { - this.state = 632; + this.state = 634; localctx._typeName = this._input.LT(1); _la = this._input.LA(1); if(!(_la===10 || _la===145 || _la===151 || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 8195) !== 0) || _la===223 || _la===264 || _la===265 || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 402663425) !== 0))) { @@ -2983,12 +2987,12 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 634; + this.state = 636; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===376) { { - this.state = 633; + this.state = 635; this.lengthOneDimension(); } } @@ -2998,24 +3002,24 @@ export default class FlinkSqlParser extends Parser { case 341: this.enterOuterAlt(localctx, 3); { - this.state = 636; - localctx._typeName = this.match(FlinkSqlParser.KW_TIMESTAMP); this.state = 638; + localctx._typeName = this.match(FlinkSqlParser.KW_TIMESTAMP); + this.state = 640; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===376) { { - this.state = 637; + this.state = 639; this.lengthOneDimension(); } } - this.state = 646; + this.state = 648; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===361 || _la===363) { { - this.state = 640; + this.state = 642; _la = this._input.LA(1); if(!(_la===361 || _la===363)) { this._errHandler.recoverInline(this); @@ -3024,19 +3028,19 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 642; + this.state = 644; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===278) { { - this.state = 641; + this.state = 643; this.match(FlinkSqlParser.KW_LOCAL); } } - this.state = 644; + this.state = 646; this.match(FlinkSqlParser.KW_TIME); - this.state = 645; + this.state = 647; this.match(FlinkSqlParser.KW_ZONE); } } @@ -3050,7 +3054,7 @@ export default class FlinkSqlParser extends Parser { case 296: this.enterOuterAlt(localctx, 4); { - this.state = 648; + this.state = 650; localctx._typeName = this._input.LT(1); _la = this._input.LA(1); if(!(((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 2097411) !== 0) || _la===296)) { @@ -3060,12 +3064,12 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 650; + this.state = 652; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===376) { { - this.state = 649; + this.state = 651; this.lengthTwoOptionalDimension(); } } @@ -3076,7 +3080,7 @@ export default class FlinkSqlParser extends Parser { case 289: this.enterOuterAlt(localctx, 5); { - this.state = 652; + this.state = 654; localctx._type_ = this._input.LT(1); _la = this._input.LA(1); if(!(_la===182 || _la===289)) { @@ -3086,12 +3090,12 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 654; + this.state = 656; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===367) { { - this.state = 653; + this.state = 655; this.lengthOneTypeDimension(); } } @@ -3101,14 +3105,14 @@ export default class FlinkSqlParser extends Parser { case 76: this.enterOuterAlt(localctx, 6); { - this.state = 656; - localctx._type_ = this.match(FlinkSqlParser.KW_MAP); this.state = 658; + localctx._type_ = this.match(FlinkSqlParser.KW_MAP); + this.state = 660; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===367) { { - this.state = 657; + this.state = 659; this.mapTypeDimension(); } } @@ -3118,14 +3122,14 @@ export default class FlinkSqlParser extends Parser { case 322: this.enterOuterAlt(localctx, 7); { - this.state = 660; - localctx._type_ = this.match(FlinkSqlParser.KW_ROW); this.state = 662; + localctx._type_ = this.match(FlinkSqlParser.KW_ROW); + this.state = 664; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===367) { { - this.state = 661; + this.state = 663; this.rowTypeDimension(); } } @@ -3135,14 +3139,14 @@ export default class FlinkSqlParser extends Parser { case 114: this.enterOuterAlt(localctx, 8); { - this.state = 664; - localctx._type_ = this.match(FlinkSqlParser.KW_RAW); this.state = 666; + localctx._type_ = this.match(FlinkSqlParser.KW_RAW); + this.state = 668; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===376) { { - this.state = 665; + this.state = 667; this.lengthTwoStringDimension(); } } @@ -3174,11 +3178,11 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 670; - this.match(FlinkSqlParser.LR_BRACKET); - this.state = 671; - this.decimalLiteral(); this.state = 672; + this.match(FlinkSqlParser.LR_BRACKET); + this.state = 673; + this.decimalLiteral(); + this.state = 674; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -3204,23 +3208,23 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 674; + this.state = 676; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 675; + this.state = 677; this.decimalLiteral(); - this.state = 678; + this.state = 680; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===380) { { - this.state = 676; + this.state = 678; this.match(FlinkSqlParser.COMMA); - this.state = 677; + this.state = 679; this.decimalLiteral(); } } - this.state = 680; + this.state = 682; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -3246,23 +3250,23 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 682; + this.state = 684; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 683; + this.state = 685; this.stringLiteral(); - this.state = 686; + this.state = 688; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===380) { { - this.state = 684; + this.state = 686; this.match(FlinkSqlParser.COMMA); - this.state = 685; + this.state = 687; this.stringLiteral(); } } - this.state = 688; + this.state = 690; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -3287,11 +3291,11 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 690; - this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 691; - this.columnType(); this.state = 692; + this.match(FlinkSqlParser.LESS_SYMBOL); + this.state = 693; + this.columnType(); + this.state = 694; this.match(FlinkSqlParser.GREATER_SYMBOL); } } @@ -3316,17 +3320,17 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 694; - this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 695; - this.columnType(); - { this.state = 696; - this.match(FlinkSqlParser.COMMA); + this.match(FlinkSqlParser.LESS_SYMBOL); this.state = 697; this.columnType(); - } + { + this.state = 698; + this.match(FlinkSqlParser.COMMA); this.state = 699; + this.columnType(); + } + this.state = 701; this.match(FlinkSqlParser.GREATER_SYMBOL); } } @@ -3352,31 +3356,31 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 701; - this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 702; - this.columnName(); this.state = 703; + this.match(FlinkSqlParser.LESS_SYMBOL); + this.state = 704; + this.columnName(); + this.state = 705; this.columnType(); - this.state = 710; + this.state = 712; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 704; - this.match(FlinkSqlParser.COMMA); - this.state = 705; - this.columnName(); this.state = 706; + this.match(FlinkSqlParser.COMMA); + this.state = 707; + this.columnName(); + this.state = 708; this.columnType(); } } - this.state = 712; + this.state = 714; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 713; + this.state = 715; this.match(FlinkSqlParser.GREATER_SYMBOL); } } @@ -3400,37 +3404,37 @@ export default class FlinkSqlParser extends Parser { this.enterRule(localctx, 68, FlinkSqlParser.RULE_columnConstraint); let _la: number; try { - this.state = 729; + this.state = 731; this._errHandler.sync(this); switch (this._input.LA(1)) { case 212: case 313: this.enterOuterAlt(localctx, 1); { - this.state = 717; + this.state = 719; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===212) { { - this.state = 715; + this.state = 717; this.match(FlinkSqlParser.KW_CONSTRAINT); - this.state = 716; + this.state = 718; this.constraintName(); } } - this.state = 719; + this.state = 721; this.match(FlinkSqlParser.KW_PRIMARY); - this.state = 720; + this.state = 722; this.match(FlinkSqlParser.KW_KEY); - this.state = 723; + this.state = 725; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 721; + this.state = 723; this.match(FlinkSqlParser.KW_NOT); - this.state = 722; + this.state = 724; this.match(FlinkSqlParser.KW_ENFORCED); } } @@ -3441,17 +3445,17 @@ export default class FlinkSqlParser extends Parser { case 295: this.enterOuterAlt(localctx, 2); { - this.state = 726; + this.state = 728; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 725; + this.state = 727; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 728; + this.state = 730; this.match(FlinkSqlParser.KW_NULL); } break; @@ -3480,9 +3484,9 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 731; + this.state = 733; this.match(FlinkSqlParser.KW_COMMENT); - this.state = 732; + this.state = 734; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -3508,30 +3512,30 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 734; - this.columnName(); - this.state = 735; - this.columnType(); this.state = 736; + this.columnName(); + this.state = 737; + this.columnType(); + this.state = 738; this.match(FlinkSqlParser.KW_METADATA); - this.state = 739; + this.state = 741; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===248) { { - this.state = 737; + this.state = 739; this.match(FlinkSqlParser.KW_FROM); - this.state = 738; + this.state = 740; this.metadataKey(); } } - this.state = 742; + this.state = 744; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===167) { { - this.state = 741; + this.state = 743; this.match(FlinkSqlParser.KW_VIRTUAL); } } @@ -3559,7 +3563,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 744; + this.state = 746; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -3585,18 +3589,18 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 746; - this.columnName(); - this.state = 747; - this.match(FlinkSqlParser.KW_AS); this.state = 748; - this.computedColumnExpression(); + this.columnName(); + this.state = 749; + this.match(FlinkSqlParser.KW_AS); this.state = 750; + this.computedColumnExpression(); + this.state = 752; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===18) { { - this.state = 749; + this.state = 751; this.commentSpec(); } } @@ -3624,7 +3628,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 752; + this.state = 754; this.expression(); } } @@ -3649,16 +3653,16 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 754; - this.match(FlinkSqlParser.KW_WATERMARK); - this.state = 755; - this.match(FlinkSqlParser.KW_FOR); this.state = 756; - this.expression(); + this.match(FlinkSqlParser.KW_WATERMARK); this.state = 757; - this.match(FlinkSqlParser.KW_AS); + this.match(FlinkSqlParser.KW_FOR); this.state = 758; this.expression(); + this.state = 759; + this.match(FlinkSqlParser.KW_AS); + this.state = 760; + this.expression(); } } catch (re) { @@ -3683,27 +3687,27 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 762; + this.state = 764; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===212) { { - this.state = 760; + this.state = 762; this.match(FlinkSqlParser.KW_CONSTRAINT); - this.state = 761; + this.state = 763; this.constraintName(); } } - this.state = 764; - this.match(FlinkSqlParser.KW_PRIMARY); - this.state = 765; - this.match(FlinkSqlParser.KW_KEY); this.state = 766; - this.columnNameList(); + this.match(FlinkSqlParser.KW_PRIMARY); this.state = 767; - this.match(FlinkSqlParser.KW_NOT); + this.match(FlinkSqlParser.KW_KEY); this.state = 768; + this.columnNameList(); + this.state = 769; + this.match(FlinkSqlParser.KW_NOT); + this.state = 770; this.match(FlinkSqlParser.KW_ENFORCED); } } @@ -3728,7 +3732,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 770; + this.state = 772; this.identifier(); } } @@ -3753,11 +3757,11 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 772; - this.match(FlinkSqlParser.KW_PERIOD); - this.state = 773; - this.match(FlinkSqlParser.KW_FOR); this.state = 774; + this.match(FlinkSqlParser.KW_PERIOD); + this.state = 775; + this.match(FlinkSqlParser.KW_FOR); + this.state = 776; this.match(FlinkSqlParser.KW_SYSTEM_TIME); } } @@ -3782,11 +3786,11 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 776; - this.match(FlinkSqlParser.KW_PARTITIONED); - this.state = 777; - this.match(FlinkSqlParser.KW_BY); this.state = 778; + this.match(FlinkSqlParser.KW_PARTITIONED); + this.state = 779; + this.match(FlinkSqlParser.KW_BY); + this.state = 780; this.transformList(); } } @@ -3812,27 +3816,27 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 780; + this.state = 782; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 781; + this.state = 783; this.transform(); - this.state = 786; + this.state = 788; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 782; + this.state = 784; this.match(FlinkSqlParser.COMMA); - this.state = 783; + this.state = 785; this.transform(); } } - this.state = 788; + this.state = 790; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 789; + this.state = 791; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -3856,14 +3860,14 @@ export default class FlinkSqlParser extends Parser { this.enterRule(localctx, 92, FlinkSqlParser.RULE_transform); let _la: number; try { - this.state = 804; + this.state = 806; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 65, this._ctx) ) { case 1: localctx = new IdentityTransformContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 791; + this.state = 793; this.qualifiedName(); } break; @@ -3871,29 +3875,29 @@ export default class FlinkSqlParser extends Parser { localctx = new ApplyTransformContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 792; - (localctx as ApplyTransformContext)._transformName = this.identifier(); - this.state = 793; - this.match(FlinkSqlParser.LR_BRACKET); this.state = 794; + (localctx as ApplyTransformContext)._transformName = this.identifier(); + this.state = 795; + this.match(FlinkSqlParser.LR_BRACKET); + this.state = 796; this.transformArgument(); - this.state = 799; + this.state = 801; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 795; + this.state = 797; this.match(FlinkSqlParser.COMMA); - this.state = 796; + this.state = 798; this.transformArgument(); } } - this.state = 801; + this.state = 803; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 802; + this.state = 804; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -3918,20 +3922,20 @@ export default class FlinkSqlParser extends Parser { let localctx: TransformArgumentContext = new TransformArgumentContext(this, this._ctx, this.state); this.enterRule(localctx, 94, FlinkSqlParser.RULE_transformArgument); try { - this.state = 808; + this.state = 810; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 66, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 806; + this.state = 808; this.qualifiedName(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 807; + this.state = 809; this.constant(); } break; @@ -3959,32 +3963,32 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 810; + this.state = 812; this.match(FlinkSqlParser.KW_LIKE); - this.state = 811; + this.state = 813; this.sourceTable(); - this.state = 820; + this.state = 822; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 68, this._ctx) ) { case 1: { - this.state = 812; + this.state = 814; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 816; + this.state = 818; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===40 || _la===93 || _la===260) { { { - this.state = 813; + this.state = 815; this.likeOption(); } } - this.state = 818; + this.state = 820; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 819; + this.state = 821; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -4012,7 +4016,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 822; + this.state = 824; this.uid(); } } @@ -4036,14 +4040,14 @@ export default class FlinkSqlParser extends Parser { this.enterRule(localctx, 100, FlinkSqlParser.RULE_likeOption); let _la: number; try { - this.state = 828; + this.state = 830; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 69, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 824; + this.state = 826; _la = this._input.LA(1); if(!(_la===40 || _la===260)) { this._errHandler.recoverInline(this); @@ -4052,7 +4056,7 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 825; + this.state = 827; _la = this._input.LA(1); if(!(_la===21 || _la===95 || _la===176)) { this._errHandler.recoverInline(this); @@ -4068,7 +4072,7 @@ export default class FlinkSqlParser extends Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 826; + this.state = 828; _la = this._input.LA(1); if(!(_la===40 || _la===93 || _la===260)) { this._errHandler.recoverInline(this); @@ -4077,7 +4081,7 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 827; + this.state = 829; _la = this._input.LA(1); if(!(_la===52 || _la===89 || _la===169)) { this._errHandler.recoverInline(this); @@ -4112,13 +4116,13 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 830; - this.match(FlinkSqlParser.KW_CREATE); - this.state = 831; - this.match(FlinkSqlParser.KW_CATALOG); this.state = 832; - this.uid(); + this.match(FlinkSqlParser.KW_CREATE); this.state = 833; + this.match(FlinkSqlParser.KW_CATALOG); + this.state = 834; + this.uid(); + this.state = 835; this.withOption(); } } @@ -4144,33 +4148,33 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 835; + this.state = 837; this.match(FlinkSqlParser.KW_CREATE); - this.state = 836; - this.match(FlinkSqlParser.KW_DATABASE); this.state = 838; + this.match(FlinkSqlParser.KW_DATABASE); + this.state = 840; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 70, this._ctx) ) { case 1: { - this.state = 837; + this.state = 839; this.ifNotExists(); } break; } - this.state = 840; - this.uid(); this.state = 842; + this.uid(); + this.state = 844; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===18) { { - this.state = 841; + this.state = 843; this.commentSpec(); } } - this.state = 844; + this.state = 846; this.withOption(); } } @@ -4196,55 +4200,55 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 846; - this.match(FlinkSqlParser.KW_CREATE); this.state = 848; + this.match(FlinkSqlParser.KW_CREATE); + this.state = 850; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===149) { { - this.state = 847; + this.state = 849; this.match(FlinkSqlParser.KW_TEMPORARY); } } - this.state = 850; - this.match(FlinkSqlParser.KW_VIEW); this.state = 852; + this.match(FlinkSqlParser.KW_VIEW); + this.state = 854; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 73, this._ctx) ) { case 1: { - this.state = 851; + this.state = 853; this.ifNotExists(); } break; } - this.state = 854; - this.uid(); this.state = 856; + this.uid(); + this.state = 858; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===376) { { - this.state = 855; + this.state = 857; this.columnNameList(); } } - this.state = 859; + this.state = 861; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===18) { { - this.state = 858; + this.state = 860; this.commentSpec(); } } - this.state = 861; + this.state = 863; this.match(FlinkSqlParser.KW_AS); - this.state = 862; + this.state = 864; this.queryStatement(0); } } @@ -4270,52 +4274,52 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 864; + this.state = 866; this.match(FlinkSqlParser.KW_CREATE); - this.state = 868; + this.state = 870; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 76, this._ctx) ) { case 1: { - this.state = 865; + this.state = 867; this.match(FlinkSqlParser.KW_TEMPORARY); } break; case 2: { - this.state = 866; + this.state = 868; this.match(FlinkSqlParser.KW_TEMPORARY); - this.state = 867; + this.state = 869; this.match(FlinkSqlParser.KW_SYSTEM); } break; } - this.state = 870; - this.match(FlinkSqlParser.KW_FUNCTION); this.state = 872; + this.match(FlinkSqlParser.KW_FUNCTION); + this.state = 874; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 77, this._ctx) ) { case 1: { - this.state = 871; + this.state = 873; this.ifNotExists(); } break; } - this.state = 874; - this.uid(); - this.state = 875; - this.match(FlinkSqlParser.KW_AS); this.state = 876; + this.uid(); + this.state = 877; + this.match(FlinkSqlParser.KW_AS); + this.state = 878; this.identifier(); - this.state = 879; + this.state = 881; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===272) { { - this.state = 877; + this.state = 879; this.match(FlinkSqlParser.KW_LANGUAGE); - this.state = 878; + this.state = 880; _la = this._input.LA(1); if(!(_la===65 || _la===106 || _la===125)) { this._errHandler.recoverInline(this); @@ -4327,12 +4331,12 @@ export default class FlinkSqlParser extends Parser { } } - this.state = 882; + this.state = 884; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===353) { { - this.state = 881; + this.state = 883; this.usingClause(); } } @@ -4361,27 +4365,27 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 884; - this.match(FlinkSqlParser.KW_USING); - this.state = 885; - this.match(FlinkSqlParser.KW_JAR); this.state = 886; + this.match(FlinkSqlParser.KW_USING); + this.state = 887; + this.match(FlinkSqlParser.KW_JAR); + this.state = 888; this.jarFileName(); - this.state = 892; + this.state = 894; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 887; - this.match(FlinkSqlParser.COMMA); - this.state = 888; - this.match(FlinkSqlParser.KW_JAR); this.state = 889; + this.match(FlinkSqlParser.COMMA); + this.state = 890; + this.match(FlinkSqlParser.KW_JAR); + this.state = 891; this.jarFileName(); } } - this.state = 894; + this.state = 896; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -4408,7 +4412,7 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 895; + this.state = 897; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -4433,52 +4437,52 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 897; + this.state = 899; this.match(FlinkSqlParser.KW_ALTER); - this.state = 898; - this.match(FlinkSqlParser.KW_TABLE); this.state = 900; + this.match(FlinkSqlParser.KW_TABLE); + this.state = 902; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 81, this._ctx) ) { case 1: { - this.state = 899; + this.state = 901; this.ifExists(); } break; } - this.state = 902; + this.state = 904; this.uid(); - this.state = 908; + this.state = 910; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 82, this._ctx) ) { case 1: { - this.state = 903; + this.state = 905; this.renameDefinition(); } break; case 2: { - this.state = 904; + this.state = 906; this.setKeyValueDefinition(); } break; case 3: { - this.state = 905; + this.state = 907; this.addConstraint(); } break; case 4: { - this.state = 906; + this.state = 908; this.dropConstraint(); } break; case 5: { - this.state = 907; + this.state = 909; this.addUnique(); } break; @@ -4507,21 +4511,21 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 910; - this.match(FlinkSqlParser.KW_RENAME); this.state = 912; + this.match(FlinkSqlParser.KW_RENAME); + this.state = 914; this._errHandler.sync(this); _la = this._input.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294967280) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4294967295) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4294967295) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 4294967295) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 4294967295) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 32767) !== 0) || ((((_la - 397)) & ~0x1F) === 0 && ((1 << (_la - 397)) & 19) !== 0)) { { - this.state = 911; + this.state = 913; this.uid(); } } - this.state = 914; + this.state = 916; this.match(FlinkSqlParser.KW_TO); - this.state = 915; + this.state = 917; this.uid(); } } @@ -4546,9 +4550,9 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 917; + this.state = 919; this.match(FlinkSqlParser.KW_SET); - this.state = 918; + this.state = 920; this.tablePropertyList(); } } @@ -4574,24 +4578,24 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 920; - this.match(FlinkSqlParser.KW_ADD); - this.state = 921; - this.match(FlinkSqlParser.KW_CONSTRAINT); this.state = 922; - this.constraintName(); + this.match(FlinkSqlParser.KW_ADD); this.state = 923; - this.match(FlinkSqlParser.KW_PRIMARY); + this.match(FlinkSqlParser.KW_CONSTRAINT); this.state = 924; - this.match(FlinkSqlParser.KW_KEY); + this.constraintName(); this.state = 925; - this.columnNameList(); + this.match(FlinkSqlParser.KW_PRIMARY); + this.state = 926; + this.match(FlinkSqlParser.KW_KEY); this.state = 927; + this.columnNameList(); + this.state = 929; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 926; + this.state = 928; this.notForced(); } } @@ -4619,11 +4623,11 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 929; - this.match(FlinkSqlParser.KW_DROP); - this.state = 930; - this.match(FlinkSqlParser.KW_CONSTRAINT); this.state = 931; + this.match(FlinkSqlParser.KW_DROP); + this.state = 932; + this.match(FlinkSqlParser.KW_CONSTRAINT); + this.state = 933; this.constraintName(); } } @@ -4648,11 +4652,11 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 933; - this.match(FlinkSqlParser.KW_ADD); - this.state = 934; - this.match(FlinkSqlParser.KW_UNIQUE); this.state = 935; + this.match(FlinkSqlParser.KW_ADD); + this.state = 936; + this.match(FlinkSqlParser.KW_UNIQUE); + this.state = 937; this.columnNameList(); } } @@ -4677,9 +4681,9 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 937; + this.state = 939; this.match(FlinkSqlParser.KW_NOT); - this.state = 938; + this.state = 940; this.match(FlinkSqlParser.KW_ENFORCED); } } @@ -4704,26 +4708,26 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 940; - this.match(FlinkSqlParser.KW_ALTER); - this.state = 941; - this.match(FlinkSqlParser.KW_VIEW); this.state = 942; + this.match(FlinkSqlParser.KW_ALTER); + this.state = 943; + this.match(FlinkSqlParser.KW_VIEW); + this.state = 944; this.uid(); - this.state = 946; + this.state = 948; this._errHandler.sync(this); switch (this._input.LA(1)) { case 118: { - this.state = 943; + this.state = 945; this.renameDefinition(); } break; case 183: { - this.state = 944; + this.state = 946; this.match(FlinkSqlParser.KW_AS); - this.state = 945; + this.state = 947; this.queryStatement(0); } break; @@ -4753,13 +4757,13 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 948; - this.match(FlinkSqlParser.KW_ALTER); - this.state = 949; - this.match(FlinkSqlParser.KW_DATABASE); this.state = 950; - this.uid(); + this.match(FlinkSqlParser.KW_ALTER); this.state = 951; + this.match(FlinkSqlParser.KW_DATABASE); + this.state = 952; + this.uid(); + this.state = 953; this.setKeyValueDefinition(); } } @@ -4785,52 +4789,52 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 953; + this.state = 955; this.match(FlinkSqlParser.KW_ALTER); - this.state = 957; + this.state = 959; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 86, this._ctx) ) { case 1: { - this.state = 954; + this.state = 956; this.match(FlinkSqlParser.KW_TEMPORARY); } break; case 2: { - this.state = 955; + this.state = 957; this.match(FlinkSqlParser.KW_TEMPORARY); - this.state = 956; + this.state = 958; this.match(FlinkSqlParser.KW_SYSTEM); } break; } - this.state = 959; - this.match(FlinkSqlParser.KW_FUNCTION); this.state = 961; + this.match(FlinkSqlParser.KW_FUNCTION); + this.state = 963; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 87, this._ctx) ) { case 1: { - this.state = 960; + this.state = 962; this.ifExists(); } break; } - this.state = 963; - this.uid(); - this.state = 964; - this.match(FlinkSqlParser.KW_AS); this.state = 965; + this.uid(); + this.state = 966; + this.match(FlinkSqlParser.KW_AS); + this.state = 967; this.identifier(); - this.state = 968; + this.state = 970; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===272) { { - this.state = 966; + this.state = 968; this.match(FlinkSqlParser.KW_LANGUAGE); - this.state = 967; + this.state = 969; _la = this._input.LA(1); if(!(_la===65 || _la===106 || _la===125)) { this._errHandler.recoverInline(this); @@ -4865,21 +4869,21 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 970; + this.state = 972; this.match(FlinkSqlParser.KW_DROP); - this.state = 971; - this.match(FlinkSqlParser.KW_CATALOG); this.state = 973; + this.match(FlinkSqlParser.KW_CATALOG); + this.state = 975; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 89, this._ctx) ) { case 1: { - this.state = 972; + this.state = 974; this.ifExists(); } break; } - this.state = 975; + this.state = 977; this.uid(); } } @@ -4905,31 +4909,31 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 977; - this.match(FlinkSqlParser.KW_DROP); this.state = 979; + this.match(FlinkSqlParser.KW_DROP); + this.state = 981; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===149) { { - this.state = 978; + this.state = 980; this.match(FlinkSqlParser.KW_TEMPORARY); } } - this.state = 981; - this.match(FlinkSqlParser.KW_TABLE); this.state = 983; + this.match(FlinkSqlParser.KW_TABLE); + this.state = 985; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 91, this._ctx) ) { case 1: { - this.state = 982; + this.state = 984; this.ifExists(); } break; } - this.state = 985; + this.state = 987; this.uid(); } } @@ -4955,28 +4959,28 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 987; + this.state = 989; this.match(FlinkSqlParser.KW_DROP); - this.state = 988; - this.match(FlinkSqlParser.KW_DATABASE); this.state = 990; + this.match(FlinkSqlParser.KW_DATABASE); + this.state = 992; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 92, this._ctx) ) { case 1: { - this.state = 989; + this.state = 991; this.ifExists(); } break; } - this.state = 992; - this.uid(); this.state = 994; + this.uid(); + this.state = 996; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===11 || _la===122) { { - this.state = 993; + this.state = 995; localctx._dropType = this._input.LT(1); _la = this._input.LA(1); if(!(_la===11 || _la===122)) { @@ -5013,31 +5017,31 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 996; - this.match(FlinkSqlParser.KW_DROP); this.state = 998; + this.match(FlinkSqlParser.KW_DROP); + this.state = 1000; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===149) { { - this.state = 997; + this.state = 999; this.match(FlinkSqlParser.KW_TEMPORARY); } } - this.state = 1000; - this.match(FlinkSqlParser.KW_VIEW); this.state = 1002; + this.match(FlinkSqlParser.KW_VIEW); + this.state = 1004; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 95, this._ctx) ) { case 1: { - this.state = 1001; + this.state = 1003; this.ifExists(); } break; } - this.state = 1004; + this.state = 1006; this.uid(); } } @@ -5062,39 +5066,39 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1006; + this.state = 1008; this.match(FlinkSqlParser.KW_DROP); - this.state = 1010; + this.state = 1012; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 96, this._ctx) ) { case 1: { - this.state = 1007; + this.state = 1009; this.match(FlinkSqlParser.KW_TEMPORARY); } break; case 2: { - this.state = 1008; + this.state = 1010; this.match(FlinkSqlParser.KW_TEMPORARY); - this.state = 1009; + this.state = 1011; this.match(FlinkSqlParser.KW_SYSTEM); } break; } - this.state = 1012; - this.match(FlinkSqlParser.KW_FUNCTION); this.state = 1014; + this.match(FlinkSqlParser.KW_FUNCTION); + this.state = 1016; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 97, this._ctx) ) { case 1: { - this.state = 1013; + this.state = 1015; this.ifExists(); } break; } - this.state = 1016; + this.state = 1018; this.uid(); } } @@ -5118,24 +5122,24 @@ export default class FlinkSqlParser extends Parser { this.enterRule(localctx, 144, FlinkSqlParser.RULE_insertStatement); let _la: number; try { - this.state = 1024; + this.state = 1027; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 99, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 1019; + this.state = 1021; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===240) { { - this.state = 1018; + this.state = 1020; this.match(FlinkSqlParser.KW_EXECUTE); } } - this.state = 1021; + this.state = 1023; this.insertSimpleStatement(); } } @@ -5143,10 +5147,17 @@ export default class FlinkSqlParser extends Parser { case 2: this.enterOuterAlt(localctx, 2); { + this.state = 1024; + this.insertMulStatementCompatibility(); + } + break; + case 3: + this.enterOuterAlt(localctx, 3); { - this.state = 1022; + { + this.state = 1025; this.match(FlinkSqlParser.KW_EXECUTE); - this.state = 1023; + this.state = 1026; this.insertMulStatement(); } } @@ -5175,9 +5186,9 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1026; + this.state = 1029; this.match(FlinkSqlParser.KW_INSERT); - this.state = 1027; + this.state = 1030; _la = this._input.LA(1); if(!(_la===92 || _la===268)) { this._errHandler.recoverInline(this); @@ -5186,40 +5197,40 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1028; + this.state = 1031; this.uid(); - this.state = 1037; + this.state = 1040; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 102, this._ctx) ) { case 1: { - this.state = 1030; + this.state = 1033; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===307) { { - this.state = 1029; + this.state = 1032; this.insertPartitionDefinition(); } } - this.state = 1033; + this.state = 1036; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 101, this._ctx) ) { case 1: { - this.state = 1032; + this.state = 1035; this.columnNameList(); } break; } - this.state = 1035; + this.state = 1038; this.queryStatement(0); } break; case 2: { - this.state = 1036; + this.state = 1039; this.valuesDefinition(); } break; @@ -5247,9 +5258,9 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1039; + this.state = 1042; this.match(FlinkSqlParser.KW_PARTITION); - this.state = 1040; + this.state = 1043; this.tablePropertyList(); } } @@ -5275,23 +5286,23 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1042; + this.state = 1045; this.match(FlinkSqlParser.KW_VALUES); - this.state = 1043; + this.state = 1046; this.valuesRowDefinition(); - this.state = 1048; + this.state = 1051; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1044; + this.state = 1047; this.match(FlinkSqlParser.COMMA); - this.state = 1045; + this.state = 1048; this.valuesRowDefinition(); } } - this.state = 1050; + this.state = 1053; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -5319,27 +5330,27 @@ export default class FlinkSqlParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 1051; + this.state = 1054; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1052; + this.state = 1055; this.constant(); - this.state = 1057; + this.state = 1060; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1053; + this.state = 1056; this.match(FlinkSqlParser.COMMA); - this.state = 1054; + this.state = 1057; this.constant(); } } - this.state = 1059; + this.state = 1062; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1060; + this.state = 1063; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -5358,36 +5369,86 @@ export default class FlinkSqlParser extends Parser { return localctx; } // @RuleVersion(0) + public insertMulStatementCompatibility(): InsertMulStatementCompatibilityContext { + let localctx: InsertMulStatementCompatibilityContext = new InsertMulStatementCompatibilityContext(this, this._ctx, this.state); + this.enterRule(localctx, 154, FlinkSqlParser.RULE_insertMulStatementCompatibility); + let _la: number; + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 1065; + this.match(FlinkSqlParser.KW_BEGIN); + this.state = 1066; + this.match(FlinkSqlParser.KW_STATEMENT); + this.state = 1067; + this.match(FlinkSqlParser.KW_SET); + this.state = 1068; + this.match(FlinkSqlParser.SEMICOLON); + this.state = 1072; + this._errHandler.sync(this); + _la = this._input.LA(1); + do { + { + { + this.state = 1069; + this.insertSimpleStatement(); + this.state = 1070; + this.match(FlinkSqlParser.SEMICOLON); + } + } + this.state = 1074; + this._errHandler.sync(this); + _la = this._input.LA(1); + } while (_la===263); + this.state = 1076; + this.match(FlinkSqlParser.KW_END); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) public insertMulStatement(): InsertMulStatementContext { let localctx: InsertMulStatementContext = new InsertMulStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 154, FlinkSqlParser.RULE_insertMulStatement); + this.enterRule(localctx, 156, FlinkSqlParser.RULE_insertMulStatement); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1062; + this.state = 1078; this.match(FlinkSqlParser.KW_STATEMENT); - this.state = 1063; + this.state = 1079; this.match(FlinkSqlParser.KW_SET); - this.state = 1064; + this.state = 1080; this.match(FlinkSqlParser.KW_BEGIN); - this.state = 1068; + this.state = 1084; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1065; + this.state = 1081; this.insertSimpleStatement(); - this.state = 1066; + this.state = 1082; this.match(FlinkSqlParser.SEMICOLON); } } - this.state = 1070; + this.state = 1086; this._errHandler.sync(this); _la = this._input.LA(1); } while (_la===263); - this.state = 1072; + this.state = 1088; this.match(FlinkSqlParser.KW_END); } } @@ -5418,60 +5479,60 @@ export default class FlinkSqlParser extends Parser { let _parentState: number = this.state; let localctx: QueryStatementContext = new QueryStatementContext(this, this._ctx, _parentState); let _prevctx: QueryStatementContext = localctx; - let _startState: number = 156; - this.enterRecursionRule(localctx, 156, FlinkSqlParser.RULE_queryStatement, _p); + let _startState: number = 158; + this.enterRecursionRule(localctx, 158, FlinkSqlParser.RULE_queryStatement, _p); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1097; + this.state = 1113; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 110, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 111, this._ctx) ) { case 1: { - this.state = 1075; + this.state = 1091; this.valuesCaluse(); } break; case 2: { - this.state = 1076; + this.state = 1092; this.withClause(); - this.state = 1077; + this.state = 1093; this.queryStatement(5); } break; case 3: { - this.state = 1079; + this.state = 1095; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1080; + this.state = 1096; this.queryStatement(0); - this.state = 1081; + this.state = 1097; this.match(FlinkSqlParser.RR_BRACKET); } break; case 4: { - this.state = 1083; + this.state = 1099; this.selectClause(); - this.state = 1085; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 106, this._ctx) ) { - case 1: - { - this.state = 1084; - this.orderByCaluse(); - } - break; - } - this.state = 1088; + this.state = 1101; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 107, this._ctx) ) { case 1: { - this.state = 1087; + this.state = 1100; + this.orderByCaluse(); + } + break; + } + this.state = 1104; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 108, this._ctx) ) { + case 1: + { + this.state = 1103; this.limitClause(); } break; @@ -5480,24 +5541,24 @@ export default class FlinkSqlParser extends Parser { break; case 5: { - this.state = 1090; + this.state = 1106; this.selectStatement(); - this.state = 1092; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 108, this._ctx) ) { - case 1: - { - this.state = 1091; - this.orderByCaluse(); - } - break; - } - this.state = 1095; + this.state = 1108; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 109, this._ctx) ) { case 1: { - this.state = 1094; + this.state = 1107; + this.orderByCaluse(); + } + break; + } + this.state = 1111; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 110, this._ctx) ) { + case 1: + { + this.state = 1110; this.limitClause(); } break; @@ -5506,9 +5567,9 @@ export default class FlinkSqlParser extends Parser { break; } this._ctx.stop = this._input.LT(-1); - this.state = 1113; + this.state = 1129; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 114, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 115, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -5520,11 +5581,11 @@ export default class FlinkSqlParser extends Parser { localctx = new QueryStatementContext(this, _parentctx, _parentState); localctx._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_queryStatement); - this.state = 1099; + this.state = 1115; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 1100; + this.state = 1116; localctx._operator = this._input.LT(1); _la = this._input.LA(1); if(!(_la===239 || _la===266 || _la===346)) { @@ -5534,34 +5595,34 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1102; + this.state = 1118; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===176) { { - this.state = 1101; + this.state = 1117; this.match(FlinkSqlParser.KW_ALL); } } - this.state = 1104; + this.state = 1120; localctx._right = this.queryStatement(0); - this.state = 1106; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 112, this._ctx) ) { - case 1: - { - this.state = 1105; - this.orderByCaluse(); - } - break; - } - this.state = 1109; + this.state = 1122; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 113, this._ctx) ) { case 1: { - this.state = 1108; + this.state = 1121; + this.orderByCaluse(); + } + break; + } + this.state = 1125; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 114, this._ctx) ) { + case 1: + { + this.state = 1124; this.limitClause(); } break; @@ -5569,9 +5630,9 @@ export default class FlinkSqlParser extends Parser { } } } - this.state = 1115; + this.state = 1131; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 114, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 115, this._ctx); } } } @@ -5592,32 +5653,32 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public valuesCaluse(): ValuesCaluseContext { let localctx: ValuesCaluseContext = new ValuesCaluseContext(this, this._ctx, this.state); - this.enterRule(localctx, 158, FlinkSqlParser.RULE_valuesCaluse); + this.enterRule(localctx, 160, FlinkSqlParser.RULE_valuesCaluse); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1116; + this.state = 1132; this.match(FlinkSqlParser.KW_VALUES); - this.state = 1117; + this.state = 1133; this.expression(); - this.state = 1122; + this.state = 1138; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 115, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 116, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1118; + this.state = 1134; this.match(FlinkSqlParser.COMMA); - this.state = 1119; + this.state = 1135; this.expression(); } } } - this.state = 1124; + this.state = 1140; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 115, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 116, this._ctx); } } } @@ -5638,28 +5699,28 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public withClause(): WithClauseContext { let localctx: WithClauseContext = new WithClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 160, FlinkSqlParser.RULE_withClause); + this.enterRule(localctx, 162, FlinkSqlParser.RULE_withClause); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1125; + this.state = 1141; this.match(FlinkSqlParser.KW_WITH); - this.state = 1126; + this.state = 1142; this.withItem(); - this.state = 1131; + this.state = 1147; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1127; + this.state = 1143; this.match(FlinkSqlParser.COMMA); - this.state = 1128; + this.state = 1144; this.withItem(); } } - this.state = 1133; + this.state = 1149; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -5682,50 +5743,50 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public withItem(): WithItemContext { let localctx: WithItemContext = new WithItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 162, FlinkSqlParser.RULE_withItem); + this.enterRule(localctx, 164, FlinkSqlParser.RULE_withItem); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1134; + this.state = 1150; this.withItemName(); - this.state = 1146; + this.state = 1162; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===376) { { - this.state = 1135; + this.state = 1151; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1136; + this.state = 1152; this.columnName(); - this.state = 1141; + this.state = 1157; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1137; + this.state = 1153; this.match(FlinkSqlParser.COMMA); - this.state = 1138; + this.state = 1154; this.columnName(); } } - this.state = 1143; + this.state = 1159; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1144; + this.state = 1160; this.match(FlinkSqlParser.RR_BRACKET); } } - this.state = 1148; + this.state = 1164; this.match(FlinkSqlParser.KW_AS); - this.state = 1149; + this.state = 1165; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1150; + this.state = 1166; this.queryStatement(0); - this.state = 1151; + this.state = 1167; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -5746,11 +5807,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public withItemName(): WithItemNameContext { let localctx: WithItemNameContext = new WithItemNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 164, FlinkSqlParser.RULE_withItemName); + this.enterRule(localctx, 166, FlinkSqlParser.RULE_withItemName); try { this.enterOuterAlt(localctx, 1); { - this.state = 1153; + this.state = 1169; this.identifier(); } } @@ -5771,54 +5832,54 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public selectStatement(): SelectStatementContext { let localctx: SelectStatementContext = new SelectStatementContext(this, this._ctx, this.state); - this.enterRule(localctx, 166, FlinkSqlParser.RULE_selectStatement); + this.enterRule(localctx, 168, FlinkSqlParser.RULE_selectStatement); try { - this.state = 1173; + this.state = 1189; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 123, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 124, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1155; + this.state = 1171; this.selectClause(); - this.state = 1156; + this.state = 1172; this.fromClause(); - this.state = 1158; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 119, this._ctx) ) { - case 1: - { - this.state = 1157; - this.whereClause(); - } - break; - } - this.state = 1161; + this.state = 1174; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 120, this._ctx) ) { case 1: { - this.state = 1160; - this.groupByClause(); + this.state = 1173; + this.whereClause(); } break; } - this.state = 1164; + this.state = 1177; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 121, this._ctx) ) { case 1: { - this.state = 1163; - this.havingClause(); + this.state = 1176; + this.groupByClause(); } break; } - this.state = 1167; + this.state = 1180; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 122, this._ctx) ) { case 1: { - this.state = 1166; + this.state = 1179; + this.havingClause(); + } + break; + } + this.state = 1183; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 123, this._ctx) ) { + case 1: + { + this.state = 1182; this.windowClause(); } break; @@ -5828,11 +5889,11 @@ export default class FlinkSqlParser extends Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1169; + this.state = 1185; this.selectClause(); - this.state = 1170; + this.state = 1186; this.fromClause(); - this.state = 1171; + this.state = 1187; this.matchRecognizeClause(); } break; @@ -5855,53 +5916,53 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public selectClause(): SelectClauseContext { let localctx: SelectClauseContext = new SelectClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 168, FlinkSqlParser.RULE_selectClause); + this.enterRule(localctx, 170, FlinkSqlParser.RULE_selectClause); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1175; + this.state = 1191; this.match(FlinkSqlParser.KW_SELECT); - this.state = 1177; + this.state = 1193; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 124, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 125, this._ctx) ) { case 1: { - this.state = 1176; + this.state = 1192; this.setQuantifier(); } break; } - this.state = 1188; + this.state = 1204; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 126, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 127, this._ctx) ) { case 1: { - this.state = 1179; + this.state = 1195; this.match(FlinkSqlParser.ASTERISK_SIGN); } break; case 2: { - this.state = 1180; + this.state = 1196; this.projectItemDefinition(); - this.state = 1185; + this.state = 1201; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 125, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 126, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1181; + this.state = 1197; this.match(FlinkSqlParser.COMMA); - this.state = 1182; + this.state = 1198; this.projectItemDefinition(); } } } - this.state = 1187; + this.state = 1203; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 125, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 126, this._ctx); } } break; @@ -5925,39 +5986,39 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public projectItemDefinition(): ProjectItemDefinitionContext { let localctx: ProjectItemDefinitionContext = new ProjectItemDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 170, FlinkSqlParser.RULE_projectItemDefinition); + this.enterRule(localctx, 172, FlinkSqlParser.RULE_projectItemDefinition); try { - this.state = 1198; + this.state = 1214; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 129, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 130, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1190; + this.state = 1206; this.overWindowItem(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1191; + this.state = 1207; this.expression(); - this.state = 1196; + this.state = 1212; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 128, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 129, this._ctx) ) { case 1: { - this.state = 1193; + this.state = 1209; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 127, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 128, this._ctx) ) { case 1: { - this.state = 1192; + this.state = 1208; this.match(FlinkSqlParser.KW_AS); } break; } - this.state = 1195; + this.state = 1211; this.expression(); } break; @@ -5983,38 +6044,38 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public overWindowItem(): OverWindowItemContext { let localctx: OverWindowItemContext = new OverWindowItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 172, FlinkSqlParser.RULE_overWindowItem); + this.enterRule(localctx, 174, FlinkSqlParser.RULE_overWindowItem); try { - this.state = 1212; + this.state = 1228; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 130, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 131, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1200; + this.state = 1216; this.primaryExpression(0); - this.state = 1201; + this.state = 1217; this.match(FlinkSqlParser.KW_OVER); - this.state = 1202; + this.state = 1218; this.windowSpec(); - this.state = 1203; + this.state = 1219; this.match(FlinkSqlParser.KW_AS); - this.state = 1204; + this.state = 1220; this.identifier(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1206; + this.state = 1222; this.primaryExpression(0); - this.state = 1207; + this.state = 1223; this.match(FlinkSqlParser.KW_OVER); - this.state = 1208; + this.state = 1224; this.errorCapturingIdentifier(); - this.state = 1209; + this.state = 1225; this.match(FlinkSqlParser.KW_AS); - this.state = 1210; + this.state = 1226; this.identifier(); } break; @@ -6037,13 +6098,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public fromClause(): FromClauseContext { let localctx: FromClauseContext = new FromClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 174, FlinkSqlParser.RULE_fromClause); + this.enterRule(localctx, 176, FlinkSqlParser.RULE_fromClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 1214; + this.state = 1230; this.match(FlinkSqlParser.KW_FROM); - this.state = 1215; + this.state = 1231; this.tableExpression(0); } } @@ -6074,57 +6135,57 @@ export default class FlinkSqlParser extends Parser { let _parentState: number = this.state; let localctx: TableExpressionContext = new TableExpressionContext(this, this._ctx, _parentState); let _prevctx: TableExpressionContext = localctx; - let _startState: number = 176; - this.enterRecursionRule(localctx, 176, FlinkSqlParser.RULE_tableExpression, _p); + let _startState: number = 178; + this.enterRecursionRule(localctx, 178, FlinkSqlParser.RULE_tableExpression, _p); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1228; + this.state = 1244; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 132, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 133, this._ctx) ) { case 1: { - this.state = 1218; + this.state = 1234; this.tableReference(); - this.state = 1223; + this.state = 1239; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 131, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 132, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1219; + this.state = 1235; this.match(FlinkSqlParser.COMMA); - this.state = 1220; + this.state = 1236; this.tableReference(); } } } - this.state = 1225; + this.state = 1241; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 131, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 132, this._ctx); } } break; case 2: { - this.state = 1226; + this.state = 1242; this.inlineDataValueClause(); } break; case 3: { - this.state = 1227; + this.state = 1243; this.windoTVFClause(); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 1251; + this.state = 1267; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 138, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 139, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -6132,22 +6193,22 @@ export default class FlinkSqlParser extends Parser { } _prevctx = localctx; { - this.state = 1249; + this.state = 1265; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 137, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 138, this._ctx) ) { case 1: { localctx = new TableExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_tableExpression); - this.state = 1230; + this.state = 1246; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 1231; + this.state = 1247; this.match(FlinkSqlParser.KW_CROSS); - this.state = 1232; + this.state = 1248; this.match(FlinkSqlParser.KW_JOIN); - this.state = 1233; + this.state = 1249; this.tableExpression(4); } break; @@ -6155,26 +6216,26 @@ export default class FlinkSqlParser extends Parser { { localctx = new TableExpressionContext(this, _parentctx, _parentState); this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_tableExpression); - this.state = 1234; + this.state = 1250; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 1236; + this.state = 1252; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===290) { { - this.state = 1235; + this.state = 1251; this.match(FlinkSqlParser.KW_NATURAL); } } - this.state = 1239; + this.state = 1255; this._errHandler.sync(this); _la = this._input.LA(1); if (((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 67112961) !== 0) || _la===318) { { - this.state = 1238; + this.state = 1254; _la = this._input.LA(1); if(!(((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 67112961) !== 0) || _la===318)) { this._errHandler.recoverInline(this); @@ -6186,26 +6247,26 @@ export default class FlinkSqlParser extends Parser { } } - this.state = 1242; + this.state = 1258; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===304) { { - this.state = 1241; + this.state = 1257; this.match(FlinkSqlParser.KW_OUTER); } } - this.state = 1244; + this.state = 1260; this.match(FlinkSqlParser.KW_JOIN); - this.state = 1245; + this.state = 1261; this.tableExpression(0); - this.state = 1247; + this.state = 1263; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 136, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 137, this._ctx) ) { case 1: { - this.state = 1246; + this.state = 1262; this.joinCondition(); } break; @@ -6215,9 +6276,9 @@ export default class FlinkSqlParser extends Parser { } } } - this.state = 1253; + this.state = 1269; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 138, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 139, this._ctx); } } } @@ -6238,18 +6299,18 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tableReference(): TableReferenceContext { let localctx: TableReferenceContext = new TableReferenceContext(this, this._ctx, this.state); - this.enterRule(localctx, 178, FlinkSqlParser.RULE_tableReference); + this.enterRule(localctx, 180, FlinkSqlParser.RULE_tableReference); try { this.enterOuterAlt(localctx, 1); { - this.state = 1254; + this.state = 1270; this.tablePrimary(); - this.state = 1256; + this.state = 1272; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 139, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 140, this._ctx) ) { case 1: { - this.state = 1255; + this.state = 1271; this.tableAlias(); } break; @@ -6273,53 +6334,53 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tablePrimary(): TablePrimaryContext { let localctx: TablePrimaryContext = new TablePrimaryContext(this, this._ctx, this.state); - this.enterRule(localctx, 180, FlinkSqlParser.RULE_tablePrimary); + this.enterRule(localctx, 182, FlinkSqlParser.RULE_tablePrimary); let _la: number; try { - this.state = 1299; + this.state = 1315; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 146, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 147, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1259; + this.state = 1275; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===337) { { - this.state = 1258; + this.state = 1274; this.match(FlinkSqlParser.KW_TABLE); } } - this.state = 1261; + this.state = 1277; this.tablePath(); - this.state = 1263; + this.state = 1279; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 141, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 142, this._ctx) ) { case 1: { - this.state = 1262; + this.state = 1278; this.systemTimePeriod(); } break; } - this.state = 1269; + this.state = 1285; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 143, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 144, this._ctx) ) { case 1: { - this.state = 1266; + this.state = 1282; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===183) { { - this.state = 1265; + this.state = 1281; this.match(FlinkSqlParser.KW_AS); } } - this.state = 1268; + this.state = 1284; this.correlationName(); } break; @@ -6329,71 +6390,71 @@ export default class FlinkSqlParser extends Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1271; + this.state = 1287; this.match(FlinkSqlParser.KW_LATERAL); - this.state = 1272; + this.state = 1288; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1273; + this.state = 1289; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1274; + this.state = 1290; this.functionName(); - this.state = 1275; + this.state = 1291; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1276; + this.state = 1292; this.expression(); - this.state = 1281; + this.state = 1297; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1277; + this.state = 1293; this.match(FlinkSqlParser.COMMA); - this.state = 1278; + this.state = 1294; this.expression(); } } - this.state = 1283; + this.state = 1299; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1284; + this.state = 1300; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1285; + this.state = 1301; this.match(FlinkSqlParser.RR_BRACKET); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1288; + this.state = 1304; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===273) { { - this.state = 1287; + this.state = 1303; this.match(FlinkSqlParser.KW_LATERAL); } } - this.state = 1290; + this.state = 1306; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1291; + this.state = 1307; this.queryStatement(0); - this.state = 1292; + this.state = 1308; this.match(FlinkSqlParser.RR_BRACKET); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1294; + this.state = 1310; this.match(FlinkSqlParser.KW_UNNEST); - this.state = 1295; + this.state = 1311; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1296; + this.state = 1312; this.expression(); - this.state = 1297; + this.state = 1313; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -6416,11 +6477,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tablePath(): TablePathContext { let localctx: TablePathContext = new TablePathContext(this, this._ctx, this.state); - this.enterRule(localctx, 182, FlinkSqlParser.RULE_tablePath); + this.enterRule(localctx, 184, FlinkSqlParser.RULE_tablePath); try { this.enterOuterAlt(localctx, 1); { - this.state = 1301; + this.state = 1317; this.uid(); } } @@ -6441,19 +6502,19 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public systemTimePeriod(): SystemTimePeriodContext { let localctx: SystemTimePeriodContext = new SystemTimePeriodContext(this, this._ctx, this.state); - this.enterRule(localctx, 184, FlinkSqlParser.RULE_systemTimePeriod); + this.enterRule(localctx, 186, FlinkSqlParser.RULE_systemTimePeriod); try { this.enterOuterAlt(localctx, 1); { - this.state = 1303; + this.state = 1319; this.match(FlinkSqlParser.KW_FOR); - this.state = 1304; + this.state = 1320; this.match(FlinkSqlParser.KW_SYSTEM_TIME); - this.state = 1305; + this.state = 1321; this.match(FlinkSqlParser.KW_AS); - this.state = 1306; + this.state = 1322; this.match(FlinkSqlParser.KW_OF); - this.state = 1307; + this.state = 1323; this.dateTimeExpression(); } } @@ -6474,11 +6535,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public dateTimeExpression(): DateTimeExpressionContext { let localctx: DateTimeExpressionContext = new DateTimeExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 186, FlinkSqlParser.RULE_dateTimeExpression); + this.enterRule(localctx, 188, FlinkSqlParser.RULE_dateTimeExpression); try { this.enterOuterAlt(localctx, 1); { - this.state = 1309; + this.state = 1325; this.expression(); } } @@ -6499,17 +6560,17 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public inlineDataValueClause(): InlineDataValueClauseContext { let localctx: InlineDataValueClauseContext = new InlineDataValueClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 188, FlinkSqlParser.RULE_inlineDataValueClause); + this.enterRule(localctx, 190, FlinkSqlParser.RULE_inlineDataValueClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 1311; + this.state = 1327; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1312; + this.state = 1328; this.valuesDefinition(); - this.state = 1313; + this.state = 1329; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1314; + this.state = 1330; this.tableAlias(); } } @@ -6530,17 +6591,17 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public windoTVFClause(): WindoTVFClauseContext { let localctx: WindoTVFClauseContext = new WindoTVFClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 190, FlinkSqlParser.RULE_windoTVFClause); + this.enterRule(localctx, 192, FlinkSqlParser.RULE_windoTVFClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 1316; + this.state = 1332; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1317; + this.state = 1333; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1318; + this.state = 1334; this.windowTVFExression(); - this.state = 1319; + this.state = 1335; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -6561,34 +6622,34 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public windowTVFExression(): WindowTVFExressionContext { let localctx: WindowTVFExressionContext = new WindowTVFExressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 192, FlinkSqlParser.RULE_windowTVFExression); + this.enterRule(localctx, 194, FlinkSqlParser.RULE_windowTVFExression); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1321; + this.state = 1337; this.windoTVFName(); - this.state = 1322; + this.state = 1338; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1323; + this.state = 1339; this.windowTVFParam(); - this.state = 1328; + this.state = 1344; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1324; + this.state = 1340; this.match(FlinkSqlParser.COMMA); - this.state = 1325; + this.state = 1341; this.windowTVFParam(); } } - this.state = 1330; + this.state = 1346; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1331; + this.state = 1347; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -6609,12 +6670,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public windoTVFName(): WindoTVFNameContext { let localctx: WindoTVFNameContext = new WindoTVFNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 194, FlinkSqlParser.RULE_windoTVFName); + this.enterRule(localctx, 196, FlinkSqlParser.RULE_windoTVFName); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1333; + this.state = 1349; _la = this._input.LA(1); if(!(_la===23 || _la===56 || _la===155)) { this._errHandler.recoverInline(this); @@ -6642,66 +6703,66 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public windowTVFParam(): WindowTVFParamContext { let localctx: WindowTVFParamContext = new WindowTVFParamContext(this, this._ctx, this.state); - this.enterRule(localctx, 196, FlinkSqlParser.RULE_windowTVFParam); + this.enterRule(localctx, 198, FlinkSqlParser.RULE_windowTVFParam); try { - this.state = 1350; + this.state = 1366; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 148, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 149, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1335; + this.state = 1351; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1336; + this.state = 1352; this.timeAttrColumn(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1337; + this.state = 1353; this.columnDescriptor(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1338; + this.state = 1354; this.timeIntervalExpression(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1339; + this.state = 1355; this.match(FlinkSqlParser.KW_DATA); - this.state = 1340; + this.state = 1356; this.match(FlinkSqlParser.DOUBLE_RIGHT_ARROW); - this.state = 1341; + this.state = 1357; this.match(FlinkSqlParser.KW_TABLE); - this.state = 1342; + this.state = 1358; this.timeAttrColumn(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 1343; + this.state = 1359; this.match(FlinkSqlParser.KW_TIMECOL); - this.state = 1344; + this.state = 1360; this.match(FlinkSqlParser.DOUBLE_RIGHT_ARROW); - this.state = 1345; + this.state = 1361; this.columnDescriptor(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 1346; + this.state = 1362; this.timeIntervalParamName(); - this.state = 1347; + this.state = 1363; this.match(FlinkSqlParser.DOUBLE_RIGHT_ARROW); - this.state = 1348; + this.state = 1364; this.timeIntervalExpression(); } break; @@ -6724,12 +6785,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public timeIntervalParamName(): TimeIntervalParamNameContext { let localctx: TimeIntervalParamNameContext = new TimeIntervalParamNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 198, FlinkSqlParser.RULE_timeIntervalParamName); + this.enterRule(localctx, 200, FlinkSqlParser.RULE_timeIntervalParamName); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1352; + this.state = 1368; _la = this._input.LA(1); if(!(_la===24 || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & 4163) !== 0) || _la===298)) { this._errHandler.recoverInline(this); @@ -6757,17 +6818,17 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public columnDescriptor(): ColumnDescriptorContext { let localctx: ColumnDescriptorContext = new ColumnDescriptorContext(this, this._ctx, this.state); - this.enterRule(localctx, 200, FlinkSqlParser.RULE_columnDescriptor); + this.enterRule(localctx, 202, FlinkSqlParser.RULE_columnDescriptor); try { this.enterOuterAlt(localctx, 1); { - this.state = 1354; + this.state = 1370; this.match(FlinkSqlParser.KW_DESCRIPTOR); - this.state = 1355; + this.state = 1371; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1356; + this.state = 1372; this.uid(); - this.state = 1357; + this.state = 1373; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -6788,47 +6849,47 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public joinCondition(): JoinConditionContext { let localctx: JoinConditionContext = new JoinConditionContext(this, this._ctx, this.state); - this.enterRule(localctx, 202, FlinkSqlParser.RULE_joinCondition); + this.enterRule(localctx, 204, FlinkSqlParser.RULE_joinCondition); let _la: number; try { - this.state = 1373; + this.state = 1389; this._errHandler.sync(this); switch (this._input.LA(1)) { case 299: this.enterOuterAlt(localctx, 1); { - this.state = 1359; + this.state = 1375; this.match(FlinkSqlParser.KW_ON); - this.state = 1360; + this.state = 1376; this.booleanExpression(0); } break; case 353: this.enterOuterAlt(localctx, 2); { - this.state = 1361; + this.state = 1377; this.match(FlinkSqlParser.KW_USING); - this.state = 1362; + this.state = 1378; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1363; + this.state = 1379; this.uid(); - this.state = 1368; + this.state = 1384; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1364; + this.state = 1380; this.match(FlinkSqlParser.COMMA); - this.state = 1365; + this.state = 1381; this.uid(); } } - this.state = 1370; + this.state = 1386; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1371; + this.state = 1387; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -6853,13 +6914,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public whereClause(): WhereClauseContext { let localctx: WhereClauseContext = new WhereClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 204, FlinkSqlParser.RULE_whereClause); + this.enterRule(localctx, 206, FlinkSqlParser.RULE_whereClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 1375; + this.state = 1391; this.match(FlinkSqlParser.KW_WHERE); - this.state = 1376; + this.state = 1392; this.booleanExpression(0); } } @@ -6880,34 +6941,34 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public groupByClause(): GroupByClauseContext { let localctx: GroupByClauseContext = new GroupByClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 206, FlinkSqlParser.RULE_groupByClause); + this.enterRule(localctx, 208, FlinkSqlParser.RULE_groupByClause); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1378; + this.state = 1394; this.match(FlinkSqlParser.KW_GROUP); - this.state = 1379; + this.state = 1395; this.match(FlinkSqlParser.KW_BY); - this.state = 1380; + this.state = 1396; this.groupItemDefinition(); - this.state = 1385; + this.state = 1401; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 151, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 152, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1381; + this.state = 1397; this.match(FlinkSqlParser.COMMA); - this.state = 1382; + this.state = 1398; this.groupItemDefinition(); } } } - this.state = 1387; + this.state = 1403; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 151, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 152, this._ctx); } } } @@ -6928,117 +6989,117 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public groupItemDefinition(): GroupItemDefinitionContext { let localctx: GroupItemDefinitionContext = new GroupItemDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 208, FlinkSqlParser.RULE_groupItemDefinition); + this.enterRule(localctx, 210, FlinkSqlParser.RULE_groupItemDefinition); let _la: number; try { - this.state = 1427; + this.state = 1443; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 155, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 156, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1388; + this.state = 1404; this.expression(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1389; + this.state = 1405; this.groupWindowFunction(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1390; + this.state = 1406; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1391; + this.state = 1407; this.match(FlinkSqlParser.RR_BRACKET); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1392; + this.state = 1408; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1393; + this.state = 1409; this.expression(); - this.state = 1398; + this.state = 1414; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1394; + this.state = 1410; this.match(FlinkSqlParser.COMMA); - this.state = 1395; + this.state = 1411; this.expression(); } } - this.state = 1400; + this.state = 1416; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1401; + this.state = 1417; this.match(FlinkSqlParser.RR_BRACKET); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 1403; + this.state = 1419; this.groupingSetsNotaionName(); - this.state = 1404; + this.state = 1420; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1405; + this.state = 1421; this.expression(); - this.state = 1410; + this.state = 1426; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1406; + this.state = 1422; this.match(FlinkSqlParser.COMMA); - this.state = 1407; + this.state = 1423; this.expression(); } } - this.state = 1412; + this.state = 1428; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1413; + this.state = 1429; this.match(FlinkSqlParser.RR_BRACKET); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 1415; + this.state = 1431; this.groupingSets(); - this.state = 1416; + this.state = 1432; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1417; + this.state = 1433; this.groupItemDefinition(); - this.state = 1422; + this.state = 1438; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1418; + this.state = 1434; this.match(FlinkSqlParser.COMMA); - this.state = 1419; + this.state = 1435; this.groupItemDefinition(); } } - this.state = 1424; + this.state = 1440; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1425; + this.state = 1441; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -7061,13 +7122,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public groupingSets(): GroupingSetsContext { let localctx: GroupingSetsContext = new GroupingSetsContext(this, this._ctx, this.state); - this.enterRule(localctx, 210, FlinkSqlParser.RULE_groupingSets); + this.enterRule(localctx, 212, FlinkSqlParser.RULE_groupingSets); try { this.enterOuterAlt(localctx, 1); { - this.state = 1429; + this.state = 1445; this.match(FlinkSqlParser.KW_GROUPING); - this.state = 1430; + this.state = 1446; this.match(FlinkSqlParser.KW_SETS); } } @@ -7088,12 +7149,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public groupingSetsNotaionName(): GroupingSetsNotaionNameContext { let localctx: GroupingSetsNotaionNameContext = new GroupingSetsNotaionNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 212, FlinkSqlParser.RULE_groupingSetsNotaionName); + this.enterRule(localctx, 214, FlinkSqlParser.RULE_groupingSetsNotaionName); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1432; + this.state = 1448; _la = this._input.LA(1); if(!(_la===218 || _la===321)) { this._errHandler.recoverInline(this); @@ -7121,21 +7182,21 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public groupWindowFunction(): GroupWindowFunctionContext { let localctx: GroupWindowFunctionContext = new GroupWindowFunctionContext(this, this._ctx, this.state); - this.enterRule(localctx, 214, FlinkSqlParser.RULE_groupWindowFunction); + this.enterRule(localctx, 216, FlinkSqlParser.RULE_groupWindowFunction); try { this.enterOuterAlt(localctx, 1); { - this.state = 1434; + this.state = 1450; this.groupWindowFunctionName(); - this.state = 1435; + this.state = 1451; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1436; + this.state = 1452; this.timeAttrColumn(); - this.state = 1437; + this.state = 1453; this.match(FlinkSqlParser.COMMA); - this.state = 1438; + this.state = 1454; this.timeIntervalExpression(); - this.state = 1439; + this.state = 1455; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -7156,12 +7217,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public groupWindowFunctionName(): GroupWindowFunctionNameContext { let localctx: GroupWindowFunctionNameContext = new GroupWindowFunctionNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 216, FlinkSqlParser.RULE_groupWindowFunctionName); + this.enterRule(localctx, 218, FlinkSqlParser.RULE_groupWindowFunctionName); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1441; + this.state = 1457; _la = this._input.LA(1); if(!(_la===56 || _la===135 || _la===155)) { this._errHandler.recoverInline(this); @@ -7189,11 +7250,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public timeAttrColumn(): TimeAttrColumnContext { let localctx: TimeAttrColumnContext = new TimeAttrColumnContext(this, this._ctx, this.state); - this.enterRule(localctx, 218, FlinkSqlParser.RULE_timeAttrColumn); + this.enterRule(localctx, 220, FlinkSqlParser.RULE_timeAttrColumn); try { this.enterOuterAlt(localctx, 1); { - this.state = 1443; + this.state = 1459; this.uid(); } } @@ -7214,13 +7275,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public havingClause(): HavingClauseContext { let localctx: HavingClauseContext = new HavingClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 220, FlinkSqlParser.RULE_havingClause); + this.enterRule(localctx, 222, FlinkSqlParser.RULE_havingClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 1445; + this.state = 1461; this.match(FlinkSqlParser.KW_HAVING); - this.state = 1446; + this.state = 1462; this.booleanExpression(0); } } @@ -7241,32 +7302,32 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public windowClause(): WindowClauseContext { let localctx: WindowClauseContext = new WindowClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 222, FlinkSqlParser.RULE_windowClause); + this.enterRule(localctx, 224, FlinkSqlParser.RULE_windowClause); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1448; + this.state = 1464; this.match(FlinkSqlParser.KW_WINDOW); - this.state = 1449; + this.state = 1465; this.namedWindow(); - this.state = 1454; + this.state = 1470; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 156, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 157, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1450; + this.state = 1466; this.match(FlinkSqlParser.COMMA); - this.state = 1451; + this.state = 1467; this.namedWindow(); } } } - this.state = 1456; + this.state = 1472; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 156, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 157, this._ctx); } } } @@ -7287,15 +7348,15 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public namedWindow(): NamedWindowContext { let localctx: NamedWindowContext = new NamedWindowContext(this, this._ctx, this.state); - this.enterRule(localctx, 224, FlinkSqlParser.RULE_namedWindow); + this.enterRule(localctx, 226, FlinkSqlParser.RULE_namedWindow); try { this.enterOuterAlt(localctx, 1); { - this.state = 1457; + this.state = 1473; localctx._name = this.errorCapturingIdentifier(); - this.state = 1458; + this.state = 1474; this.match(FlinkSqlParser.KW_AS); - this.state = 1459; + this.state = 1475; this.windowSpec(); } } @@ -7316,54 +7377,54 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public windowSpec(): WindowSpecContext { let localctx: WindowSpecContext = new WindowSpecContext(this, this._ctx, this.state); - this.enterRule(localctx, 226, FlinkSqlParser.RULE_windowSpec); + this.enterRule(localctx, 228, FlinkSqlParser.RULE_windowSpec); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1462; + this.state = 1478; this._errHandler.sync(this); _la = this._input.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294967280) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4294967295) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4294967295) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 4294967295) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 4294967295) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 32767) !== 0) || ((((_la - 397)) & ~0x1F) === 0 && ((1 << (_la - 397)) & 19) !== 0)) { { - this.state = 1461; + this.state = 1477; localctx._name = this.errorCapturingIdentifier(); } } - this.state = 1464; + this.state = 1480; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1466; + this.state = 1482; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===307) { { - this.state = 1465; + this.state = 1481; this.partitionByClause(); } } - this.state = 1469; + this.state = 1485; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===302) { { - this.state = 1468; + this.state = 1484; this.orderByCaluse(); } } - this.state = 1472; + this.state = 1488; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===314 || _la===323) { { - this.state = 1471; + this.state = 1487; this.windowFrame(); } } - this.state = 1474; + this.state = 1490; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -7384,95 +7445,95 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public matchRecognizeClause(): MatchRecognizeClauseContext { let localctx: MatchRecognizeClauseContext = new MatchRecognizeClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 228, FlinkSqlParser.RULE_matchRecognizeClause); + this.enterRule(localctx, 230, FlinkSqlParser.RULE_matchRecognizeClause); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1476; + this.state = 1492; this.match(FlinkSqlParser.KW_MATCH_RECOGNIZE); - this.state = 1477; + this.state = 1493; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1479; + this.state = 1495; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===307) { { - this.state = 1478; + this.state = 1494; this.partitionByClause(); } } - this.state = 1482; + this.state = 1498; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===302) { { - this.state = 1481; + this.state = 1497; this.orderByCaluse(); } } - this.state = 1485; + this.state = 1501; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===281) { { - this.state = 1484; + this.state = 1500; this.measuresClause(); } } - this.state = 1488; + this.state = 1504; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===176 || _la===300) { { - this.state = 1487; + this.state = 1503; this.outputMode(); } } - this.state = 1491; + this.state = 1507; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===6) { { - this.state = 1490; + this.state = 1506; this.afterMatchStrategy(); } } - this.state = 1494; + this.state = 1510; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===308) { { - this.state = 1493; + this.state = 1509; this.patternDefination(); } } - this.state = 1496; + this.state = 1512; this.patternVariablesDefination(); - this.state = 1497; + this.state = 1513; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1502; + this.state = 1518; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 168, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 169, this._ctx) ) { case 1: { - this.state = 1499; + this.state = 1515; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===183) { { - this.state = 1498; + this.state = 1514; this.match(FlinkSqlParser.KW_AS); } } - this.state = 1501; + this.state = 1517; this.identifier(); } break; @@ -7496,34 +7557,34 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public orderByCaluse(): OrderByCaluseContext { let localctx: OrderByCaluseContext = new OrderByCaluseContext(this, this._ctx, this.state); - this.enterRule(localctx, 230, FlinkSqlParser.RULE_orderByCaluse); + this.enterRule(localctx, 232, FlinkSqlParser.RULE_orderByCaluse); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1504; + this.state = 1520; this.match(FlinkSqlParser.KW_ORDER); - this.state = 1505; + this.state = 1521; this.match(FlinkSqlParser.KW_BY); - this.state = 1506; + this.state = 1522; this.orderItemDefition(); - this.state = 1511; + this.state = 1527; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 169, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 170, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 1507; + this.state = 1523; this.match(FlinkSqlParser.COMMA); - this.state = 1508; + this.state = 1524; this.orderItemDefition(); } } } - this.state = 1513; + this.state = 1529; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 169, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 170, this._ctx); } } } @@ -7544,19 +7605,19 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public orderItemDefition(): OrderItemDefitionContext { let localctx: OrderItemDefitionContext = new OrderItemDefitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 232, FlinkSqlParser.RULE_orderItemDefition); + this.enterRule(localctx, 234, FlinkSqlParser.RULE_orderItemDefition); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1514; + this.state = 1530; this.expression(); - this.state = 1516; + this.state = 1532; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 170, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 171, this._ctx) ) { case 1: { - this.state = 1515; + this.state = 1531; localctx._ordering = this._input.LT(1); _la = this._input.LA(1); if(!(_la===8 || _la===30)) { @@ -7569,14 +7630,14 @@ export default class FlinkSqlParser extends Parser { } break; } - this.state = 1520; + this.state = 1536; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 171, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 172, this._ctx) ) { case 1: { - this.state = 1518; + this.state = 1534; this.match(FlinkSqlParser.KW_NULLS); - this.state = 1519; + this.state = 1535; localctx._nullOrder = this._input.LT(1); _la = this._input.LA(1); if(!(_la===44 || _la===72)) { @@ -7608,24 +7669,24 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public limitClause(): LimitClauseContext { let localctx: LimitClauseContext = new LimitClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 234, FlinkSqlParser.RULE_limitClause); + this.enterRule(localctx, 236, FlinkSqlParser.RULE_limitClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 1522; + this.state = 1538; this.match(FlinkSqlParser.KW_LIMIT); - this.state = 1525; + this.state = 1541; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 172, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 173, this._ctx) ) { case 1: { - this.state = 1523; + this.state = 1539; this.match(FlinkSqlParser.KW_ALL); } break; case 2: { - this.state = 1524; + this.state = 1540; localctx._limit = this.expression(); } break; @@ -7649,30 +7710,30 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public partitionByClause(): PartitionByClauseContext { let localctx: PartitionByClauseContext = new PartitionByClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 236, FlinkSqlParser.RULE_partitionByClause); + this.enterRule(localctx, 238, FlinkSqlParser.RULE_partitionByClause); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1527; + this.state = 1543; this.match(FlinkSqlParser.KW_PARTITION); - this.state = 1528; + this.state = 1544; this.match(FlinkSqlParser.KW_BY); - this.state = 1529; + this.state = 1545; this.expression(); - this.state = 1534; + this.state = 1550; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1530; + this.state = 1546; this.match(FlinkSqlParser.COMMA); - this.state = 1531; + this.state = 1547; this.expression(); } } - this.state = 1536; + this.state = 1552; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -7695,16 +7756,16 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public quantifiers(): QuantifiersContext { let localctx: QuantifiersContext = new QuantifiersContext(this, this._ctx, this.state); - this.enterRule(localctx, 238, FlinkSqlParser.RULE_quantifiers); + this.enterRule(localctx, 240, FlinkSqlParser.RULE_quantifiers); try { - this.state = 1553; + this.state = 1569; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 174, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 175, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { { - this.state = 1537; + this.state = 1553; this.match(FlinkSqlParser.ASTERISK_SIGN); } } @@ -7713,7 +7774,7 @@ export default class FlinkSqlParser extends Parser { this.enterOuterAlt(localctx, 2); { { - this.state = 1538; + this.state = 1554; this.match(FlinkSqlParser.ADD_SIGN); } } @@ -7722,7 +7783,7 @@ export default class FlinkSqlParser extends Parser { this.enterOuterAlt(localctx, 3); { { - this.state = 1539; + this.state = 1555; this.match(FlinkSqlParser.QUESTION_MARK_SIGN); } } @@ -7731,15 +7792,15 @@ export default class FlinkSqlParser extends Parser { this.enterOuterAlt(localctx, 4); { { - this.state = 1540; + this.state = 1556; this.match(FlinkSqlParser.LB_BRACKET); - this.state = 1541; + this.state = 1557; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1542; + this.state = 1558; this.match(FlinkSqlParser.COMMA); - this.state = 1543; + this.state = 1559; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1544; + this.state = 1560; this.match(FlinkSqlParser.RB_BRACKET); } } @@ -7748,13 +7809,13 @@ export default class FlinkSqlParser extends Parser { this.enterOuterAlt(localctx, 5); { { - this.state = 1545; + this.state = 1561; this.match(FlinkSqlParser.LB_BRACKET); - this.state = 1546; + this.state = 1562; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1547; + this.state = 1563; this.match(FlinkSqlParser.COMMA); - this.state = 1548; + this.state = 1564; this.match(FlinkSqlParser.RB_BRACKET); } } @@ -7763,13 +7824,13 @@ export default class FlinkSqlParser extends Parser { this.enterOuterAlt(localctx, 6); { { - this.state = 1549; + this.state = 1565; this.match(FlinkSqlParser.LB_BRACKET); - this.state = 1550; + this.state = 1566; this.match(FlinkSqlParser.COMMA); - this.state = 1551; + this.state = 1567; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1552; + this.state = 1568; this.match(FlinkSqlParser.RB_BRACKET); } } @@ -7793,28 +7854,28 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public measuresClause(): MeasuresClauseContext { let localctx: MeasuresClauseContext = new MeasuresClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 240, FlinkSqlParser.RULE_measuresClause); + this.enterRule(localctx, 242, FlinkSqlParser.RULE_measuresClause); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1555; + this.state = 1571; this.match(FlinkSqlParser.KW_MEASURES); - this.state = 1556; + this.state = 1572; this.projectItemDefinition(); - this.state = 1561; + this.state = 1577; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1557; + this.state = 1573; this.match(FlinkSqlParser.COMMA); - this.state = 1558; + this.state = 1574; this.projectItemDefinition(); } } - this.state = 1563; + this.state = 1579; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -7837,37 +7898,37 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public patternDefination(): PatternDefinationContext { let localctx: PatternDefinationContext = new PatternDefinationContext(this, this._ctx, this.state); - this.enterRule(localctx, 242, FlinkSqlParser.RULE_patternDefination); + this.enterRule(localctx, 244, FlinkSqlParser.RULE_patternDefination); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1564; + this.state = 1580; this.match(FlinkSqlParser.KW_PATTERN); - this.state = 1565; + this.state = 1581; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1567; + this.state = 1583; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1566; + this.state = 1582; this.patternVariable(); } } - this.state = 1569; + this.state = 1585; this._errHandler.sync(this); _la = this._input.LA(1); } while (_la===398 || _la===401); - this.state = 1571; + this.state = 1587; this.match(FlinkSqlParser.RR_BRACKET); - this.state = 1573; + this.state = 1589; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===362) { { - this.state = 1572; + this.state = 1588; this.withinClause(); } } @@ -7891,19 +7952,19 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public patternVariable(): PatternVariableContext { let localctx: PatternVariableContext = new PatternVariableContext(this, this._ctx, this.state); - this.enterRule(localctx, 244, FlinkSqlParser.RULE_patternVariable); + this.enterRule(localctx, 246, FlinkSqlParser.RULE_patternVariable); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1575; + this.state = 1591; this.unquotedIdentifier(); - this.state = 1577; + this.state = 1593; this._errHandler.sync(this); _la = this._input.LA(1); if (((((_la - 378)) & ~0x1F) === 0 && ((1 << (_la - 378)) & 135681) !== 0)) { { - this.state = 1576; + this.state = 1592; this.quantifiers(); } } @@ -7927,34 +7988,34 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public outputMode(): OutputModeContext { let localctx: OutputModeContext = new OutputModeContext(this, this._ctx, this.state); - this.enterRule(localctx, 246, FlinkSqlParser.RULE_outputMode); + this.enterRule(localctx, 248, FlinkSqlParser.RULE_outputMode); try { - this.state = 1587; + this.state = 1603; this._errHandler.sync(this); switch (this._input.LA(1)) { case 176: this.enterOuterAlt(localctx, 1); { - this.state = 1579; + this.state = 1595; this.match(FlinkSqlParser.KW_ALL); - this.state = 1580; + this.state = 1596; this.match(FlinkSqlParser.KW_ROWS); - this.state = 1581; + this.state = 1597; this.match(FlinkSqlParser.KW_PER); - this.state = 1582; + this.state = 1598; this.match(FlinkSqlParser.KW_MATCH); } break; case 300: this.enterOuterAlt(localctx, 2); { - this.state = 1583; + this.state = 1599; this.match(FlinkSqlParser.KW_ONE); - this.state = 1584; + this.state = 1600; this.match(FlinkSqlParser.KW_ROW); - this.state = 1585; + this.state = 1601; this.match(FlinkSqlParser.KW_PER); - this.state = 1586; + this.state = 1602; this.match(FlinkSqlParser.KW_MATCH); } break; @@ -7979,76 +8040,76 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public afterMatchStrategy(): AfterMatchStrategyContext { let localctx: AfterMatchStrategyContext = new AfterMatchStrategyContext(this, this._ctx, this.state); - this.enterRule(localctx, 248, FlinkSqlParser.RULE_afterMatchStrategy); + this.enterRule(localctx, 250, FlinkSqlParser.RULE_afterMatchStrategy); try { - this.state = 1613; + this.state = 1629; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 180, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 181, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1589; + this.state = 1605; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1590; + this.state = 1606; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1591; + this.state = 1607; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1592; + this.state = 1608; this.match(FlinkSqlParser.KW_PAST); - this.state = 1593; + this.state = 1609; this.match(FlinkSqlParser.KW_LAST); - this.state = 1594; + this.state = 1610; this.match(FlinkSqlParser.KW_ROW); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1595; + this.state = 1611; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1596; + this.state = 1612; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1597; + this.state = 1613; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1598; + this.state = 1614; this.match(FlinkSqlParser.KW_TO); - this.state = 1599; + this.state = 1615; this.match(FlinkSqlParser.KW_NEXT); - this.state = 1600; + this.state = 1616; this.match(FlinkSqlParser.KW_ROW); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1601; + this.state = 1617; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1602; + this.state = 1618; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1603; + this.state = 1619; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1604; + this.state = 1620; this.match(FlinkSqlParser.KW_TO); - this.state = 1605; + this.state = 1621; this.match(FlinkSqlParser.KW_LAST); - this.state = 1606; + this.state = 1622; this.unquotedIdentifier(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1607; + this.state = 1623; this.match(FlinkSqlParser.KW_AFTER); - this.state = 1608; + this.state = 1624; this.match(FlinkSqlParser.KW_MATCH); - this.state = 1609; + this.state = 1625; this.match(FlinkSqlParser.KW_SKIP); - this.state = 1610; + this.state = 1626; this.match(FlinkSqlParser.KW_TO); - this.state = 1611; + this.state = 1627; this.match(FlinkSqlParser.KW_FIRST); - this.state = 1612; + this.state = 1628; this.unquotedIdentifier(); } break; @@ -8071,28 +8132,28 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public patternVariablesDefination(): PatternVariablesDefinationContext { let localctx: PatternVariablesDefinationContext = new PatternVariablesDefinationContext(this, this._ctx, this.state); - this.enterRule(localctx, 250, FlinkSqlParser.RULE_patternVariablesDefination); + this.enterRule(localctx, 252, FlinkSqlParser.RULE_patternVariablesDefination); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1615; + this.state = 1631; this.match(FlinkSqlParser.KW_DEFINE); - this.state = 1616; + this.state = 1632; this.projectItemDefinition(); - this.state = 1621; + this.state = 1637; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1617; + this.state = 1633; this.match(FlinkSqlParser.COMMA); - this.state = 1618; + this.state = 1634; this.projectItemDefinition(); } } - this.state = 1623; + this.state = 1639; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -8115,34 +8176,34 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public windowFrame(): WindowFrameContext { let localctx: WindowFrameContext = new WindowFrameContext(this, this._ctx, this.state); - this.enterRule(localctx, 252, FlinkSqlParser.RULE_windowFrame); + this.enterRule(localctx, 254, FlinkSqlParser.RULE_windowFrame); try { - this.state = 1633; + this.state = 1649; this._errHandler.sync(this); switch (this._input.LA(1)) { case 314: this.enterOuterAlt(localctx, 1); { - this.state = 1624; + this.state = 1640; this.match(FlinkSqlParser.KW_RANGE); - this.state = 1625; + this.state = 1641; this.match(FlinkSqlParser.KW_BETWEEN); - this.state = 1626; + this.state = 1642; this.timeIntervalExpression(); - this.state = 1627; + this.state = 1643; this.frameBound(); } break; case 323: this.enterOuterAlt(localctx, 2); { - this.state = 1629; + this.state = 1645; this.match(FlinkSqlParser.KW_ROWS); - this.state = 1630; + this.state = 1646; this.match(FlinkSqlParser.KW_BETWEEN); - this.state = 1631; + this.state = 1647; this.match(FlinkSqlParser.DIG_LITERAL); - this.state = 1632; + this.state = 1648; this.frameBound(); } break; @@ -8167,17 +8228,17 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public frameBound(): FrameBoundContext { let localctx: FrameBoundContext = new FrameBoundContext(this, this._ctx, this.state); - this.enterRule(localctx, 254, FlinkSqlParser.RULE_frameBound); + this.enterRule(localctx, 256, FlinkSqlParser.RULE_frameBound); try { this.enterOuterAlt(localctx, 1); { - this.state = 1635; + this.state = 1651; this.match(FlinkSqlParser.KW_PRECEDING); - this.state = 1636; + this.state = 1652; this.match(FlinkSqlParser.KW_AND); - this.state = 1637; + this.state = 1653; this.match(FlinkSqlParser.KW_CURRENT); - this.state = 1638; + this.state = 1654; this.match(FlinkSqlParser.KW_ROW); } } @@ -8198,13 +8259,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public withinClause(): WithinClauseContext { let localctx: WithinClauseContext = new WithinClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 256, FlinkSqlParser.RULE_withinClause); + this.enterRule(localctx, 258, FlinkSqlParser.RULE_withinClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 1640; + this.state = 1656; this.match(FlinkSqlParser.KW_WITHIN); - this.state = 1641; + this.state = 1657; this.timeIntervalExpression(); } } @@ -8225,11 +8286,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public expression(): ExpressionContext { let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 258, FlinkSqlParser.RULE_expression); + this.enterRule(localctx, 260, FlinkSqlParser.RULE_expression); try { this.enterOuterAlt(localctx, 1); { - this.state = 1643; + this.state = 1659; this.booleanExpression(0); } } @@ -8260,24 +8321,24 @@ export default class FlinkSqlParser extends Parser { let _parentState: number = this.state; let localctx: BooleanExpressionContext = new BooleanExpressionContext(this, this._ctx, _parentState); let _prevctx: BooleanExpressionContext = localctx; - let _startState: number = 260; - this.enterRecursionRule(localctx, 260, FlinkSqlParser.RULE_booleanExpression, _p); + let _startState: number = 262; + this.enterRecursionRule(localctx, 262, FlinkSqlParser.RULE_booleanExpression, _p); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1657; + this.state = 1673; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 184, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 185, this._ctx) ) { case 1: { localctx = new LogicalNotContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1646; + this.state = 1662; this.match(FlinkSqlParser.KW_NOT); - this.state = 1647; + this.state = 1663; this.booleanExpression(5); } break; @@ -8286,13 +8347,13 @@ export default class FlinkSqlParser extends Parser { localctx = new ExistsContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1648; + this.state = 1664; this.match(FlinkSqlParser.KW_EXISTS); - this.state = 1649; + this.state = 1665; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1650; + this.state = 1666; this.queryStatement(0); - this.state = 1651; + this.state = 1667; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -8301,14 +8362,14 @@ export default class FlinkSqlParser extends Parser { localctx = new PredicatedContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1653; + this.state = 1669; this.valueExpression(0); - this.state = 1655; + this.state = 1671; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 183, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 184, this._ctx) ) { case 1: { - this.state = 1654; + this.state = 1670; this.predicate(); } break; @@ -8317,9 +8378,9 @@ export default class FlinkSqlParser extends Parser { break; } this._ctx.stop = this._input.LT(-1); - this.state = 1667; + this.state = 1683; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 186, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 187, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -8327,21 +8388,21 @@ export default class FlinkSqlParser extends Parser { } _prevctx = localctx; { - this.state = 1665; + this.state = 1681; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 185, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 186, this._ctx) ) { case 1: { localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState)); (localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_booleanExpression); - this.state = 1659; + this.state = 1675; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 1660; + this.state = 1676; (localctx as LogicalBinaryContext)._operator = this.match(FlinkSqlParser.KW_AND); - this.state = 1661; + this.state = 1677; (localctx as LogicalBinaryContext)._right = this.booleanExpression(3); } break; @@ -8350,22 +8411,22 @@ export default class FlinkSqlParser extends Parser { localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState)); (localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_booleanExpression); - this.state = 1662; + this.state = 1678; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 1663; + this.state = 1679; (localctx as LogicalBinaryContext)._operator = this.match(FlinkSqlParser.KW_OR); - this.state = 1664; + this.state = 1680; (localctx as LogicalBinaryContext)._right = this.booleanExpression(2); } break; } } } - this.state = 1669; + this.state = 1685; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 186, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 187, this._ctx); } } } @@ -8386,145 +8447,145 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public predicate(): PredicateContext { let localctx: PredicateContext = new PredicateContext(this, this._ctx, this.state); - this.enterRule(localctx, 262, FlinkSqlParser.RULE_predicate); + this.enterRule(localctx, 264, FlinkSqlParser.RULE_predicate); let _la: number; try { - this.state = 1753; + this.state = 1769; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 199, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 200, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1671; + this.state = 1687; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1670; + this.state = 1686; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1673; + this.state = 1689; localctx._kind = this.match(FlinkSqlParser.KW_BETWEEN); - this.state = 1674; + this.state = 1690; localctx._lower = this.valueExpression(0); - this.state = 1675; + this.state = 1691; this.match(FlinkSqlParser.KW_AND); - this.state = 1676; + this.state = 1692; localctx._upper = this.valueExpression(0); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1679; + this.state = 1695; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1678; + this.state = 1694; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1681; + this.state = 1697; localctx._kind = this.match(FlinkSqlParser.KW_IN); - this.state = 1682; + this.state = 1698; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1683; + this.state = 1699; this.expression(); - this.state = 1688; + this.state = 1704; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1684; + this.state = 1700; this.match(FlinkSqlParser.COMMA); - this.state = 1685; + this.state = 1701; this.expression(); } } - this.state = 1690; + this.state = 1706; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1691; + this.state = 1707; this.match(FlinkSqlParser.RR_BRACKET); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1694; + this.state = 1710; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1693; + this.state = 1709; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1696; + this.state = 1712; localctx._kind = this.match(FlinkSqlParser.KW_IN); - this.state = 1697; + this.state = 1713; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1698; + this.state = 1714; this.queryStatement(0); - this.state = 1699; + this.state = 1715; this.match(FlinkSqlParser.RR_BRACKET); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 1701; + this.state = 1717; localctx._kind = this.match(FlinkSqlParser.KW_EXISTS); - this.state = 1702; + this.state = 1718; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1703; + this.state = 1719; this.queryStatement(0); - this.state = 1704; + this.state = 1720; this.match(FlinkSqlParser.RR_BRACKET); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 1707; + this.state = 1723; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1706; + this.state = 1722; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1709; + this.state = 1725; localctx._kind = this.match(FlinkSqlParser.KW_RLIKE); - this.state = 1710; + this.state = 1726; localctx._pattern = this.valueExpression(0); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 1712; + this.state = 1728; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1711; + this.state = 1727; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1714; + this.state = 1730; localctx._kind = this.match(FlinkSqlParser.KW_LIKE); - this.state = 1715; + this.state = 1731; localctx._quantifier = this._input.LT(1); _la = this._input.LA(1); if(!(_la===176 || _la===180)) { @@ -8534,40 +8595,40 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1729; + this.state = 1745; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 194, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 195, this._ctx) ) { case 1: { - this.state = 1716; + this.state = 1732; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1717; + this.state = 1733; this.match(FlinkSqlParser.RR_BRACKET); } break; case 2: { - this.state = 1718; + this.state = 1734; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1719; + this.state = 1735; this.expression(); - this.state = 1724; + this.state = 1740; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1720; + this.state = 1736; this.match(FlinkSqlParser.COMMA); - this.state = 1721; + this.state = 1737; this.expression(); } } - this.state = 1726; + this.state = 1742; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1727; + this.state = 1743; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -8577,57 +8638,57 @@ export default class FlinkSqlParser extends Parser { case 7: this.enterOuterAlt(localctx, 7); { - this.state = 1732; + this.state = 1748; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1731; + this.state = 1747; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1734; + this.state = 1750; localctx._kind = this.match(FlinkSqlParser.KW_LIKE); - this.state = 1735; + this.state = 1751; localctx._pattern = this.valueExpression(0); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 1736; + this.state = 1752; this.match(FlinkSqlParser.KW_IS); - this.state = 1738; + this.state = 1754; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1737; + this.state = 1753; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1740; + this.state = 1756; localctx._kind = this.match(FlinkSqlParser.KW_NULL); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 1741; + this.state = 1757; this.match(FlinkSqlParser.KW_IS); - this.state = 1743; + this.state = 1759; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1742; + this.state = 1758; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1745; + this.state = 1761; localctx._kind = this._input.LT(1); _la = this._input.LA(1); if(!(_la===245 || _la===344)) { @@ -8642,23 +8703,23 @@ export default class FlinkSqlParser extends Parser { case 10: this.enterOuterAlt(localctx, 10); { - this.state = 1746; + this.state = 1762; this.match(FlinkSqlParser.KW_IS); - this.state = 1748; + this.state = 1764; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1747; + this.state = 1763; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1750; + this.state = 1766; localctx._kind = this.match(FlinkSqlParser.KW_DISTINCT); - this.state = 1751; + this.state = 1767; this.match(FlinkSqlParser.KW_FROM); - this.state = 1752; + this.state = 1768; localctx._right = this.valueExpression(0); } break; @@ -8681,28 +8742,28 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public likePredicate(): LikePredicateContext { let localctx: LikePredicateContext = new LikePredicateContext(this, this._ctx, this.state); - this.enterRule(localctx, 264, FlinkSqlParser.RULE_likePredicate); + this.enterRule(localctx, 266, FlinkSqlParser.RULE_likePredicate); let _la: number; try { - this.state = 1780; + this.state = 1796; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 204, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 205, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1756; + this.state = 1772; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1755; + this.state = 1771; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1758; + this.state = 1774; localctx._kind = this.match(FlinkSqlParser.KW_LIKE); - this.state = 1759; + this.state = 1775; localctx._quantifier = this._input.LT(1); _la = this._input.LA(1); if(!(_la===176 || _la===180)) { @@ -8712,40 +8773,40 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1773; + this.state = 1789; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 202, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 203, this._ctx) ) { case 1: { - this.state = 1760; + this.state = 1776; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1761; + this.state = 1777; this.match(FlinkSqlParser.RR_BRACKET); } break; case 2: { - this.state = 1762; + this.state = 1778; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1763; + this.state = 1779; this.expression(); - this.state = 1768; + this.state = 1784; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1764; + this.state = 1780; this.match(FlinkSqlParser.COMMA); - this.state = 1765; + this.state = 1781; this.expression(); } } - this.state = 1770; + this.state = 1786; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 1771; + this.state = 1787; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -8755,19 +8816,19 @@ export default class FlinkSqlParser extends Parser { case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1776; + this.state = 1792; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 1775; + this.state = 1791; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 1778; + this.state = 1794; localctx._kind = this.match(FlinkSqlParser.KW_LIKE); - this.state = 1779; + this.state = 1795; localctx._pattern = this.valueExpression(0); } break; @@ -8800,23 +8861,23 @@ export default class FlinkSqlParser extends Parser { let _parentState: number = this.state; let localctx: ValueExpressionContext = new ValueExpressionContext(this, this._ctx, _parentState); let _prevctx: ValueExpressionContext = localctx; - let _startState: number = 266; - this.enterRecursionRule(localctx, 266, FlinkSqlParser.RULE_valueExpression, _p); + let _startState: number = 268; + this.enterRecursionRule(localctx, 268, FlinkSqlParser.RULE_valueExpression, _p); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1786; + this.state = 1802; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 205, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 206, this._ctx) ) { case 1: { localctx = new ValueExpressionDefaultContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1783; + this.state = 1799; this.primaryExpression(0); } break; @@ -8825,7 +8886,7 @@ export default class FlinkSqlParser extends Parser { localctx = new ArithmeticUnaryContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1784; + this.state = 1800; (localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if(!(((((_la - 369)) & ~0x1F) === 0 && ((1 << (_la - 369)) & 3145729) !== 0))) { @@ -8835,15 +8896,15 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1785; + this.state = 1801; this.valueExpression(7); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 1809; + this.state = 1825; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 207, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 208, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -8851,19 +8912,19 @@ export default class FlinkSqlParser extends Parser { } _prevctx = localctx; { - this.state = 1807; + this.state = 1823; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 206, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 207, this._ctx) ) { case 1: { localctx = new ArithmeticBinaryContext(this, new ValueExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1788; + this.state = 1804; if (!(this.precpred(this._ctx, 6))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 6)"); } - this.state = 1789; + this.state = 1805; (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if(!(_la===32 || ((((_la - 387)) & ~0x1F) === 0 && ((1 << (_la - 387)) & 145) !== 0))) { @@ -8873,7 +8934,7 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1790; + this.state = 1806; (localctx as ArithmeticBinaryContext)._right = this.valueExpression(7); } break; @@ -8882,11 +8943,11 @@ export default class FlinkSqlParser extends Parser { localctx = new ArithmeticBinaryContext(this, new ValueExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1791; + this.state = 1807; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } - this.state = 1792; + this.state = 1808; (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if(!(((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 11) !== 0))) { @@ -8896,7 +8957,7 @@ export default class FlinkSqlParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 1793; + this.state = 1809; (localctx as ArithmeticBinaryContext)._right = this.valueExpression(6); } break; @@ -8905,13 +8966,13 @@ export default class FlinkSqlParser extends Parser { localctx = new ArithmeticBinaryContext(this, new ValueExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1794; + this.state = 1810; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 1795; + this.state = 1811; (localctx as ArithmeticBinaryContext)._operator = this.match(FlinkSqlParser.BIT_AND_OP); - this.state = 1796; + this.state = 1812; (localctx as ArithmeticBinaryContext)._right = this.valueExpression(5); } break; @@ -8920,13 +8981,13 @@ export default class FlinkSqlParser extends Parser { localctx = new ArithmeticBinaryContext(this, new ValueExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1797; + this.state = 1813; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } - this.state = 1798; + this.state = 1814; (localctx as ArithmeticBinaryContext)._operator = this.match(FlinkSqlParser.BIT_XOR_OP); - this.state = 1799; + this.state = 1815; (localctx as ArithmeticBinaryContext)._right = this.valueExpression(4); } break; @@ -8935,13 +8996,13 @@ export default class FlinkSqlParser extends Parser { localctx = new ArithmeticBinaryContext(this, new ValueExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1800; + this.state = 1816; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 1801; + this.state = 1817; (localctx as ArithmeticBinaryContext)._operator = this.match(FlinkSqlParser.BIT_OR_OP); - this.state = 1802; + this.state = 1818; (localctx as ArithmeticBinaryContext)._right = this.valueExpression(3); } break; @@ -8950,22 +9011,22 @@ export default class FlinkSqlParser extends Parser { localctx = new ComparisonContext(this, new ValueExpressionContext(this, _parentctx, _parentState)); (localctx as ComparisonContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_valueExpression); - this.state = 1803; + this.state = 1819; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 1804; + this.state = 1820; this.comparisonOperator(); - this.state = 1805; + this.state = 1821; (localctx as ComparisonContext)._right = this.valueExpression(2); } break; } } } - this.state = 1811; + this.state = 1827; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 207, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 208, this._ctx); } } } @@ -8996,51 +9057,51 @@ export default class FlinkSqlParser extends Parser { let _parentState: number = this.state; let localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this, this._ctx, _parentState); let _prevctx: PrimaryExpressionContext = localctx; - let _startState: number = 268; - this.enterRecursionRule(localctx, 268, FlinkSqlParser.RULE_primaryExpression, _p); + let _startState: number = 270; + this.enterRecursionRule(localctx, 270, FlinkSqlParser.RULE_primaryExpression, _p); let _la: number; try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1903; + this.state = 1919; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 217, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 218, this._ctx) ) { case 1: { localctx = new SearchedCaseContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1813; + this.state = 1829; this.match(FlinkSqlParser.KW_CASE); - this.state = 1815; + this.state = 1831; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1814; + this.state = 1830; this.whenClause(); } } - this.state = 1817; + this.state = 1833; this._errHandler.sync(this); _la = this._input.LA(1); } while (_la===358); - this.state = 1821; + this.state = 1837; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===236) { { - this.state = 1819; + this.state = 1835; this.match(FlinkSqlParser.KW_ELSE); - this.state = 1820; + this.state = 1836; (localctx as SearchedCaseContext)._elseExpression = this.expression(); } } - this.state = 1823; + this.state = 1839; this.match(FlinkSqlParser.KW_END); } break; @@ -9049,37 +9110,37 @@ export default class FlinkSqlParser extends Parser { localctx = new SimpleCaseContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1825; + this.state = 1841; this.match(FlinkSqlParser.KW_CASE); - this.state = 1826; + this.state = 1842; (localctx as SimpleCaseContext)._value = this.expression(); - this.state = 1828; + this.state = 1844; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1827; + this.state = 1843; this.whenClause(); } } - this.state = 1830; + this.state = 1846; this._errHandler.sync(this); _la = this._input.LA(1); } while (_la===358); - this.state = 1834; + this.state = 1850; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===236) { { - this.state = 1832; + this.state = 1848; this.match(FlinkSqlParser.KW_ELSE); - this.state = 1833; + this.state = 1849; (localctx as SimpleCaseContext)._elseExpression = this.expression(); } } - this.state = 1836; + this.state = 1852; this.match(FlinkSqlParser.KW_END); } break; @@ -9088,17 +9149,17 @@ export default class FlinkSqlParser extends Parser { localctx = new CastContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1838; + this.state = 1854; this.match(FlinkSqlParser.KW_CAST); - this.state = 1839; + this.state = 1855; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1840; + this.state = 1856; this.expression(); - this.state = 1841; + this.state = 1857; this.match(FlinkSqlParser.KW_AS); - this.state = 1842; + this.state = 1858; this.columnType(); - this.state = 1843; + this.state = 1859; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9107,25 +9168,25 @@ export default class FlinkSqlParser extends Parser { localctx = new FirstContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1845; + this.state = 1861; this.match(FlinkSqlParser.KW_FIRST); - this.state = 1846; + this.state = 1862; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1847; + this.state = 1863; this.expression(); - this.state = 1850; + this.state = 1866; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===59) { { - this.state = 1848; + this.state = 1864; this.match(FlinkSqlParser.KW_IGNORE); - this.state = 1849; + this.state = 1865; this.match(FlinkSqlParser.KW_NULLS); } } - this.state = 1852; + this.state = 1868; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9134,25 +9195,25 @@ export default class FlinkSqlParser extends Parser { localctx = new LastContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1854; + this.state = 1870; this.match(FlinkSqlParser.KW_LAST); - this.state = 1855; + this.state = 1871; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1856; + this.state = 1872; this.expression(); - this.state = 1859; + this.state = 1875; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===59) { { - this.state = 1857; + this.state = 1873; this.match(FlinkSqlParser.KW_IGNORE); - this.state = 1858; + this.state = 1874; this.match(FlinkSqlParser.KW_NULLS); } } - this.state = 1861; + this.state = 1877; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9161,17 +9222,17 @@ export default class FlinkSqlParser extends Parser { localctx = new PositionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1863; + this.state = 1879; this.match(FlinkSqlParser.KW_POSITION); - this.state = 1864; + this.state = 1880; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1865; + this.state = 1881; (localctx as PositionContext)._substr = this.valueExpression(0); - this.state = 1866; + this.state = 1882; this.match(FlinkSqlParser.KW_IN); - this.state = 1867; + this.state = 1883; (localctx as PositionContext)._str = this.valueExpression(0); - this.state = 1868; + this.state = 1884; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9180,7 +9241,7 @@ export default class FlinkSqlParser extends Parser { localctx = new ConstantDefaultContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1870; + this.state = 1886; this.constant(); } break; @@ -9189,7 +9250,7 @@ export default class FlinkSqlParser extends Parser { localctx = new StarContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1871; + this.state = 1887; this.match(FlinkSqlParser.ASTERISK_SIGN); } break; @@ -9198,11 +9259,11 @@ export default class FlinkSqlParser extends Parser { localctx = new StarContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1872; + this.state = 1888; this.uid(); - this.state = 1873; + this.state = 1889; this.match(FlinkSqlParser.DOT); - this.state = 1874; + this.state = 1890; this.match(FlinkSqlParser.ASTERISK_SIGN); } break; @@ -9211,11 +9272,11 @@ export default class FlinkSqlParser extends Parser { localctx = new SubqueryExpressionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1876; + this.state = 1892; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1877; + this.state = 1893; this.queryStatement(0); - this.state = 1878; + this.state = 1894; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9224,47 +9285,47 @@ export default class FlinkSqlParser extends Parser { localctx = new FunctionCallContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1880; + this.state = 1896; this.functionName(); - this.state = 1881; + this.state = 1897; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1893; + this.state = 1909; this._errHandler.sync(this); _la = this._input.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294967280) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4294967295) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4294967295) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 4294967295) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 4294967295) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967295) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 4294967295) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4294967295) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294967295) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 4294967295) !== 0) || ((((_la - 320)) & ~0x1F) === 0 && ((1 << (_la - 320)) & 4294967295) !== 0) || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 16916479) !== 0) || ((((_la - 387)) & ~0x1F) === 0 && ((1 << (_la - 387)) & 31757) !== 0)) { { - this.state = 1883; + this.state = 1899; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 214, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 215, this._ctx) ) { case 1: { - this.state = 1882; + this.state = 1898; this.setQuantifier(); } break; } - this.state = 1885; + this.state = 1901; this.expression(); - this.state = 1890; + this.state = 1906; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1886; + this.state = 1902; this.match(FlinkSqlParser.COMMA); - this.state = 1887; + this.state = 1903; this.expression(); } } - this.state = 1892; + this.state = 1908; this._errHandler.sync(this); _la = this._input.LA(1); } } } - this.state = 1895; + this.state = 1911; this.match(FlinkSqlParser.RR_BRACKET); } break; @@ -9273,7 +9334,7 @@ export default class FlinkSqlParser extends Parser { localctx = new ColumnReferenceContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1897; + this.state = 1913; this.identifier(); } break; @@ -9282,7 +9343,7 @@ export default class FlinkSqlParser extends Parser { localctx = new DereferenceContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1898; + this.state = 1914; this.dereferenceDefinition(); } break; @@ -9291,19 +9352,19 @@ export default class FlinkSqlParser extends Parser { localctx = new ParenthesizedExpressionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 1899; + this.state = 1915; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1900; + this.state = 1916; this.expression(); - this.state = 1901; + this.state = 1917; this.match(FlinkSqlParser.RR_BRACKET); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 1912; + this.state = 1928; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 218, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 219, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -9315,22 +9376,22 @@ export default class FlinkSqlParser extends Parser { localctx = new SubscriptContext(this, new PrimaryExpressionContext(this, _parentctx, _parentState)); (localctx as SubscriptContext)._value = _prevctx; this.pushNewRecursionContext(localctx, _startState, FlinkSqlParser.RULE_primaryExpression); - this.state = 1905; + this.state = 1921; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 1906; + this.state = 1922; this.match(FlinkSqlParser.LS_BRACKET); - this.state = 1907; + this.state = 1923; (localctx as SubscriptContext)._index = this.valueExpression(0); - this.state = 1908; + this.state = 1924; this.match(FlinkSqlParser.RS_BRACKET); } } } - this.state = 1914; + this.state = 1930; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 218, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 219, this._ctx); } } } @@ -9351,29 +9412,29 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public functionName(): FunctionNameContext { let localctx: FunctionNameContext = new FunctionNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 270, FlinkSqlParser.RULE_functionName); + this.enterRule(localctx, 272, FlinkSqlParser.RULE_functionName); try { - this.state = 1918; + this.state = 1934; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 219, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 220, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1915; + this.state = 1931; this.reservedKeywords(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1916; + this.state = 1932; this.nonReservedKeywords(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 1917; + this.state = 1933; this.uid(); } break; @@ -9396,11 +9457,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public dereferenceDefinition(): DereferenceDefinitionContext { let localctx: DereferenceDefinitionContext = new DereferenceDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 272, FlinkSqlParser.RULE_dereferenceDefinition); + this.enterRule(localctx, 274, FlinkSqlParser.RULE_dereferenceDefinition); try { this.enterOuterAlt(localctx, 1); { - this.state = 1920; + this.state = 1936; this.uid(); } } @@ -9421,11 +9482,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public correlationName(): CorrelationNameContext { let localctx: CorrelationNameContext = new CorrelationNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 274, FlinkSqlParser.RULE_correlationName); + this.enterRule(localctx, 276, FlinkSqlParser.RULE_correlationName); try { this.enterOuterAlt(localctx, 1); { - this.state = 1922; + this.state = 1938; this.identifier(); } } @@ -9446,22 +9507,22 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public qualifiedName(): QualifiedNameContext { let localctx: QualifiedNameContext = new QualifiedNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 276, FlinkSqlParser.RULE_qualifiedName); + this.enterRule(localctx, 278, FlinkSqlParser.RULE_qualifiedName); try { - this.state = 1926; + this.state = 1942; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 220, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 221, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 1924; + this.state = 1940; this.identifier(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 1925; + this.state = 1941; this.dereferenceDefinition(); } break; @@ -9484,24 +9545,24 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public timeIntervalExpression(): TimeIntervalExpressionContext { let localctx: TimeIntervalExpressionContext = new TimeIntervalExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 278, FlinkSqlParser.RULE_timeIntervalExpression); + this.enterRule(localctx, 280, FlinkSqlParser.RULE_timeIntervalExpression); try { this.enterOuterAlt(localctx, 1); { - this.state = 1928; + this.state = 1944; this.match(FlinkSqlParser.KW_INTERVAL); - this.state = 1931; + this.state = 1947; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 221, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 222, this._ctx) ) { case 1: { - this.state = 1929; + this.state = 1945; this.errorCapturingMultiUnitsInterval(); } break; case 2: { - this.state = 1930; + this.state = 1946; this.errorCapturingUnitToUnitInterval(); } break; @@ -9525,18 +9586,18 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public errorCapturingMultiUnitsInterval(): ErrorCapturingMultiUnitsIntervalContext { let localctx: ErrorCapturingMultiUnitsIntervalContext = new ErrorCapturingMultiUnitsIntervalContext(this, this._ctx, this.state); - this.enterRule(localctx, 280, FlinkSqlParser.RULE_errorCapturingMultiUnitsInterval); + this.enterRule(localctx, 282, FlinkSqlParser.RULE_errorCapturingMultiUnitsInterval); try { this.enterOuterAlt(localctx, 1); { - this.state = 1933; + this.state = 1949; this.multiUnitsInterval(); - this.state = 1935; + this.state = 1951; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 222, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 223, this._ctx) ) { case 1: { - this.state = 1934; + this.state = 1950; this.unitToUnitInterval(); } break; @@ -9560,12 +9621,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public multiUnitsInterval(): MultiUnitsIntervalContext { let localctx: MultiUnitsIntervalContext = new MultiUnitsIntervalContext(this, this._ctx, this.state); - this.enterRule(localctx, 282, FlinkSqlParser.RULE_multiUnitsInterval); + this.enterRule(localctx, 284, FlinkSqlParser.RULE_multiUnitsInterval); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 1940; + this.state = 1956; this._errHandler.sync(this); _alt = 1; do { @@ -9573,9 +9634,9 @@ export default class FlinkSqlParser extends Parser { case 1: { { - this.state = 1937; + this.state = 1953; this.intervalValue(); - this.state = 1938; + this.state = 1954; this.intervalTimeUnit(); } } @@ -9583,9 +9644,9 @@ export default class FlinkSqlParser extends Parser { default: throw new NoViableAltException(this); } - this.state = 1942; + this.state = 1958; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 223, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 224, this._ctx); } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); } } @@ -9606,24 +9667,24 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public errorCapturingUnitToUnitInterval(): ErrorCapturingUnitToUnitIntervalContext { let localctx: ErrorCapturingUnitToUnitIntervalContext = new ErrorCapturingUnitToUnitIntervalContext(this, this._ctx, this.state); - this.enterRule(localctx, 284, FlinkSqlParser.RULE_errorCapturingUnitToUnitInterval); + this.enterRule(localctx, 286, FlinkSqlParser.RULE_errorCapturingUnitToUnitInterval); try { this.enterOuterAlt(localctx, 1); { - this.state = 1944; + this.state = 1960; localctx._body = this.unitToUnitInterval(); - this.state = 1947; + this.state = 1963; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 224, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 225, this._ctx) ) { case 1: { - this.state = 1945; + this.state = 1961; localctx._error1 = this.multiUnitsInterval(); } break; case 2: { - this.state = 1946; + this.state = 1962; localctx._error2 = this.unitToUnitInterval(); } break; @@ -9647,17 +9708,17 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public unitToUnitInterval(): UnitToUnitIntervalContext { let localctx: UnitToUnitIntervalContext = new UnitToUnitIntervalContext(this, this._ctx, this.state); - this.enterRule(localctx, 286, FlinkSqlParser.RULE_unitToUnitInterval); + this.enterRule(localctx, 288, FlinkSqlParser.RULE_unitToUnitInterval); try { this.enterOuterAlt(localctx, 1); { - this.state = 1949; + this.state = 1965; localctx._value = this.intervalValue(); - this.state = 1950; + this.state = 1966; localctx._from_ = this.intervalTimeUnit(); - this.state = 1951; + this.state = 1967; this.match(FlinkSqlParser.KW_TO); - this.state = 1952; + this.state = 1968; localctx._to = this.intervalTimeUnit(); } } @@ -9678,10 +9739,10 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public intervalValue(): IntervalValueContext { let localctx: IntervalValueContext = new IntervalValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 288, FlinkSqlParser.RULE_intervalValue); + this.enterRule(localctx, 290, FlinkSqlParser.RULE_intervalValue); let _la: number; try { - this.state = 1959; + this.state = 1975; this._errHandler.sync(this); switch (this._input.LA(1)) { case 389: @@ -9690,12 +9751,12 @@ export default class FlinkSqlParser extends Parser { case 399: this.enterOuterAlt(localctx, 1); { - this.state = 1955; + this.state = 1971; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===389 || _la===390) { { - this.state = 1954; + this.state = 1970; _la = this._input.LA(1); if(!(_la===389 || _la===390)) { this._errHandler.recoverInline(this); @@ -9707,7 +9768,7 @@ export default class FlinkSqlParser extends Parser { } } - this.state = 1957; + this.state = 1973; _la = this._input.LA(1); if(!(_la===398 || _la===399)) { this._errHandler.recoverInline(this); @@ -9721,7 +9782,7 @@ export default class FlinkSqlParser extends Parser { case 397: this.enterOuterAlt(localctx, 2); { - this.state = 1958; + this.state = 1974; this.match(FlinkSqlParser.STRING_LITERAL); } break; @@ -9746,9 +9807,9 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public intervalTimeUnit(): IntervalTimeUnitContext { let localctx: IntervalTimeUnitContext = new IntervalTimeUnitContext(this, this._ctx, this.state); - this.enterRule(localctx, 290, FlinkSqlParser.RULE_intervalTimeUnit); + this.enterRule(localctx, 292, FlinkSqlParser.RULE_intervalTimeUnit); try { - this.state = 1963; + this.state = 1979; this._errHandler.sync(this); switch (this._input.LA(1)) { case 4: @@ -9927,7 +9988,7 @@ export default class FlinkSqlParser extends Parser { case 401: this.enterOuterAlt(localctx, 1); { - this.state = 1961; + this.state = 1977; this.identifier(); } break; @@ -10123,7 +10184,7 @@ export default class FlinkSqlParser extends Parser { case 364: this.enterOuterAlt(localctx, 2); { - this.state = 1962; + this.state = 1978; this.reservedKeywords(); } break; @@ -10148,29 +10209,29 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public columnAlias(): ColumnAliasContext { let localctx: ColumnAliasContext = new ColumnAliasContext(this, this._ctx, this.state); - this.enterRule(localctx, 292, FlinkSqlParser.RULE_columnAlias); + this.enterRule(localctx, 294, FlinkSqlParser.RULE_columnAlias); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1966; + this.state = 1982; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===183) { { - this.state = 1965; + this.state = 1981; this.match(FlinkSqlParser.KW_AS); } } - this.state = 1968; + this.state = 1984; this.identifier(); - this.state = 1970; + this.state = 1986; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===376) { { - this.state = 1969; + this.state = 1985; this.identifierList(); } } @@ -10194,29 +10255,29 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tableAlias(): TableAliasContext { let localctx: TableAliasContext = new TableAliasContext(this, this._ctx, this.state); - this.enterRule(localctx, 294, FlinkSqlParser.RULE_tableAlias); + this.enterRule(localctx, 296, FlinkSqlParser.RULE_tableAlias); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1973; + this.state = 1989; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===183) { { - this.state = 1972; + this.state = 1988; this.match(FlinkSqlParser.KW_AS); } } - this.state = 1975; + this.state = 1991; this.identifier(); - this.state = 1977; + this.state = 1993; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 231, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 232, this._ctx) ) { case 1: { - this.state = 1976; + this.state = 1992; this.identifierList(); } break; @@ -10240,13 +10301,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public errorCapturingIdentifier(): ErrorCapturingIdentifierContext { let localctx: ErrorCapturingIdentifierContext = new ErrorCapturingIdentifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 296, FlinkSqlParser.RULE_errorCapturingIdentifier); + this.enterRule(localctx, 298, FlinkSqlParser.RULE_errorCapturingIdentifier); try { this.enterOuterAlt(localctx, 1); { - this.state = 1979; + this.state = 1995; this.identifier(); - this.state = 1980; + this.state = 1996; this.errorCapturingIdentifierExtra(); } } @@ -10267,29 +10328,29 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public errorCapturingIdentifierExtra(): ErrorCapturingIdentifierExtraContext { let localctx: ErrorCapturingIdentifierExtraContext = new ErrorCapturingIdentifierExtraContext(this, this._ctx, this.state); - this.enterRule(localctx, 298, FlinkSqlParser.RULE_errorCapturingIdentifierExtra); + this.enterRule(localctx, 300, FlinkSqlParser.RULE_errorCapturingIdentifierExtra); let _la: number; try { - this.state = 1989; + this.state = 2005; this._errHandler.sync(this); switch (this._input.LA(1)) { case 284: localctx = new ErrorIdentContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 1984; + this.state = 2000; this._errHandler.sync(this); _la = this._input.LA(1); do { { { - this.state = 1982; + this.state = 1998; this.match(FlinkSqlParser.KW_MINUS); - this.state = 1983; + this.state = 1999; this.identifier(); } } - this.state = 1986; + this.state = 2002; this._errHandler.sync(this); _la = this._input.LA(1); } while (_la===284); @@ -10324,15 +10385,15 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public identifierList(): IdentifierListContext { let localctx: IdentifierListContext = new IdentifierListContext(this, this._ctx, this.state); - this.enterRule(localctx, 300, FlinkSqlParser.RULE_identifierList); + this.enterRule(localctx, 302, FlinkSqlParser.RULE_identifierList); try { this.enterOuterAlt(localctx, 1); { - this.state = 1991; + this.state = 2007; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 1992; + this.state = 2008; this.identifierSeq(); - this.state = 1993; + this.state = 2009; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -10353,26 +10414,26 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public identifierSeq(): IdentifierSeqContext { let localctx: IdentifierSeqContext = new IdentifierSeqContext(this, this._ctx, this.state); - this.enterRule(localctx, 302, FlinkSqlParser.RULE_identifierSeq); + this.enterRule(localctx, 304, FlinkSqlParser.RULE_identifierSeq); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 1995; + this.state = 2011; this.identifier(); - this.state = 2000; + this.state = 2016; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 1996; + this.state = 2012; this.match(FlinkSqlParser.COMMA); - this.state = 1997; + this.state = 2013; this.identifier(); } } - this.state = 2002; + this.state = 2018; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -10395,9 +10456,9 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public identifier(): IdentifierContext { let localctx: IdentifierContext = new IdentifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 304, FlinkSqlParser.RULE_identifier); + this.enterRule(localctx, 306, FlinkSqlParser.RULE_identifier); try { - this.state = 2006; + this.state = 2022; this._errHandler.sync(this); switch (this._input.LA(1)) { case 398: @@ -10405,7 +10466,7 @@ export default class FlinkSqlParser extends Parser { localctx = new UnquotedIdentifierAlternativeContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 2003; + this.state = 2019; this.unquotedIdentifier(); } break; @@ -10413,7 +10474,7 @@ export default class FlinkSqlParser extends Parser { localctx = new QuotedIdentifierAlternativeContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 2004; + this.state = 2020; this.quotedIdentifier(); } break; @@ -10591,7 +10652,7 @@ export default class FlinkSqlParser extends Parser { localctx = new NonReservedKeywordsAlternativeContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 2005; + this.state = 2021; this.nonReservedKeywords(); } break; @@ -10616,12 +10677,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public unquotedIdentifier(): UnquotedIdentifierContext { let localctx: UnquotedIdentifierContext = new UnquotedIdentifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 306, FlinkSqlParser.RULE_unquotedIdentifier); + this.enterRule(localctx, 308, FlinkSqlParser.RULE_unquotedIdentifier); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2008; + this.state = 2024; _la = this._input.LA(1); if(!(_la===398 || _la===401)) { this._errHandler.recoverInline(this); @@ -10649,11 +10710,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public quotedIdentifier(): QuotedIdentifierContext { let localctx: QuotedIdentifierContext = new QuotedIdentifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 308, FlinkSqlParser.RULE_quotedIdentifier); + this.enterRule(localctx, 310, FlinkSqlParser.RULE_quotedIdentifier); try { this.enterOuterAlt(localctx, 1); { - this.state = 2010; + this.state = 2026; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -10674,17 +10735,17 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public whenClause(): WhenClauseContext { let localctx: WhenClauseContext = new WhenClauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 310, FlinkSqlParser.RULE_whenClause); + this.enterRule(localctx, 312, FlinkSqlParser.RULE_whenClause); try { this.enterOuterAlt(localctx, 1); { - this.state = 2012; + this.state = 2028; this.match(FlinkSqlParser.KW_WHEN); - this.state = 2013; + this.state = 2029; localctx._condition = this.expression(); - this.state = 2014; + this.state = 2030; this.match(FlinkSqlParser.KW_THEN); - this.state = 2015; + this.state = 2031; localctx._result = this.expression(); } } @@ -10705,30 +10766,30 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public uid(): UidContext { let localctx: UidContext = new UidContext(this, this._ctx, this.state); - this.enterRule(localctx, 312, FlinkSqlParser.RULE_uid); + this.enterRule(localctx, 314, FlinkSqlParser.RULE_uid); try { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 2017; + this.state = 2033; this.identifier(); - this.state = 2022; + this.state = 2038; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 236, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 237, this._ctx); while (_alt !== 1 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1 + 1) { { { - this.state = 2018; + this.state = 2034; this.match(FlinkSqlParser.DOT); - this.state = 2019; + this.state = 2035; this.identifier(); } } } - this.state = 2024; + this.state = 2040; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 236, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 237, this._ctx); } } } @@ -10749,13 +10810,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public withOption(): WithOptionContext { let localctx: WithOptionContext = new WithOptionContext(this, this._ctx, this.state); - this.enterRule(localctx, 314, FlinkSqlParser.RULE_withOption); + this.enterRule(localctx, 316, FlinkSqlParser.RULE_withOption); try { this.enterOuterAlt(localctx, 1); { - this.state = 2025; + this.state = 2041; this.match(FlinkSqlParser.KW_WITH); - this.state = 2026; + this.state = 2042; this.tablePropertyList(); } } @@ -10776,15 +10837,15 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public ifNotExists(): IfNotExistsContext { let localctx: IfNotExistsContext = new IfNotExistsContext(this, this._ctx, this.state); - this.enterRule(localctx, 316, FlinkSqlParser.RULE_ifNotExists); + this.enterRule(localctx, 318, FlinkSqlParser.RULE_ifNotExists); try { this.enterOuterAlt(localctx, 1); { - this.state = 2028; + this.state = 2044; this.match(FlinkSqlParser.KW_IF); - this.state = 2029; + this.state = 2045; this.match(FlinkSqlParser.KW_NOT); - this.state = 2030; + this.state = 2046; this.match(FlinkSqlParser.KW_EXISTS); } } @@ -10805,13 +10866,13 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public ifExists(): IfExistsContext { let localctx: IfExistsContext = new IfExistsContext(this, this._ctx, this.state); - this.enterRule(localctx, 318, FlinkSqlParser.RULE_ifExists); + this.enterRule(localctx, 320, FlinkSqlParser.RULE_ifExists); try { this.enterOuterAlt(localctx, 1); { - this.state = 2032; + this.state = 2048; this.match(FlinkSqlParser.KW_IF); - this.state = 2033; + this.state = 2049; this.match(FlinkSqlParser.KW_EXISTS); } } @@ -10832,32 +10893,32 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tablePropertyList(): TablePropertyListContext { let localctx: TablePropertyListContext = new TablePropertyListContext(this, this._ctx, this.state); - this.enterRule(localctx, 320, FlinkSqlParser.RULE_tablePropertyList); + this.enterRule(localctx, 322, FlinkSqlParser.RULE_tablePropertyList); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2035; + this.state = 2051; this.match(FlinkSqlParser.LR_BRACKET); - this.state = 2036; + this.state = 2052; this.tableProperty(); - this.state = 2041; + this.state = 2057; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===380) { { { - this.state = 2037; + this.state = 2053; this.match(FlinkSqlParser.COMMA); - this.state = 2038; + this.state = 2054; this.tableProperty(); } } - this.state = 2043; + this.state = 2059; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 2044; + this.state = 2060; this.match(FlinkSqlParser.RR_BRACKET); } } @@ -10878,29 +10939,29 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tableProperty(): TablePropertyContext { let localctx: TablePropertyContext = new TablePropertyContext(this, this._ctx, this.state); - this.enterRule(localctx, 322, FlinkSqlParser.RULE_tableProperty); + this.enterRule(localctx, 324, FlinkSqlParser.RULE_tableProperty); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2046; + this.state = 2062; localctx._key = this.tablePropertyKey(); - this.state = 2051; + this.state = 2067; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===245 || _la===344 || _la===365 || ((((_la - 397)) & ~0x1F) === 0 && ((1 << (_la - 397)) & 7) !== 0)) { { - this.state = 2048; + this.state = 2064; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===365) { { - this.state = 2047; + this.state = 2063; this.match(FlinkSqlParser.EQUAL_SYMBOL); } } - this.state = 2050; + this.state = 2066; localctx._value = this.tablePropertyValue(); } } @@ -10924,29 +10985,29 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tablePropertyKey(): TablePropertyKeyContext { let localctx: TablePropertyKeyContext = new TablePropertyKeyContext(this, this._ctx, this.state); - this.enterRule(localctx, 324, FlinkSqlParser.RULE_tablePropertyKey); + this.enterRule(localctx, 326, FlinkSqlParser.RULE_tablePropertyKey); try { - this.state = 2056; + this.state = 2072; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 240, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 241, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2053; + this.state = 2069; this.identifier(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2054; + this.state = 2070; this.dereferenceDefinition(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 2055; + this.state = 2071; this.match(FlinkSqlParser.STRING_LITERAL); } break; @@ -10969,22 +11030,22 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public tablePropertyValue(): TablePropertyValueContext { let localctx: TablePropertyValueContext = new TablePropertyValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 326, FlinkSqlParser.RULE_tablePropertyValue); + this.enterRule(localctx, 328, FlinkSqlParser.RULE_tablePropertyValue); try { - this.state = 2062; + this.state = 2078; this._errHandler.sync(this); switch (this._input.LA(1)) { case 398: this.enterOuterAlt(localctx, 1); { - this.state = 2058; + this.state = 2074; this.match(FlinkSqlParser.DIG_LITERAL); } break; case 399: this.enterOuterAlt(localctx, 2); { - this.state = 2059; + this.state = 2075; this.match(FlinkSqlParser.REAL_LITERAL); } break; @@ -10992,14 +11053,14 @@ export default class FlinkSqlParser extends Parser { case 344: this.enterOuterAlt(localctx, 3); { - this.state = 2060; + this.state = 2076; this.booleanLiteral(); } break; case 397: this.enterOuterAlt(localctx, 4); { - this.state = 2061; + this.state = 2077; this.match(FlinkSqlParser.STRING_LITERAL); } break; @@ -11024,40 +11085,40 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public logicalOperator(): LogicalOperatorContext { let localctx: LogicalOperatorContext = new LogicalOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 328, FlinkSqlParser.RULE_logicalOperator); + this.enterRule(localctx, 330, FlinkSqlParser.RULE_logicalOperator); try { - this.state = 2070; + this.state = 2086; this._errHandler.sync(this); switch (this._input.LA(1)) { case 179: this.enterOuterAlt(localctx, 1); { - this.state = 2064; + this.state = 2080; this.match(FlinkSqlParser.KW_AND); } break; case 371: this.enterOuterAlt(localctx, 2); { - this.state = 2065; + this.state = 2081; this.match(FlinkSqlParser.BIT_AND_OP); - this.state = 2066; + this.state = 2082; this.match(FlinkSqlParser.BIT_AND_OP); } break; case 301: this.enterOuterAlt(localctx, 3); { - this.state = 2067; + this.state = 2083; this.match(FlinkSqlParser.KW_OR); } break; case 370: this.enterOuterAlt(localctx, 4); { - this.state = 2068; + this.state = 2084; this.match(FlinkSqlParser.BIT_OR_OP); - this.state = 2069; + this.state = 2085; this.match(FlinkSqlParser.BIT_OR_OP); } break; @@ -11082,76 +11143,76 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public comparisonOperator(): ComparisonOperatorContext { let localctx: ComparisonOperatorContext = new ComparisonOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 330, FlinkSqlParser.RULE_comparisonOperator); + this.enterRule(localctx, 332, FlinkSqlParser.RULE_comparisonOperator); try { - this.state = 2086; + this.state = 2102; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 243, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 244, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 2072; + this.state = 2088; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 2073; + this.state = 2089; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 2074; + this.state = 2090; this.match(FlinkSqlParser.LESS_SYMBOL); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 2075; + this.state = 2091; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2076; + this.state = 2092; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 2077; + this.state = 2093; this.match(FlinkSqlParser.GREATER_SYMBOL); - this.state = 2078; + this.state = 2094; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 2079; + this.state = 2095; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2080; + this.state = 2096; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 2081; + this.state = 2097; this.match(FlinkSqlParser.EXCLAMATION_SYMBOL); - this.state = 2082; + this.state = 2098; this.match(FlinkSqlParser.EQUAL_SYMBOL); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 2083; + this.state = 2099; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2084; + this.state = 2100; this.match(FlinkSqlParser.EQUAL_SYMBOL); - this.state = 2085; + this.state = 2101; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; @@ -11174,47 +11235,47 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public bitOperator(): BitOperatorContext { let localctx: BitOperatorContext = new BitOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 332, FlinkSqlParser.RULE_bitOperator); + this.enterRule(localctx, 334, FlinkSqlParser.RULE_bitOperator); try { - this.state = 2095; + this.state = 2111; this._errHandler.sync(this); switch (this._input.LA(1)) { case 367: this.enterOuterAlt(localctx, 1); { - this.state = 2088; + this.state = 2104; this.match(FlinkSqlParser.LESS_SYMBOL); - this.state = 2089; + this.state = 2105; this.match(FlinkSqlParser.LESS_SYMBOL); } break; case 366: this.enterOuterAlt(localctx, 2); { - this.state = 2090; + this.state = 2106; this.match(FlinkSqlParser.GREATER_SYMBOL); - this.state = 2091; + this.state = 2107; this.match(FlinkSqlParser.GREATER_SYMBOL); } break; case 371: this.enterOuterAlt(localctx, 3); { - this.state = 2092; + this.state = 2108; this.match(FlinkSqlParser.BIT_AND_OP); } break; case 372: this.enterOuterAlt(localctx, 4); { - this.state = 2093; + this.state = 2109; this.match(FlinkSqlParser.BIT_XOR_OP); } break; case 370: this.enterOuterAlt(localctx, 5); { - this.state = 2094; + this.state = 2110; this.match(FlinkSqlParser.BIT_OR_OP); } break; @@ -11239,12 +11300,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public mathOperator(): MathOperatorContext { let localctx: MathOperatorContext = new MathOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 334, FlinkSqlParser.RULE_mathOperator); + this.enterRule(localctx, 336, FlinkSqlParser.RULE_mathOperator); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2097; + this.state = 2113; _la = this._input.LA(1); if(!(_la===32 || ((((_la - 387)) & ~0x1F) === 0 && ((1 << (_la - 387)) & 221) !== 0))) { this._errHandler.recoverInline(this); @@ -11272,12 +11333,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public unaryOperator(): UnaryOperatorContext { let localctx: UnaryOperatorContext = new UnaryOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 336, FlinkSqlParser.RULE_unaryOperator); + this.enterRule(localctx, 338, FlinkSqlParser.RULE_unaryOperator); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2099; + this.state = 2115; _la = this._input.LA(1); if(!(_la===294 || ((((_la - 368)) & ~0x1F) === 0 && ((1 << (_la - 368)) & 6291459) !== 0))) { this._errHandler.recoverInline(this); @@ -11305,39 +11366,39 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public constant(): ConstantContext { let localctx: ConstantContext = new ConstantContext(this, this._ctx, this.state); - this.enterRule(localctx, 338, FlinkSqlParser.RULE_constant); + this.enterRule(localctx, 340, FlinkSqlParser.RULE_constant); let _la: number; try { - this.state = 2113; + this.state = 2129; this._errHandler.sync(this); switch (this._input.LA(1)) { case 397: this.enterOuterAlt(localctx, 1); { - this.state = 2101; + this.state = 2117; this.stringLiteral(); } break; case 398: this.enterOuterAlt(localctx, 2); { - this.state = 2102; + this.state = 2118; this.decimalLiteral(); } break; case 267: this.enterOuterAlt(localctx, 3); { - this.state = 2103; + this.state = 2119; this.timeIntervalExpression(); } break; case 389: this.enterOuterAlt(localctx, 4); { - this.state = 2104; + this.state = 2120; this.match(FlinkSqlParser.HYPNEN_SIGN); - this.state = 2105; + this.state = 2121; this.decimalLiteral(); } break; @@ -11345,21 +11406,21 @@ export default class FlinkSqlParser extends Parser { case 344: this.enterOuterAlt(localctx, 5); { - this.state = 2106; + this.state = 2122; this.booleanLiteral(); } break; case 399: this.enterOuterAlt(localctx, 6); { - this.state = 2107; + this.state = 2123; this.match(FlinkSqlParser.REAL_LITERAL); } break; case 400: this.enterOuterAlt(localctx, 7); { - this.state = 2108; + this.state = 2124; this.match(FlinkSqlParser.BIT_STRING); } break; @@ -11367,17 +11428,17 @@ export default class FlinkSqlParser extends Parser { case 295: this.enterOuterAlt(localctx, 8); { - this.state = 2110; + this.state = 2126; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===294) { { - this.state = 2109; + this.state = 2125; this.match(FlinkSqlParser.KW_NOT); } } - this.state = 2112; + this.state = 2128; this.match(FlinkSqlParser.KW_NULL); } break; @@ -11402,11 +11463,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public stringLiteral(): StringLiteralContext { let localctx: StringLiteralContext = new StringLiteralContext(this, this._ctx, this.state); - this.enterRule(localctx, 340, FlinkSqlParser.RULE_stringLiteral); + this.enterRule(localctx, 342, FlinkSqlParser.RULE_stringLiteral); try { this.enterOuterAlt(localctx, 1); { - this.state = 2115; + this.state = 2131; this.match(FlinkSqlParser.STRING_LITERAL); } } @@ -11427,11 +11488,11 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public decimalLiteral(): DecimalLiteralContext { let localctx: DecimalLiteralContext = new DecimalLiteralContext(this, this._ctx, this.state); - this.enterRule(localctx, 342, FlinkSqlParser.RULE_decimalLiteral); + this.enterRule(localctx, 344, FlinkSqlParser.RULE_decimalLiteral); try { this.enterOuterAlt(localctx, 1); { - this.state = 2117; + this.state = 2133; this.match(FlinkSqlParser.DIG_LITERAL); } } @@ -11452,12 +11513,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public booleanLiteral(): BooleanLiteralContext { let localctx: BooleanLiteralContext = new BooleanLiteralContext(this, this._ctx, this.state); - this.enterRule(localctx, 344, FlinkSqlParser.RULE_booleanLiteral); + this.enterRule(localctx, 346, FlinkSqlParser.RULE_booleanLiteral); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2119; + this.state = 2135; _la = this._input.LA(1); if(!(_la===245 || _la===344)) { this._errHandler.recoverInline(this); @@ -11485,12 +11546,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public setQuantifier(): SetQuantifierContext { let localctx: SetQuantifierContext = new SetQuantifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 346, FlinkSqlParser.RULE_setQuantifier); + this.enterRule(localctx, 348, FlinkSqlParser.RULE_setQuantifier); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2121; + this.state = 2137; _la = this._input.LA(1); if(!(_la===176 || _la===232)) { this._errHandler.recoverInline(this); @@ -11518,12 +11579,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public reservedKeywords(): ReservedKeywordsContext { let localctx: ReservedKeywordsContext = new ReservedKeywordsContext(this, this._ctx, this.state); - this.enterRule(localctx, 348, FlinkSqlParser.RULE_reservedKeywords); + this.enterRule(localctx, 350, FlinkSqlParser.RULE_reservedKeywords); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2123; + this.state = 2139; _la = this._input.LA(1); if(!(((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 4294967295) !== 0) || ((((_la - 207)) & ~0x1F) === 0 && ((1 << (_la - 207)) & 4294967295) !== 0) || ((((_la - 239)) & ~0x1F) === 0 && ((1 << (_la - 239)) & 4294967295) !== 0) || ((((_la - 271)) & ~0x1F) === 0 && ((1 << (_la - 271)) & 4294967295) !== 0) || ((((_la - 303)) & ~0x1F) === 0 && ((1 << (_la - 303)) & 4294967295) !== 0) || ((((_la - 335)) & ~0x1F) === 0 && ((1 << (_la - 335)) & 1073741823) !== 0))) { this._errHandler.recoverInline(this); @@ -11551,12 +11612,12 @@ export default class FlinkSqlParser extends Parser { // @RuleVersion(0) public nonReservedKeywords(): NonReservedKeywordsContext { let localctx: NonReservedKeywordsContext = new NonReservedKeywordsContext(this, this._ctx, this.state); - this.enterRule(localctx, 350, FlinkSqlParser.RULE_nonReservedKeywords); + this.enterRule(localctx, 352, FlinkSqlParser.RULE_nonReservedKeywords); let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 2125; + this.state = 2141; _la = this._input.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294967280) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4294967295) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4294967295) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 4294967295) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 4294967295) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 32767) !== 0))) { this._errHandler.recoverInline(this); @@ -11584,15 +11645,15 @@ export default class FlinkSqlParser extends Parser { public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { - case 78: + case 79: return this.queryStatement_sempred(localctx as QueryStatementContext, predIndex); - case 88: + case 89: return this.tableExpression_sempred(localctx as TableExpressionContext, predIndex); - case 130: + case 131: return this.booleanExpression_sempred(localctx as BooleanExpressionContext, predIndex); - case 133: - return this.valueExpression_sempred(localctx as ValueExpressionContext, predIndex); case 134: + return this.valueExpression_sempred(localctx as ValueExpressionContext, predIndex); + case 135: return this.primaryExpression_sempred(localctx as PrimaryExpressionContext, predIndex); } return true; @@ -11647,7 +11708,7 @@ export default class FlinkSqlParser extends Parser { return true; } - public static readonly _serializedATN: number[] = [4,1,402,2128,2,0,7,0, + public static readonly _serializedATN: number[] = [4,1,402,2144,2,0,7,0, 2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9, 2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2, 17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24, @@ -11674,780 +11735,787 @@ export default class FlinkSqlParser extends Parser { 7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163, 7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175, - 7,175,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,3,2,361,8,2,1,2,5,2,364,8,2,10,2, - 12,2,367,9,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,381,8, - 3,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,399, - 8,5,1,6,1,6,3,6,403,8,6,1,7,1,7,1,7,1,8,1,8,1,8,1,8,3,8,412,8,8,1,8,1,8, - 1,8,3,8,417,8,8,1,9,1,9,1,9,5,9,422,8,9,10,9,12,9,425,9,9,1,10,1,10,1,11, - 1,11,3,11,431,8,11,1,11,1,11,3,11,435,8,11,1,12,1,12,1,12,1,12,1,12,5,12, - 442,8,12,10,12,12,12,445,9,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1, - 13,3,13,456,8,13,1,13,3,13,459,8,13,1,13,1,13,1,13,1,13,1,13,3,13,466,8, - 13,1,13,1,13,1,13,1,13,1,13,1,13,3,13,474,8,13,1,13,1,13,1,13,3,13,479, - 8,13,1,13,3,13,482,8,13,1,14,1,14,1,14,1,14,1,14,3,14,489,8,14,1,15,1,15, - 1,15,1,15,1,16,1,16,3,16,497,8,16,1,17,1,17,3,17,501,8,17,1,18,1,18,1,18, - 1,18,1,19,1,19,1,19,1,19,1,19,1,19,3,19,513,8,19,1,19,1,19,1,19,1,19,1, - 19,1,19,3,19,521,8,19,1,19,1,19,3,19,525,8,19,1,19,1,19,1,19,1,19,1,19, - 1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3, - 19,546,8,19,1,20,1,20,3,20,550,8,20,1,21,1,21,3,21,554,8,21,1,21,1,21,3, - 21,558,8,21,1,21,1,21,1,21,1,21,1,21,5,21,565,8,21,10,21,12,21,568,9,21, - 1,21,1,21,3,21,572,8,21,1,21,1,21,3,21,576,8,21,1,21,1,21,3,21,580,8,21, - 1,21,1,21,3,21,584,8,21,1,21,3,21,587,8,21,1,21,1,21,3,21,591,8,21,1,22, - 1,22,1,22,3,22,596,8,22,1,22,1,22,1,22,1,22,3,22,602,8,22,1,23,1,23,1,23, - 3,23,607,8,23,1,24,1,24,1,24,3,24,612,8,24,1,24,3,24,615,8,24,1,25,1,25, - 3,25,619,8,25,1,26,1,26,1,26,1,26,5,26,625,8,26,10,26,12,26,628,9,26,1, - 26,1,26,1,27,1,27,1,27,3,27,635,8,27,1,27,1,27,3,27,639,8,27,1,27,1,27, - 3,27,643,8,27,1,27,1,27,3,27,647,8,27,1,27,1,27,3,27,651,8,27,1,27,1,27, - 3,27,655,8,27,1,27,1,27,3,27,659,8,27,1,27,1,27,3,27,663,8,27,1,27,1,27, - 3,27,667,8,27,3,27,669,8,27,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,3,29, - 679,8,29,1,29,1,29,1,30,1,30,1,30,1,30,3,30,687,8,30,1,30,1,30,1,31,1,31, - 1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1, - 33,1,33,5,33,709,8,33,10,33,12,33,712,9,33,1,33,1,33,1,34,1,34,3,34,718, - 8,34,1,34,1,34,1,34,1,34,3,34,724,8,34,1,34,3,34,727,8,34,1,34,3,34,730, - 8,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,3,36,740,8,36,1,36,3,36,743, - 8,36,1,37,1,37,1,38,1,38,1,38,1,38,3,38,751,8,38,1,39,1,39,1,40,1,40,1, - 40,1,40,1,40,1,40,1,41,1,41,3,41,763,8,41,1,41,1,41,1,41,1,41,1,41,1,41, - 1,42,1,42,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,5, - 45,785,8,45,10,45,12,45,788,9,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46, - 5,46,798,8,46,10,46,12,46,801,9,46,1,46,1,46,3,46,805,8,46,1,47,1,47,3, - 47,809,8,47,1,48,1,48,1,48,1,48,5,48,815,8,48,10,48,12,48,818,9,48,1,48, - 3,48,821,8,48,1,49,1,49,1,50,1,50,1,50,1,50,3,50,829,8,50,1,51,1,51,1,51, - 1,51,1,51,1,52,1,52,1,52,3,52,839,8,52,1,52,1,52,3,52,843,8,52,1,52,1,52, - 1,53,1,53,3,53,849,8,53,1,53,1,53,3,53,853,8,53,1,53,1,53,3,53,857,8,53, - 1,53,3,53,860,8,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,3,54,869,8,54,1,54, - 1,54,3,54,873,8,54,1,54,1,54,1,54,1,54,1,54,3,54,880,8,54,1,54,3,54,883, - 8,54,1,55,1,55,1,55,1,55,1,55,1,55,5,55,891,8,55,10,55,12,55,894,9,55,1, - 56,1,56,1,57,1,57,1,57,3,57,901,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57, - 909,8,57,1,58,1,58,3,58,913,8,58,1,58,1,58,1,58,1,59,1,59,1,59,1,60,1,60, - 1,60,1,60,1,60,1,60,1,60,3,60,928,8,60,1,61,1,61,1,61,1,61,1,62,1,62,1, - 62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,3,64,947,8,64,1,65, - 1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,3,66,958,8,66,1,66,1,66,3,66,962, - 8,66,1,66,1,66,1,66,1,66,1,66,3,66,969,8,66,1,67,1,67,1,67,3,67,974,8,67, - 1,67,1,67,1,68,1,68,3,68,980,8,68,1,68,1,68,3,68,984,8,68,1,68,1,68,1,69, - 1,69,1,69,3,69,991,8,69,1,69,1,69,3,69,995,8,69,1,70,1,70,3,70,999,8,70, - 1,70,1,70,3,70,1003,8,70,1,70,1,70,1,71,1,71,1,71,1,71,3,71,1011,8,71,1, - 71,1,71,3,71,1015,8,71,1,71,1,71,1,72,3,72,1020,8,72,1,72,1,72,1,72,3,72, - 1025,8,72,1,73,1,73,1,73,1,73,3,73,1031,8,73,1,73,3,73,1034,8,73,1,73,1, - 73,3,73,1038,8,73,1,74,1,74,1,74,1,75,1,75,1,75,1,75,5,75,1047,8,75,10, - 75,12,75,1050,9,75,1,76,1,76,1,76,1,76,5,76,1056,8,76,10,76,12,76,1059, - 9,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,4,77,1069,8,77,11,77,12,77, - 1070,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,3, - 78,1086,8,78,1,78,3,78,1089,8,78,1,78,1,78,3,78,1093,8,78,1,78,3,78,1096, - 8,78,3,78,1098,8,78,1,78,1,78,1,78,3,78,1103,8,78,1,78,1,78,3,78,1107,8, - 78,1,78,3,78,1110,8,78,5,78,1112,8,78,10,78,12,78,1115,9,78,1,79,1,79,1, - 79,1,79,5,79,1121,8,79,10,79,12,79,1124,9,79,1,80,1,80,1,80,1,80,5,80,1130, - 8,80,10,80,12,80,1133,9,80,1,81,1,81,1,81,1,81,1,81,5,81,1140,8,81,10,81, - 12,81,1143,9,81,1,81,1,81,3,81,1147,8,81,1,81,1,81,1,81,1,81,1,81,1,82, - 1,82,1,83,1,83,1,83,3,83,1159,8,83,1,83,3,83,1162,8,83,1,83,3,83,1165,8, - 83,1,83,3,83,1168,8,83,1,83,1,83,1,83,1,83,3,83,1174,8,83,1,84,1,84,3,84, - 1178,8,84,1,84,1,84,1,84,1,84,5,84,1184,8,84,10,84,12,84,1187,9,84,3,84, - 1189,8,84,1,85,1,85,1,85,3,85,1194,8,85,1,85,3,85,1197,8,85,3,85,1199,8, - 85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1,86,3,86,1213, - 8,86,1,87,1,87,1,87,1,88,1,88,1,88,1,88,5,88,1222,8,88,10,88,12,88,1225, - 9,88,1,88,1,88,3,88,1229,8,88,1,88,1,88,1,88,1,88,1,88,1,88,3,88,1237,8, - 88,1,88,3,88,1240,8,88,1,88,3,88,1243,8,88,1,88,1,88,1,88,3,88,1248,8,88, - 5,88,1250,8,88,10,88,12,88,1253,9,88,1,89,1,89,3,89,1257,8,89,1,90,3,90, - 1260,8,90,1,90,1,90,3,90,1264,8,90,1,90,3,90,1267,8,90,1,90,3,90,1270,8, - 90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1,90,5,90,1280,8,90,10,90,12,90,1283, - 9,90,1,90,1,90,1,90,1,90,3,90,1289,8,90,1,90,1,90,1,90,1,90,1,90,1,90,1, - 90,1,90,1,90,3,90,1300,8,90,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,93, - 1,93,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1, - 96,1,96,5,96,1327,8,96,10,96,12,96,1330,9,96,1,96,1,96,1,97,1,97,1,98,1, - 98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98, - 1351,8,98,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101, - 1,101,1,101,1,101,5,101,1367,8,101,10,101,12,101,1370,9,101,1,101,1,101, - 3,101,1374,8,101,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,5,103, - 1384,8,103,10,103,12,103,1387,9,103,1,104,1,104,1,104,1,104,1,104,1,104, - 1,104,1,104,5,104,1397,8,104,10,104,12,104,1400,9,104,1,104,1,104,1,104, - 1,104,1,104,1,104,1,104,5,104,1409,8,104,10,104,12,104,1412,9,104,1,104, - 1,104,1,104,1,104,1,104,1,104,1,104,5,104,1421,8,104,10,104,12,104,1424, - 9,104,1,104,1,104,3,104,1428,8,104,1,105,1,105,1,105,1,106,1,106,1,107, - 1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,109,1,109,1,110,1,110, - 1,110,1,111,1,111,1,111,1,111,5,111,1453,8,111,10,111,12,111,1456,9,111, - 1,112,1,112,1,112,1,112,1,113,3,113,1463,8,113,1,113,1,113,3,113,1467,8, - 113,1,113,3,113,1470,8,113,1,113,3,113,1473,8,113,1,113,1,113,1,114,1,114, - 1,114,3,114,1480,8,114,1,114,3,114,1483,8,114,1,114,3,114,1486,8,114,1, - 114,3,114,1489,8,114,1,114,3,114,1492,8,114,1,114,3,114,1495,8,114,1,114, - 1,114,1,114,3,114,1500,8,114,1,114,3,114,1503,8,114,1,115,1,115,1,115,1, - 115,1,115,5,115,1510,8,115,10,115,12,115,1513,9,115,1,116,1,116,3,116,1517, - 8,116,1,116,1,116,3,116,1521,8,116,1,117,1,117,1,117,3,117,1526,8,117,1, - 118,1,118,1,118,1,118,1,118,5,118,1533,8,118,10,118,12,118,1536,9,118,1, - 119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1, - 119,1,119,1,119,1,119,3,119,1554,8,119,1,120,1,120,1,120,1,120,5,120,1560, - 8,120,10,120,12,120,1563,9,120,1,121,1,121,1,121,4,121,1568,8,121,11,121, - 12,121,1569,1,121,1,121,3,121,1574,8,121,1,122,1,122,3,122,1578,8,122,1, - 123,1,123,1,123,1,123,1,123,1,123,1,123,1,123,3,123,1588,8,123,1,124,1, - 124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1, - 124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,3,124,1614, - 8,124,1,125,1,125,1,125,1,125,5,125,1620,8,125,10,125,12,125,1623,9,125, - 1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,1,126,3,126,1634,8,126, - 1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,129,1,129,1,130,1,130, - 1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,3,130,1656,8,130,3,130, - 1658,8,130,1,130,1,130,1,130,1,130,1,130,1,130,5,130,1666,8,130,10,130, - 12,130,1669,9,130,1,131,3,131,1672,8,131,1,131,1,131,1,131,1,131,1,131, - 1,131,3,131,1680,8,131,1,131,1,131,1,131,1,131,1,131,5,131,1687,8,131,10, - 131,12,131,1690,9,131,1,131,1,131,1,131,3,131,1695,8,131,1,131,1,131,1, - 131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,3,131,1708,8,131,1, - 131,1,131,1,131,3,131,1713,8,131,1,131,1,131,1,131,1,131,1,131,1,131,1, - 131,1,131,5,131,1723,8,131,10,131,12,131,1726,9,131,1,131,1,131,3,131,1730, - 8,131,1,131,3,131,1733,8,131,1,131,1,131,1,131,1,131,3,131,1739,8,131,1, - 131,1,131,1,131,3,131,1744,8,131,1,131,1,131,1,131,3,131,1749,8,131,1,131, - 1,131,1,131,3,131,1754,8,131,1,132,3,132,1757,8,132,1,132,1,132,1,132,1, - 132,1,132,1,132,1,132,1,132,5,132,1767,8,132,10,132,12,132,1770,9,132,1, - 132,1,132,3,132,1774,8,132,1,132,3,132,1777,8,132,1,132,1,132,3,132,1781, - 8,132,1,133,1,133,1,133,1,133,3,133,1787,8,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,5,133,1808,8,133,10,133,12,133,1811,9,133,1,134,1,134, - 1,134,4,134,1816,8,134,11,134,12,134,1817,1,134,1,134,3,134,1822,8,134, - 1,134,1,134,1,134,1,134,1,134,4,134,1829,8,134,11,134,12,134,1830,1,134, - 1,134,3,134,1835,8,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,1,134,3,134,1851,8,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,3,134,1860,8,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,3,134,1884,8,134,1,134,1,134,1,134,5,134, - 1889,8,134,10,134,12,134,1892,9,134,3,134,1894,8,134,1,134,1,134,1,134, - 1,134,1,134,1,134,1,134,1,134,3,134,1904,8,134,1,134,1,134,1,134,1,134, - 1,134,5,134,1911,8,134,10,134,12,134,1914,9,134,1,135,1,135,1,135,3,135, - 1919,8,135,1,136,1,136,1,137,1,137,1,138,1,138,3,138,1927,8,138,1,139,1, - 139,1,139,3,139,1932,8,139,1,140,1,140,3,140,1936,8,140,1,141,1,141,1,141, - 4,141,1941,8,141,11,141,12,141,1942,1,142,1,142,1,142,3,142,1948,8,142, - 1,143,1,143,1,143,1,143,1,143,1,144,3,144,1956,8,144,1,144,1,144,3,144, - 1960,8,144,1,145,1,145,3,145,1964,8,145,1,146,3,146,1967,8,146,1,146,1, - 146,3,146,1971,8,146,1,147,3,147,1974,8,147,1,147,1,147,3,147,1978,8,147, - 1,148,1,148,1,148,1,149,1,149,4,149,1985,8,149,11,149,12,149,1986,1,149, - 3,149,1990,8,149,1,150,1,150,1,150,1,150,1,151,1,151,1,151,5,151,1999,8, - 151,10,151,12,151,2002,9,151,1,152,1,152,1,152,3,152,2007,8,152,1,153,1, - 153,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,5,156,2021, - 8,156,10,156,12,156,2024,9,156,1,157,1,157,1,157,1,158,1,158,1,158,1,158, - 1,159,1,159,1,159,1,160,1,160,1,160,1,160,5,160,2040,8,160,10,160,12,160, - 2043,9,160,1,160,1,160,1,161,1,161,3,161,2049,8,161,1,161,3,161,2052,8, - 161,1,162,1,162,1,162,3,162,2057,8,162,1,163,1,163,1,163,1,163,3,163,2063, - 8,163,1,164,1,164,1,164,1,164,1,164,1,164,3,164,2071,8,164,1,165,1,165, - 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165, - 3,165,2087,8,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,3,166,2096,8, - 166,1,167,1,167,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1, - 169,1,169,3,169,2111,8,169,1,169,3,169,2114,8,169,1,170,1,170,1,171,1,171, - 1,172,1,172,1,173,1,173,1,174,1,174,1,175,1,175,1,175,1,2022,5,156,176, - 260,266,268,176,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38, - 40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86, - 88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126, - 128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162, - 164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198, - 200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234, - 236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270, - 272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306, - 308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342, - 344,346,348,350,0,41,2,0,30,30,231,231,3,0,16,16,37,37,67,67,4,0,13,13, - 26,26,64,64,166,166,2,0,12,12,25,25,2,0,248,248,259,259,2,0,165,165,337, - 337,2,0,4,4,117,117,1,0,107,111,3,0,192,192,222,222,295,295,11,0,10,10, - 145,145,151,151,188,189,201,201,223,223,264,265,329,329,340,340,342,342, - 356,357,2,0,361,361,363,363,4,0,225,226,233,233,246,246,296,296,2,0,182, - 182,289,289,2,0,40,40,260,260,3,0,21,21,95,95,176,176,3,0,40,40,93,93,260, - 260,3,0,52,52,89,89,169,169,3,0,65,65,106,106,125,125,2,0,11,11,122,122, - 2,0,92,92,268,268,3,0,239,239,266,266,346,346,4,0,249,249,261,261,275,275, - 318,318,3,0,23,23,56,56,155,155,5,0,24,24,138,139,144,144,150,150,298,298, - 2,0,218,218,321,321,3,0,56,56,135,135,155,155,2,0,8,8,30,30,2,0,44,44,72, - 72,2,0,176,176,180,180,2,0,245,245,344,344,2,0,369,369,389,390,4,0,32,32, - 387,387,391,391,394,394,2,0,389,390,392,392,1,0,389,390,1,0,398,399,2,0, - 398,398,401,401,4,0,32,32,387,387,389,391,393,394,3,0,294,294,368,369,389, - 390,2,0,176,176,232,232,1,0,175,364,1,0,4,174,2312,0,352,1,0,0,0,2,355, - 1,0,0,0,4,365,1,0,0,0,6,380,1,0,0,0,8,382,1,0,0,0,10,398,1,0,0,0,12,402, - 1,0,0,0,14,404,1,0,0,0,16,407,1,0,0,0,18,418,1,0,0,0,20,426,1,0,0,0,22, - 434,1,0,0,0,24,436,1,0,0,0,26,481,1,0,0,0,28,483,1,0,0,0,30,490,1,0,0,0, - 32,494,1,0,0,0,34,498,1,0,0,0,36,502,1,0,0,0,38,545,1,0,0,0,40,549,1,0, - 0,0,42,551,1,0,0,0,44,592,1,0,0,0,46,606,1,0,0,0,48,608,1,0,0,0,50,618, - 1,0,0,0,52,620,1,0,0,0,54,668,1,0,0,0,56,670,1,0,0,0,58,674,1,0,0,0,60, - 682,1,0,0,0,62,690,1,0,0,0,64,694,1,0,0,0,66,701,1,0,0,0,68,729,1,0,0,0, - 70,731,1,0,0,0,72,734,1,0,0,0,74,744,1,0,0,0,76,746,1,0,0,0,78,752,1,0, - 0,0,80,754,1,0,0,0,82,762,1,0,0,0,84,770,1,0,0,0,86,772,1,0,0,0,88,776, - 1,0,0,0,90,780,1,0,0,0,92,804,1,0,0,0,94,808,1,0,0,0,96,810,1,0,0,0,98, - 822,1,0,0,0,100,828,1,0,0,0,102,830,1,0,0,0,104,835,1,0,0,0,106,846,1,0, - 0,0,108,864,1,0,0,0,110,884,1,0,0,0,112,895,1,0,0,0,114,897,1,0,0,0,116, - 910,1,0,0,0,118,917,1,0,0,0,120,920,1,0,0,0,122,929,1,0,0,0,124,933,1,0, - 0,0,126,937,1,0,0,0,128,940,1,0,0,0,130,948,1,0,0,0,132,953,1,0,0,0,134, - 970,1,0,0,0,136,977,1,0,0,0,138,987,1,0,0,0,140,996,1,0,0,0,142,1006,1, - 0,0,0,144,1024,1,0,0,0,146,1026,1,0,0,0,148,1039,1,0,0,0,150,1042,1,0,0, - 0,152,1051,1,0,0,0,154,1062,1,0,0,0,156,1097,1,0,0,0,158,1116,1,0,0,0,160, - 1125,1,0,0,0,162,1134,1,0,0,0,164,1153,1,0,0,0,166,1173,1,0,0,0,168,1175, - 1,0,0,0,170,1198,1,0,0,0,172,1212,1,0,0,0,174,1214,1,0,0,0,176,1228,1,0, - 0,0,178,1254,1,0,0,0,180,1299,1,0,0,0,182,1301,1,0,0,0,184,1303,1,0,0,0, - 186,1309,1,0,0,0,188,1311,1,0,0,0,190,1316,1,0,0,0,192,1321,1,0,0,0,194, - 1333,1,0,0,0,196,1350,1,0,0,0,198,1352,1,0,0,0,200,1354,1,0,0,0,202,1373, - 1,0,0,0,204,1375,1,0,0,0,206,1378,1,0,0,0,208,1427,1,0,0,0,210,1429,1,0, - 0,0,212,1432,1,0,0,0,214,1434,1,0,0,0,216,1441,1,0,0,0,218,1443,1,0,0,0, - 220,1445,1,0,0,0,222,1448,1,0,0,0,224,1457,1,0,0,0,226,1462,1,0,0,0,228, - 1476,1,0,0,0,230,1504,1,0,0,0,232,1514,1,0,0,0,234,1522,1,0,0,0,236,1527, - 1,0,0,0,238,1553,1,0,0,0,240,1555,1,0,0,0,242,1564,1,0,0,0,244,1575,1,0, - 0,0,246,1587,1,0,0,0,248,1613,1,0,0,0,250,1615,1,0,0,0,252,1633,1,0,0,0, - 254,1635,1,0,0,0,256,1640,1,0,0,0,258,1643,1,0,0,0,260,1657,1,0,0,0,262, - 1753,1,0,0,0,264,1780,1,0,0,0,266,1786,1,0,0,0,268,1903,1,0,0,0,270,1918, - 1,0,0,0,272,1920,1,0,0,0,274,1922,1,0,0,0,276,1926,1,0,0,0,278,1928,1,0, - 0,0,280,1933,1,0,0,0,282,1940,1,0,0,0,284,1944,1,0,0,0,286,1949,1,0,0,0, - 288,1959,1,0,0,0,290,1963,1,0,0,0,292,1966,1,0,0,0,294,1973,1,0,0,0,296, - 1979,1,0,0,0,298,1989,1,0,0,0,300,1991,1,0,0,0,302,1995,1,0,0,0,304,2006, - 1,0,0,0,306,2008,1,0,0,0,308,2010,1,0,0,0,310,2012,1,0,0,0,312,2017,1,0, - 0,0,314,2025,1,0,0,0,316,2028,1,0,0,0,318,2032,1,0,0,0,320,2035,1,0,0,0, - 322,2046,1,0,0,0,324,2056,1,0,0,0,326,2062,1,0,0,0,328,2070,1,0,0,0,330, - 2086,1,0,0,0,332,2095,1,0,0,0,334,2097,1,0,0,0,336,2099,1,0,0,0,338,2113, - 1,0,0,0,340,2115,1,0,0,0,342,2117,1,0,0,0,344,2119,1,0,0,0,346,2121,1,0, - 0,0,348,2123,1,0,0,0,350,2125,1,0,0,0,352,353,3,2,1,0,353,354,5,0,0,1,354, - 1,1,0,0,0,355,356,3,4,2,0,356,357,5,0,0,1,357,3,1,0,0,0,358,360,3,6,3,0, - 359,361,5,381,0,0,360,359,1,0,0,0,360,361,1,0,0,0,361,364,1,0,0,0,362,364, - 3,8,4,0,363,358,1,0,0,0,363,362,1,0,0,0,364,367,1,0,0,0,365,363,1,0,0,0, - 365,366,1,0,0,0,366,5,1,0,0,0,367,365,1,0,0,0,368,381,3,10,5,0,369,381, - 3,12,6,0,370,381,3,14,7,0,371,381,3,16,8,0,372,381,3,22,11,0,373,381,3, - 26,13,0,374,381,3,28,14,0,375,381,3,30,15,0,376,381,3,32,16,0,377,381,3, - 34,17,0,378,381,3,36,18,0,379,381,3,38,19,0,380,368,1,0,0,0,380,369,1,0, - 0,0,380,370,1,0,0,0,380,371,1,0,0,0,380,372,1,0,0,0,380,373,1,0,0,0,380, - 374,1,0,0,0,380,375,1,0,0,0,380,376,1,0,0,0,380,377,1,0,0,0,380,378,1,0, - 0,0,380,379,1,0,0,0,381,7,1,0,0,0,382,383,5,381,0,0,383,9,1,0,0,0,384,399, - 3,40,20,0,385,399,3,104,52,0,386,399,3,106,53,0,387,399,3,108,54,0,388, - 399,3,102,51,0,389,399,3,114,57,0,390,399,3,128,64,0,391,399,3,130,65,0, - 392,399,3,132,66,0,393,399,3,134,67,0,394,399,3,136,68,0,395,399,3,138, - 69,0,396,399,3,140,70,0,397,399,3,142,71,0,398,384,1,0,0,0,398,385,1,0, - 0,0,398,386,1,0,0,0,398,387,1,0,0,0,398,388,1,0,0,0,398,389,1,0,0,0,398, - 390,1,0,0,0,398,391,1,0,0,0,398,392,1,0,0,0,398,393,1,0,0,0,398,394,1,0, - 0,0,398,395,1,0,0,0,398,396,1,0,0,0,398,397,1,0,0,0,399,11,1,0,0,0,400, - 403,3,156,78,0,401,403,3,144,72,0,402,400,1,0,0,0,402,401,1,0,0,0,403,13, - 1,0,0,0,404,405,7,0,0,0,405,406,3,312,156,0,406,15,1,0,0,0,407,411,5,242, - 0,0,408,412,3,18,9,0,409,410,5,100,0,0,410,412,5,247,0,0,411,408,1,0,0, - 0,411,409,1,0,0,0,411,412,1,0,0,0,412,416,1,0,0,0,413,417,3,12,6,0,414, - 417,3,146,73,0,415,417,3,154,77,0,416,413,1,0,0,0,416,414,1,0,0,0,416,415, - 1,0,0,0,417,17,1,0,0,0,418,423,3,20,10,0,419,420,5,380,0,0,420,422,3,20, - 10,0,421,419,1,0,0,0,422,425,1,0,0,0,423,421,1,0,0,0,423,424,1,0,0,0,424, - 19,1,0,0,0,425,423,1,0,0,0,426,427,7,1,0,0,427,21,1,0,0,0,428,430,5,160, - 0,0,429,431,5,12,0,0,430,429,1,0,0,0,430,431,1,0,0,0,431,432,1,0,0,0,432, - 435,3,312,156,0,433,435,3,24,12,0,434,428,1,0,0,0,434,433,1,0,0,0,435,23, - 1,0,0,0,436,437,5,160,0,0,437,438,5,83,0,0,438,443,3,312,156,0,439,440, - 5,380,0,0,440,442,3,312,156,0,441,439,1,0,0,0,442,445,1,0,0,0,443,441,1, - 0,0,0,443,444,1,0,0,0,444,25,1,0,0,0,445,443,1,0,0,0,446,447,5,327,0,0, - 447,482,7,2,0,0,448,449,5,327,0,0,449,450,5,219,0,0,450,482,7,3,0,0,451, - 452,5,327,0,0,452,455,5,148,0,0,453,454,7,4,0,0,454,456,3,312,156,0,455, - 453,1,0,0,0,455,456,1,0,0,0,456,458,1,0,0,0,457,459,3,264,132,0,458,457, - 1,0,0,0,458,459,1,0,0,0,459,482,1,0,0,0,460,461,5,327,0,0,461,462,5,20, - 0,0,462,463,7,4,0,0,463,465,3,312,156,0,464,466,3,264,132,0,465,464,1,0, - 0,0,465,466,1,0,0,0,466,482,1,0,0,0,467,468,5,327,0,0,468,469,5,216,0,0, - 469,470,7,5,0,0,470,482,3,312,156,0,471,473,5,327,0,0,472,474,5,352,0,0, - 473,472,1,0,0,0,473,474,1,0,0,0,474,475,1,0,0,0,475,482,5,50,0,0,476,478, - 5,327,0,0,477,479,5,249,0,0,478,477,1,0,0,0,478,479,1,0,0,0,479,480,1,0, - 0,0,480,482,5,83,0,0,481,446,1,0,0,0,481,448,1,0,0,0,481,451,1,0,0,0,481, - 460,1,0,0,0,481,467,1,0,0,0,481,471,1,0,0,0,481,476,1,0,0,0,482,27,1,0, - 0,0,483,484,5,75,0,0,484,485,5,287,0,0,485,488,3,312,156,0,486,487,5,361, - 0,0,487,489,3,320,160,0,488,486,1,0,0,0,488,489,1,0,0,0,489,29,1,0,0,0, - 490,491,5,158,0,0,491,492,5,287,0,0,492,493,3,312,156,0,493,31,1,0,0,0, - 494,496,5,326,0,0,495,497,3,322,161,0,496,495,1,0,0,0,496,497,1,0,0,0,497, - 33,1,0,0,0,498,500,5,316,0,0,499,501,3,324,162,0,500,499,1,0,0,0,500,501, - 1,0,0,0,501,35,1,0,0,0,502,503,7,6,0,0,503,504,5,63,0,0,504,505,3,112,56, - 0,505,37,1,0,0,0,506,507,5,4,0,0,507,508,5,63,0,0,508,509,5,361,0,0,509, - 512,5,402,0,0,510,511,5,183,0,0,511,513,3,312,156,0,512,510,1,0,0,0,512, - 513,1,0,0,0,513,546,1,0,0,0,514,515,5,4,0,0,515,516,5,42,0,0,516,517,5, - 361,0,0,517,520,5,402,0,0,518,519,5,183,0,0,519,521,3,312,156,0,520,518, - 1,0,0,0,520,521,1,0,0,0,521,524,1,0,0,0,522,523,5,118,0,0,523,525,3,312, - 156,0,524,522,1,0,0,0,524,525,1,0,0,0,525,546,1,0,0,0,526,527,5,4,0,0,527, - 528,7,7,0,0,528,529,5,361,0,0,529,530,5,402,0,0,530,531,5,118,0,0,531,546, - 3,312,156,0,532,533,5,4,0,0,533,534,5,112,0,0,534,546,5,402,0,0,535,536, - 5,4,0,0,536,537,5,35,0,0,537,538,5,42,0,0,538,539,5,361,0,0,539,540,5,402, - 0,0,540,541,5,118,0,0,541,542,3,312,156,0,542,543,5,68,0,0,543,544,3,312, - 156,0,544,546,1,0,0,0,545,506,1,0,0,0,545,514,1,0,0,0,545,526,1,0,0,0,545, - 532,1,0,0,0,545,535,1,0,0,0,546,39,1,0,0,0,547,550,3,42,21,0,548,550,3, - 44,22,0,549,547,1,0,0,0,549,548,1,0,0,0,550,41,1,0,0,0,551,553,5,216,0, - 0,552,554,5,149,0,0,553,552,1,0,0,0,553,554,1,0,0,0,554,555,1,0,0,0,555, - 557,5,337,0,0,556,558,3,316,158,0,557,556,1,0,0,0,557,558,1,0,0,0,558,559, - 1,0,0,0,559,560,3,98,49,0,560,561,5,376,0,0,561,566,3,46,23,0,562,563,5, - 380,0,0,563,565,3,46,23,0,564,562,1,0,0,0,565,568,1,0,0,0,566,564,1,0,0, - 0,566,567,1,0,0,0,567,571,1,0,0,0,568,566,1,0,0,0,569,570,5,380,0,0,570, - 572,3,80,40,0,571,569,1,0,0,0,571,572,1,0,0,0,572,575,1,0,0,0,573,574,5, - 380,0,0,574,576,3,82,41,0,575,573,1,0,0,0,575,576,1,0,0,0,576,579,1,0,0, - 0,577,578,5,380,0,0,578,580,3,86,43,0,579,577,1,0,0,0,579,580,1,0,0,0,580, - 581,1,0,0,0,581,583,5,377,0,0,582,584,3,70,35,0,583,582,1,0,0,0,583,584, - 1,0,0,0,584,586,1,0,0,0,585,587,3,88,44,0,586,585,1,0,0,0,586,587,1,0,0, - 0,587,588,1,0,0,0,588,590,3,314,157,0,589,591,3,96,48,0,590,589,1,0,0,0, - 590,591,1,0,0,0,591,43,1,0,0,0,592,593,5,216,0,0,593,595,5,337,0,0,594, - 596,3,316,158,0,595,594,1,0,0,0,595,596,1,0,0,0,596,597,1,0,0,0,597,598, - 3,98,49,0,598,601,3,314,157,0,599,600,5,183,0,0,600,602,3,156,78,0,601, - 599,1,0,0,0,601,602,1,0,0,0,602,45,1,0,0,0,603,607,3,48,24,0,604,607,3, - 72,36,0,605,607,3,76,38,0,606,603,1,0,0,0,606,604,1,0,0,0,606,605,1,0,0, - 0,607,47,1,0,0,0,608,609,3,50,25,0,609,611,3,54,27,0,610,612,3,68,34,0, - 611,610,1,0,0,0,611,612,1,0,0,0,612,614,1,0,0,0,613,615,3,70,35,0,614,613, - 1,0,0,0,614,615,1,0,0,0,615,49,1,0,0,0,616,619,3,312,156,0,617,619,3,258, - 129,0,618,616,1,0,0,0,618,617,1,0,0,0,619,51,1,0,0,0,620,621,5,376,0,0, - 621,626,3,50,25,0,622,623,5,380,0,0,623,625,3,50,25,0,624,622,1,0,0,0,625, - 628,1,0,0,0,626,624,1,0,0,0,626,627,1,0,0,0,627,629,1,0,0,0,628,626,1,0, - 0,0,629,630,5,377,0,0,630,53,1,0,0,0,631,669,7,8,0,0,632,634,7,9,0,0,633, - 635,3,56,28,0,634,633,1,0,0,0,634,635,1,0,0,0,635,669,1,0,0,0,636,638,5, - 341,0,0,637,639,3,56,28,0,638,637,1,0,0,0,638,639,1,0,0,0,639,646,1,0,0, - 0,640,642,7,10,0,0,641,643,5,278,0,0,642,641,1,0,0,0,642,643,1,0,0,0,643, - 644,1,0,0,0,644,645,5,340,0,0,645,647,5,174,0,0,646,640,1,0,0,0,646,647, - 1,0,0,0,647,669,1,0,0,0,648,650,7,11,0,0,649,651,3,58,29,0,650,649,1,0, - 0,0,650,651,1,0,0,0,651,669,1,0,0,0,652,654,7,12,0,0,653,655,3,62,31,0, - 654,653,1,0,0,0,654,655,1,0,0,0,655,669,1,0,0,0,656,658,5,76,0,0,657,659, - 3,64,32,0,658,657,1,0,0,0,658,659,1,0,0,0,659,669,1,0,0,0,660,662,5,322, - 0,0,661,663,3,66,33,0,662,661,1,0,0,0,662,663,1,0,0,0,663,669,1,0,0,0,664, - 666,5,114,0,0,665,667,3,60,30,0,666,665,1,0,0,0,666,667,1,0,0,0,667,669, - 1,0,0,0,668,631,1,0,0,0,668,632,1,0,0,0,668,636,1,0,0,0,668,648,1,0,0,0, - 668,652,1,0,0,0,668,656,1,0,0,0,668,660,1,0,0,0,668,664,1,0,0,0,669,55, - 1,0,0,0,670,671,5,376,0,0,671,672,3,342,171,0,672,673,5,377,0,0,673,57, - 1,0,0,0,674,675,5,376,0,0,675,678,3,342,171,0,676,677,5,380,0,0,677,679, - 3,342,171,0,678,676,1,0,0,0,678,679,1,0,0,0,679,680,1,0,0,0,680,681,5,377, - 0,0,681,59,1,0,0,0,682,683,5,376,0,0,683,686,3,340,170,0,684,685,5,380, - 0,0,685,687,3,340,170,0,686,684,1,0,0,0,686,687,1,0,0,0,687,688,1,0,0,0, - 688,689,5,377,0,0,689,61,1,0,0,0,690,691,5,367,0,0,691,692,3,54,27,0,692, - 693,5,366,0,0,693,63,1,0,0,0,694,695,5,367,0,0,695,696,3,54,27,0,696,697, - 5,380,0,0,697,698,3,54,27,0,698,699,1,0,0,0,699,700,5,366,0,0,700,65,1, - 0,0,0,701,702,5,367,0,0,702,703,3,50,25,0,703,710,3,54,27,0,704,705,5,380, - 0,0,705,706,3,50,25,0,706,707,3,54,27,0,707,709,1,0,0,0,708,704,1,0,0,0, - 709,712,1,0,0,0,710,708,1,0,0,0,710,711,1,0,0,0,711,713,1,0,0,0,712,710, - 1,0,0,0,713,714,5,366,0,0,714,67,1,0,0,0,715,716,5,212,0,0,716,718,3,84, - 42,0,717,715,1,0,0,0,717,718,1,0,0,0,718,719,1,0,0,0,719,720,5,313,0,0, - 720,723,5,68,0,0,721,722,5,294,0,0,722,724,5,34,0,0,723,721,1,0,0,0,723, - 724,1,0,0,0,724,730,1,0,0,0,725,727,5,294,0,0,726,725,1,0,0,0,726,727,1, - 0,0,0,727,728,1,0,0,0,728,730,5,295,0,0,729,717,1,0,0,0,729,726,1,0,0,0, - 730,69,1,0,0,0,731,732,5,18,0,0,732,733,5,397,0,0,733,71,1,0,0,0,734,735, - 3,50,25,0,735,736,3,54,27,0,736,739,5,283,0,0,737,738,5,248,0,0,738,740, - 3,74,37,0,739,737,1,0,0,0,739,740,1,0,0,0,740,742,1,0,0,0,741,743,5,167, - 0,0,742,741,1,0,0,0,742,743,1,0,0,0,743,73,1,0,0,0,744,745,5,397,0,0,745, - 75,1,0,0,0,746,747,3,50,25,0,747,748,5,183,0,0,748,750,3,78,39,0,749,751, - 3,70,35,0,750,749,1,0,0,0,750,751,1,0,0,0,751,77,1,0,0,0,752,753,3,258, - 129,0,753,79,1,0,0,0,754,755,5,168,0,0,755,756,5,247,0,0,756,757,3,258, - 129,0,757,758,5,183,0,0,758,759,3,258,129,0,759,81,1,0,0,0,760,761,5,212, - 0,0,761,763,3,84,42,0,762,760,1,0,0,0,762,763,1,0,0,0,763,764,1,0,0,0,764, - 765,5,313,0,0,765,766,5,68,0,0,766,767,3,52,26,0,767,768,5,294,0,0,768, - 769,5,34,0,0,769,83,1,0,0,0,770,771,3,304,152,0,771,85,1,0,0,0,772,773, - 5,311,0,0,773,774,5,247,0,0,774,775,5,335,0,0,775,87,1,0,0,0,776,777,5, - 94,0,0,777,778,5,194,0,0,778,779,3,90,45,0,779,89,1,0,0,0,780,781,5,376, - 0,0,781,786,3,92,46,0,782,783,5,380,0,0,783,785,3,92,46,0,784,782,1,0,0, - 0,785,788,1,0,0,0,786,784,1,0,0,0,786,787,1,0,0,0,787,789,1,0,0,0,788,786, - 1,0,0,0,789,790,5,377,0,0,790,91,1,0,0,0,791,805,3,276,138,0,792,793,3, - 304,152,0,793,794,5,376,0,0,794,799,3,94,47,0,795,796,5,380,0,0,796,798, - 3,94,47,0,797,795,1,0,0,0,798,801,1,0,0,0,799,797,1,0,0,0,799,800,1,0,0, - 0,800,802,1,0,0,0,801,799,1,0,0,0,802,803,5,377,0,0,803,805,1,0,0,0,804, - 791,1,0,0,0,804,792,1,0,0,0,805,93,1,0,0,0,806,809,3,276,138,0,807,809, - 3,338,169,0,808,806,1,0,0,0,808,807,1,0,0,0,809,95,1,0,0,0,810,811,5,276, - 0,0,811,820,3,98,49,0,812,816,5,376,0,0,813,815,3,100,50,0,814,813,1,0, - 0,0,815,818,1,0,0,0,816,814,1,0,0,0,816,817,1,0,0,0,817,819,1,0,0,0,818, - 816,1,0,0,0,819,821,5,377,0,0,820,812,1,0,0,0,820,821,1,0,0,0,821,97,1, - 0,0,0,822,823,3,312,156,0,823,99,1,0,0,0,824,825,7,13,0,0,825,829,7,14, - 0,0,826,827,7,15,0,0,827,829,7,16,0,0,828,824,1,0,0,0,828,826,1,0,0,0,829, - 101,1,0,0,0,830,831,5,216,0,0,831,832,5,12,0,0,832,833,3,312,156,0,833, - 834,3,314,157,0,834,103,1,0,0,0,835,836,5,216,0,0,836,838,5,25,0,0,837, - 839,3,316,158,0,838,837,1,0,0,0,838,839,1,0,0,0,839,840,1,0,0,0,840,842, - 3,312,156,0,841,843,3,70,35,0,842,841,1,0,0,0,842,843,1,0,0,0,843,844,1, - 0,0,0,844,845,3,314,157,0,845,105,1,0,0,0,846,848,5,216,0,0,847,849,5,149, - 0,0,848,847,1,0,0,0,848,849,1,0,0,0,849,850,1,0,0,0,850,852,5,165,0,0,851, - 853,3,316,158,0,852,851,1,0,0,0,852,853,1,0,0,0,853,854,1,0,0,0,854,856, - 3,312,156,0,855,857,3,52,26,0,856,855,1,0,0,0,856,857,1,0,0,0,857,859,1, - 0,0,0,858,860,3,70,35,0,859,858,1,0,0,0,859,860,1,0,0,0,860,861,1,0,0,0, - 861,862,5,183,0,0,862,863,3,156,78,0,863,107,1,0,0,0,864,868,5,216,0,0, - 865,869,5,149,0,0,866,867,5,149,0,0,867,869,5,334,0,0,868,865,1,0,0,0,868, - 866,1,0,0,0,868,869,1,0,0,0,869,870,1,0,0,0,870,872,5,250,0,0,871,873,3, - 316,158,0,872,871,1,0,0,0,872,873,1,0,0,0,873,874,1,0,0,0,874,875,3,312, - 156,0,875,876,5,183,0,0,876,879,3,304,152,0,877,878,5,272,0,0,878,880,7, - 17,0,0,879,877,1,0,0,0,879,880,1,0,0,0,880,882,1,0,0,0,881,883,3,110,55, - 0,882,881,1,0,0,0,882,883,1,0,0,0,883,109,1,0,0,0,884,885,5,353,0,0,885, - 886,5,63,0,0,886,892,3,112,56,0,887,888,5,380,0,0,888,889,5,63,0,0,889, - 891,3,112,56,0,890,887,1,0,0,0,891,894,1,0,0,0,892,890,1,0,0,0,892,893, - 1,0,0,0,893,111,1,0,0,0,894,892,1,0,0,0,895,896,5,397,0,0,896,113,1,0,0, - 0,897,898,5,178,0,0,898,900,5,337,0,0,899,901,3,318,159,0,900,899,1,0,0, - 0,900,901,1,0,0,0,901,902,1,0,0,0,902,908,3,312,156,0,903,909,3,116,58, - 0,904,909,3,118,59,0,905,909,3,120,60,0,906,909,3,122,61,0,907,909,3,124, - 62,0,908,903,1,0,0,0,908,904,1,0,0,0,908,905,1,0,0,0,908,906,1,0,0,0,908, - 907,1,0,0,0,909,115,1,0,0,0,910,912,5,118,0,0,911,913,3,312,156,0,912,911, - 1,0,0,0,912,913,1,0,0,0,913,914,1,0,0,0,914,915,5,343,0,0,915,916,3,312, - 156,0,916,117,1,0,0,0,917,918,5,326,0,0,918,919,3,320,160,0,919,119,1,0, - 0,0,920,921,5,4,0,0,921,922,5,212,0,0,922,923,3,84,42,0,923,924,5,313,0, - 0,924,925,5,68,0,0,925,927,3,52,26,0,926,928,3,126,63,0,927,926,1,0,0,0, - 927,928,1,0,0,0,928,121,1,0,0,0,929,930,5,234,0,0,930,931,5,212,0,0,931, - 932,3,84,42,0,932,123,1,0,0,0,933,934,5,4,0,0,934,935,5,347,0,0,935,936, - 3,52,26,0,936,125,1,0,0,0,937,938,5,294,0,0,938,939,5,34,0,0,939,127,1, - 0,0,0,940,941,5,178,0,0,941,942,5,165,0,0,942,946,3,312,156,0,943,947,3, - 116,58,0,944,945,5,183,0,0,945,947,3,156,78,0,946,943,1,0,0,0,946,944,1, - 0,0,0,947,129,1,0,0,0,948,949,5,178,0,0,949,950,5,25,0,0,950,951,3,312, - 156,0,951,952,3,118,59,0,952,131,1,0,0,0,953,957,5,178,0,0,954,958,5,149, - 0,0,955,956,5,149,0,0,956,958,5,334,0,0,957,954,1,0,0,0,957,955,1,0,0,0, - 957,958,1,0,0,0,958,959,1,0,0,0,959,961,5,250,0,0,960,962,3,318,159,0,961, - 960,1,0,0,0,961,962,1,0,0,0,962,963,1,0,0,0,963,964,3,312,156,0,964,965, - 5,183,0,0,965,968,3,304,152,0,966,967,5,272,0,0,967,969,7,17,0,0,968,966, - 1,0,0,0,968,969,1,0,0,0,969,133,1,0,0,0,970,971,5,234,0,0,971,973,5,12, - 0,0,972,974,3,318,159,0,973,972,1,0,0,0,973,974,1,0,0,0,974,975,1,0,0,0, - 975,976,3,312,156,0,976,135,1,0,0,0,977,979,5,234,0,0,978,980,5,149,0,0, - 979,978,1,0,0,0,979,980,1,0,0,0,980,981,1,0,0,0,981,983,5,337,0,0,982,984, - 3,318,159,0,983,982,1,0,0,0,983,984,1,0,0,0,984,985,1,0,0,0,985,986,3,312, - 156,0,986,137,1,0,0,0,987,988,5,234,0,0,988,990,5,25,0,0,989,991,3,318, - 159,0,990,989,1,0,0,0,990,991,1,0,0,0,991,992,1,0,0,0,992,994,3,312,156, - 0,993,995,7,18,0,0,994,993,1,0,0,0,994,995,1,0,0,0,995,139,1,0,0,0,996, - 998,5,234,0,0,997,999,5,149,0,0,998,997,1,0,0,0,998,999,1,0,0,0,999,1000, - 1,0,0,0,1000,1002,5,165,0,0,1001,1003,3,318,159,0,1002,1001,1,0,0,0,1002, - 1003,1,0,0,0,1003,1004,1,0,0,0,1004,1005,3,312,156,0,1005,141,1,0,0,0,1006, - 1010,5,234,0,0,1007,1011,5,149,0,0,1008,1009,5,149,0,0,1009,1011,5,334, - 0,0,1010,1007,1,0,0,0,1010,1008,1,0,0,0,1010,1011,1,0,0,0,1011,1012,1,0, - 0,0,1012,1014,5,250,0,0,1013,1015,3,318,159,0,1014,1013,1,0,0,0,1014,1015, - 1,0,0,0,1015,1016,1,0,0,0,1016,1017,3,312,156,0,1017,143,1,0,0,0,1018,1020, - 5,240,0,0,1019,1018,1,0,0,0,1019,1020,1,0,0,0,1020,1021,1,0,0,0,1021,1025, - 3,146,73,0,1022,1023,5,240,0,0,1023,1025,3,154,77,0,1024,1019,1,0,0,0,1024, - 1022,1,0,0,0,1025,145,1,0,0,0,1026,1027,5,263,0,0,1027,1028,7,19,0,0,1028, - 1037,3,312,156,0,1029,1031,3,148,74,0,1030,1029,1,0,0,0,1030,1031,1,0,0, - 0,1031,1033,1,0,0,0,1032,1034,3,52,26,0,1033,1032,1,0,0,0,1033,1034,1,0, - 0,0,1034,1035,1,0,0,0,1035,1038,3,156,78,0,1036,1038,3,150,75,0,1037,1030, - 1,0,0,0,1037,1036,1,0,0,0,1038,147,1,0,0,0,1039,1040,5,307,0,0,1040,1041, - 3,320,160,0,1041,149,1,0,0,0,1042,1043,5,355,0,0,1043,1048,3,152,76,0,1044, - 1045,5,380,0,0,1045,1047,3,152,76,0,1046,1044,1,0,0,0,1047,1050,1,0,0,0, - 1048,1046,1,0,0,0,1048,1049,1,0,0,0,1049,151,1,0,0,0,1050,1048,1,0,0,0, - 1051,1052,5,376,0,0,1052,1057,3,338,169,0,1053,1054,5,380,0,0,1054,1056, - 3,338,169,0,1055,1053,1,0,0,0,1056,1059,1,0,0,0,1057,1055,1,0,0,0,1057, - 1058,1,0,0,0,1058,1060,1,0,0,0,1059,1057,1,0,0,0,1060,1061,5,377,0,0,1061, - 153,1,0,0,0,1062,1063,5,143,0,0,1063,1064,5,326,0,0,1064,1068,5,186,0,0, - 1065,1066,3,146,73,0,1066,1067,5,381,0,0,1067,1069,1,0,0,0,1068,1065,1, - 0,0,0,1069,1070,1,0,0,0,1070,1068,1,0,0,0,1070,1071,1,0,0,0,1071,1072,1, - 0,0,0,1072,1073,5,237,0,0,1073,155,1,0,0,0,1074,1075,6,78,-1,0,1075,1098, - 3,158,79,0,1076,1077,3,160,80,0,1077,1078,3,156,78,5,1078,1098,1,0,0,0, - 1079,1080,5,376,0,0,1080,1081,3,156,78,0,1081,1082,5,377,0,0,1082,1098, - 1,0,0,0,1083,1085,3,168,84,0,1084,1086,3,230,115,0,1085,1084,1,0,0,0,1085, - 1086,1,0,0,0,1086,1088,1,0,0,0,1087,1089,3,234,117,0,1088,1087,1,0,0,0, - 1088,1089,1,0,0,0,1089,1098,1,0,0,0,1090,1092,3,166,83,0,1091,1093,3,230, - 115,0,1092,1091,1,0,0,0,1092,1093,1,0,0,0,1093,1095,1,0,0,0,1094,1096,3, - 234,117,0,1095,1094,1,0,0,0,1095,1096,1,0,0,0,1096,1098,1,0,0,0,1097,1074, - 1,0,0,0,1097,1076,1,0,0,0,1097,1079,1,0,0,0,1097,1083,1,0,0,0,1097,1090, - 1,0,0,0,1098,1113,1,0,0,0,1099,1100,10,3,0,0,1100,1102,7,20,0,0,1101,1103, - 5,176,0,0,1102,1101,1,0,0,0,1102,1103,1,0,0,0,1103,1104,1,0,0,0,1104,1106, - 3,156,78,0,1105,1107,3,230,115,0,1106,1105,1,0,0,0,1106,1107,1,0,0,0,1107, - 1109,1,0,0,0,1108,1110,3,234,117,0,1109,1108,1,0,0,0,1109,1110,1,0,0,0, - 1110,1112,1,0,0,0,1111,1099,1,0,0,0,1112,1115,1,0,0,0,1113,1111,1,0,0,0, - 1113,1114,1,0,0,0,1114,157,1,0,0,0,1115,1113,1,0,0,0,1116,1117,5,355,0, - 0,1117,1122,3,258,129,0,1118,1119,5,380,0,0,1119,1121,3,258,129,0,1120, - 1118,1,0,0,0,1121,1124,1,0,0,0,1122,1120,1,0,0,0,1122,1123,1,0,0,0,1123, - 159,1,0,0,0,1124,1122,1,0,0,0,1125,1126,5,361,0,0,1126,1131,3,162,81,0, - 1127,1128,5,380,0,0,1128,1130,3,162,81,0,1129,1127,1,0,0,0,1130,1133,1, - 0,0,0,1131,1129,1,0,0,0,1131,1132,1,0,0,0,1132,161,1,0,0,0,1133,1131,1, - 0,0,0,1134,1146,3,164,82,0,1135,1136,5,376,0,0,1136,1141,3,50,25,0,1137, - 1138,5,380,0,0,1138,1140,3,50,25,0,1139,1137,1,0,0,0,1140,1143,1,0,0,0, - 1141,1139,1,0,0,0,1141,1142,1,0,0,0,1142,1144,1,0,0,0,1143,1141,1,0,0,0, - 1144,1145,5,377,0,0,1145,1147,1,0,0,0,1146,1135,1,0,0,0,1146,1147,1,0,0, - 0,1147,1148,1,0,0,0,1148,1149,5,183,0,0,1149,1150,5,376,0,0,1150,1151,3, - 156,78,0,1151,1152,5,377,0,0,1152,163,1,0,0,0,1153,1154,3,304,152,0,1154, - 165,1,0,0,0,1155,1156,3,168,84,0,1156,1158,3,174,87,0,1157,1159,3,204,102, - 0,1158,1157,1,0,0,0,1158,1159,1,0,0,0,1159,1161,1,0,0,0,1160,1162,3,206, - 103,0,1161,1160,1,0,0,0,1161,1162,1,0,0,0,1162,1164,1,0,0,0,1163,1165,3, - 220,110,0,1164,1163,1,0,0,0,1164,1165,1,0,0,0,1165,1167,1,0,0,0,1166,1168, - 3,222,111,0,1167,1166,1,0,0,0,1167,1168,1,0,0,0,1168,1174,1,0,0,0,1169, - 1170,3,168,84,0,1170,1171,3,174,87,0,1171,1172,3,228,114,0,1172,1174,1, - 0,0,0,1173,1155,1,0,0,0,1173,1169,1,0,0,0,1174,167,1,0,0,0,1175,1177,5, - 325,0,0,1176,1178,3,346,173,0,1177,1176,1,0,0,0,1177,1178,1,0,0,0,1178, - 1188,1,0,0,0,1179,1189,5,387,0,0,1180,1185,3,170,85,0,1181,1182,5,380,0, - 0,1182,1184,3,170,85,0,1183,1181,1,0,0,0,1184,1187,1,0,0,0,1185,1183,1, - 0,0,0,1185,1186,1,0,0,0,1186,1189,1,0,0,0,1187,1185,1,0,0,0,1188,1179,1, - 0,0,0,1188,1180,1,0,0,0,1189,169,1,0,0,0,1190,1199,3,172,86,0,1191,1196, - 3,258,129,0,1192,1194,5,183,0,0,1193,1192,1,0,0,0,1193,1194,1,0,0,0,1194, - 1195,1,0,0,0,1195,1197,3,258,129,0,1196,1193,1,0,0,0,1196,1197,1,0,0,0, - 1197,1199,1,0,0,0,1198,1190,1,0,0,0,1198,1191,1,0,0,0,1199,171,1,0,0,0, - 1200,1201,3,268,134,0,1201,1202,5,305,0,0,1202,1203,3,226,113,0,1203,1204, - 5,183,0,0,1204,1205,3,304,152,0,1205,1213,1,0,0,0,1206,1207,3,268,134,0, - 1207,1208,5,305,0,0,1208,1209,3,296,148,0,1209,1210,5,183,0,0,1210,1211, - 3,304,152,0,1211,1213,1,0,0,0,1212,1200,1,0,0,0,1212,1206,1,0,0,0,1213, - 173,1,0,0,0,1214,1215,5,248,0,0,1215,1216,3,176,88,0,1216,175,1,0,0,0,1217, - 1218,6,88,-1,0,1218,1223,3,178,89,0,1219,1220,5,380,0,0,1220,1222,3,178, - 89,0,1221,1219,1,0,0,0,1222,1225,1,0,0,0,1223,1221,1,0,0,0,1223,1224,1, - 0,0,0,1224,1229,1,0,0,0,1225,1223,1,0,0,0,1226,1229,3,188,94,0,1227,1229, - 3,190,95,0,1228,1217,1,0,0,0,1228,1226,1,0,0,0,1228,1227,1,0,0,0,1229,1251, - 1,0,0,0,1230,1231,10,3,0,0,1231,1232,5,217,0,0,1232,1233,5,270,0,0,1233, - 1250,3,176,88,4,1234,1236,10,4,0,0,1235,1237,5,290,0,0,1236,1235,1,0,0, - 0,1236,1237,1,0,0,0,1237,1239,1,0,0,0,1238,1240,7,21,0,0,1239,1238,1,0, - 0,0,1239,1240,1,0,0,0,1240,1242,1,0,0,0,1241,1243,5,304,0,0,1242,1241,1, - 0,0,0,1242,1243,1,0,0,0,1243,1244,1,0,0,0,1244,1245,5,270,0,0,1245,1247, - 3,176,88,0,1246,1248,3,202,101,0,1247,1246,1,0,0,0,1247,1248,1,0,0,0,1248, - 1250,1,0,0,0,1249,1230,1,0,0,0,1249,1234,1,0,0,0,1250,1253,1,0,0,0,1251, - 1249,1,0,0,0,1251,1252,1,0,0,0,1252,177,1,0,0,0,1253,1251,1,0,0,0,1254, - 1256,3,180,90,0,1255,1257,3,294,147,0,1256,1255,1,0,0,0,1256,1257,1,0,0, - 0,1257,179,1,0,0,0,1258,1260,5,337,0,0,1259,1258,1,0,0,0,1259,1260,1,0, - 0,0,1260,1261,1,0,0,0,1261,1263,3,182,91,0,1262,1264,3,184,92,0,1263,1262, - 1,0,0,0,1263,1264,1,0,0,0,1264,1269,1,0,0,0,1265,1267,5,183,0,0,1266,1265, - 1,0,0,0,1266,1267,1,0,0,0,1267,1268,1,0,0,0,1268,1270,3,274,137,0,1269, - 1266,1,0,0,0,1269,1270,1,0,0,0,1270,1300,1,0,0,0,1271,1272,5,273,0,0,1272, - 1273,5,337,0,0,1273,1274,5,376,0,0,1274,1275,3,270,135,0,1275,1276,5,376, - 0,0,1276,1281,3,258,129,0,1277,1278,5,380,0,0,1278,1280,3,258,129,0,1279, - 1277,1,0,0,0,1280,1283,1,0,0,0,1281,1279,1,0,0,0,1281,1282,1,0,0,0,1282, - 1284,1,0,0,0,1283,1281,1,0,0,0,1284,1285,5,377,0,0,1285,1286,5,377,0,0, - 1286,1300,1,0,0,0,1287,1289,5,273,0,0,1288,1287,1,0,0,0,1288,1289,1,0,0, - 0,1289,1290,1,0,0,0,1290,1291,5,376,0,0,1291,1292,3,156,78,0,1292,1293, - 5,377,0,0,1293,1300,1,0,0,0,1294,1295,5,349,0,0,1295,1296,5,376,0,0,1296, - 1297,3,258,129,0,1297,1298,5,377,0,0,1298,1300,1,0,0,0,1299,1259,1,0,0, - 0,1299,1271,1,0,0,0,1299,1288,1,0,0,0,1299,1294,1,0,0,0,1300,181,1,0,0, - 0,1301,1302,3,312,156,0,1302,183,1,0,0,0,1303,1304,5,247,0,0,1304,1305, - 5,335,0,0,1305,1306,5,183,0,0,1306,1307,5,297,0,0,1307,1308,3,186,93,0, - 1308,185,1,0,0,0,1309,1310,3,258,129,0,1310,187,1,0,0,0,1311,1312,5,376, - 0,0,1312,1313,3,150,75,0,1313,1314,5,377,0,0,1314,1315,3,294,147,0,1315, - 189,1,0,0,0,1316,1317,5,337,0,0,1317,1318,5,376,0,0,1318,1319,3,192,96, - 0,1319,1320,5,377,0,0,1320,191,1,0,0,0,1321,1322,3,194,97,0,1322,1323,5, - 376,0,0,1323,1328,3,196,98,0,1324,1325,5,380,0,0,1325,1327,3,196,98,0,1326, - 1324,1,0,0,0,1327,1330,1,0,0,0,1328,1326,1,0,0,0,1328,1329,1,0,0,0,1329, - 1331,1,0,0,0,1330,1328,1,0,0,0,1331,1332,5,377,0,0,1332,193,1,0,0,0,1333, - 1334,7,22,0,0,1334,195,1,0,0,0,1335,1336,5,337,0,0,1336,1351,3,218,109, - 0,1337,1351,3,200,100,0,1338,1351,3,278,139,0,1339,1340,5,24,0,0,1340,1341, - 5,396,0,0,1341,1342,5,337,0,0,1342,1351,3,218,109,0,1343,1344,5,150,0,0, - 1344,1345,5,396,0,0,1345,1351,3,200,100,0,1346,1347,3,198,99,0,1347,1348, - 5,396,0,0,1348,1349,3,278,139,0,1349,1351,1,0,0,0,1350,1335,1,0,0,0,1350, - 1337,1,0,0,0,1350,1338,1,0,0,0,1350,1339,1,0,0,0,1350,1343,1,0,0,0,1350, - 1346,1,0,0,0,1351,197,1,0,0,0,1352,1353,7,23,0,0,1353,199,1,0,0,0,1354, - 1355,5,31,0,0,1355,1356,5,376,0,0,1356,1357,3,312,156,0,1357,1358,5,377, - 0,0,1358,201,1,0,0,0,1359,1360,5,299,0,0,1360,1374,3,260,130,0,1361,1362, - 5,353,0,0,1362,1363,5,376,0,0,1363,1368,3,312,156,0,1364,1365,5,380,0,0, - 1365,1367,3,312,156,0,1366,1364,1,0,0,0,1367,1370,1,0,0,0,1368,1366,1,0, - 0,0,1368,1369,1,0,0,0,1369,1371,1,0,0,0,1370,1368,1,0,0,0,1371,1372,5,377, - 0,0,1372,1374,1,0,0,0,1373,1359,1,0,0,0,1373,1361,1,0,0,0,1374,203,1,0, - 0,0,1375,1376,5,359,0,0,1376,1377,3,260,130,0,1377,205,1,0,0,0,1378,1379, - 5,253,0,0,1379,1380,5,194,0,0,1380,1385,3,208,104,0,1381,1382,5,380,0,0, - 1382,1384,3,208,104,0,1383,1381,1,0,0,0,1384,1387,1,0,0,0,1385,1383,1,0, - 0,0,1385,1386,1,0,0,0,1386,207,1,0,0,0,1387,1385,1,0,0,0,1388,1428,3,258, - 129,0,1389,1428,3,214,107,0,1390,1391,5,376,0,0,1391,1428,5,377,0,0,1392, - 1393,5,376,0,0,1393,1398,3,258,129,0,1394,1395,5,380,0,0,1395,1397,3,258, - 129,0,1396,1394,1,0,0,0,1397,1400,1,0,0,0,1398,1396,1,0,0,0,1398,1399,1, - 0,0,0,1399,1401,1,0,0,0,1400,1398,1,0,0,0,1401,1402,5,377,0,0,1402,1428, - 1,0,0,0,1403,1404,3,212,106,0,1404,1405,5,376,0,0,1405,1410,3,258,129,0, - 1406,1407,5,380,0,0,1407,1409,3,258,129,0,1408,1406,1,0,0,0,1409,1412,1, - 0,0,0,1410,1408,1,0,0,0,1410,1411,1,0,0,0,1411,1413,1,0,0,0,1412,1410,1, - 0,0,0,1413,1414,5,377,0,0,1414,1428,1,0,0,0,1415,1416,3,210,105,0,1416, - 1417,5,376,0,0,1417,1422,3,208,104,0,1418,1419,5,380,0,0,1419,1421,3,208, - 104,0,1420,1418,1,0,0,0,1421,1424,1,0,0,0,1422,1420,1,0,0,0,1422,1423,1, - 0,0,0,1423,1425,1,0,0,0,1424,1422,1,0,0,0,1425,1426,5,377,0,0,1426,1428, - 1,0,0,0,1427,1388,1,0,0,0,1427,1389,1,0,0,0,1427,1390,1,0,0,0,1427,1392, - 1,0,0,0,1427,1403,1,0,0,0,1427,1415,1,0,0,0,1428,209,1,0,0,0,1429,1430, - 5,254,0,0,1430,1431,5,136,0,0,1431,211,1,0,0,0,1432,1433,7,24,0,0,1433, - 213,1,0,0,0,1434,1435,3,216,108,0,1435,1436,5,376,0,0,1436,1437,3,218,109, - 0,1437,1438,5,380,0,0,1438,1439,3,278,139,0,1439,1440,5,377,0,0,1440,215, - 1,0,0,0,1441,1442,7,25,0,0,1442,217,1,0,0,0,1443,1444,3,312,156,0,1444, - 219,1,0,0,0,1445,1446,5,256,0,0,1446,1447,3,260,130,0,1447,221,1,0,0,0, - 1448,1449,5,360,0,0,1449,1454,3,224,112,0,1450,1451,5,380,0,0,1451,1453, - 3,224,112,0,1452,1450,1,0,0,0,1453,1456,1,0,0,0,1454,1452,1,0,0,0,1454, - 1455,1,0,0,0,1455,223,1,0,0,0,1456,1454,1,0,0,0,1457,1458,3,296,148,0,1458, - 1459,5,183,0,0,1459,1460,3,226,113,0,1460,225,1,0,0,0,1461,1463,3,296,148, - 0,1462,1461,1,0,0,0,1462,1463,1,0,0,0,1463,1464,1,0,0,0,1464,1466,5,376, - 0,0,1465,1467,3,236,118,0,1466,1465,1,0,0,0,1466,1467,1,0,0,0,1467,1469, - 1,0,0,0,1468,1470,3,230,115,0,1469,1468,1,0,0,0,1469,1470,1,0,0,0,1470, - 1472,1,0,0,0,1471,1473,3,252,126,0,1472,1471,1,0,0,0,1472,1473,1,0,0,0, - 1473,1474,1,0,0,0,1474,1475,5,377,0,0,1475,227,1,0,0,0,1476,1477,5,280, - 0,0,1477,1479,5,376,0,0,1478,1480,3,236,118,0,1479,1478,1,0,0,0,1479,1480, - 1,0,0,0,1480,1482,1,0,0,0,1481,1483,3,230,115,0,1482,1481,1,0,0,0,1482, - 1483,1,0,0,0,1483,1485,1,0,0,0,1484,1486,3,240,120,0,1485,1484,1,0,0,0, - 1485,1486,1,0,0,0,1486,1488,1,0,0,0,1487,1489,3,246,123,0,1488,1487,1,0, - 0,0,1488,1489,1,0,0,0,1489,1491,1,0,0,0,1490,1492,3,248,124,0,1491,1490, - 1,0,0,0,1491,1492,1,0,0,0,1492,1494,1,0,0,0,1493,1495,3,242,121,0,1494, - 1493,1,0,0,0,1494,1495,1,0,0,0,1495,1496,1,0,0,0,1496,1497,3,250,125,0, - 1497,1502,5,377,0,0,1498,1500,5,183,0,0,1499,1498,1,0,0,0,1499,1500,1,0, - 0,0,1500,1501,1,0,0,0,1501,1503,3,304,152,0,1502,1499,1,0,0,0,1502,1503, - 1,0,0,0,1503,229,1,0,0,0,1504,1505,5,302,0,0,1505,1506,5,194,0,0,1506,1511, - 3,232,116,0,1507,1508,5,380,0,0,1508,1510,3,232,116,0,1509,1507,1,0,0,0, - 1510,1513,1,0,0,0,1511,1509,1,0,0,0,1511,1512,1,0,0,0,1512,231,1,0,0,0, - 1513,1511,1,0,0,0,1514,1516,3,258,129,0,1515,1517,7,26,0,0,1516,1515,1, - 0,0,0,1516,1517,1,0,0,0,1517,1520,1,0,0,0,1518,1519,5,86,0,0,1519,1521, - 7,27,0,0,1520,1518,1,0,0,0,1520,1521,1,0,0,0,1521,233,1,0,0,0,1522,1525, - 5,277,0,0,1523,1526,5,176,0,0,1524,1526,3,258,129,0,1525,1523,1,0,0,0,1525, - 1524,1,0,0,0,1526,235,1,0,0,0,1527,1528,5,307,0,0,1528,1529,5,194,0,0,1529, - 1534,3,258,129,0,1530,1531,5,380,0,0,1531,1533,3,258,129,0,1532,1530,1, - 0,0,0,1533,1536,1,0,0,0,1534,1532,1,0,0,0,1534,1535,1,0,0,0,1535,237,1, - 0,0,0,1536,1534,1,0,0,0,1537,1554,5,387,0,0,1538,1554,5,390,0,0,1539,1554, - 5,395,0,0,1540,1541,5,378,0,0,1541,1542,5,398,0,0,1542,1543,5,380,0,0,1543, - 1544,5,398,0,0,1544,1554,5,379,0,0,1545,1546,5,378,0,0,1546,1547,5,398, - 0,0,1547,1548,5,380,0,0,1548,1554,5,379,0,0,1549,1550,5,378,0,0,1550,1551, - 5,380,0,0,1551,1552,5,398,0,0,1552,1554,5,379,0,0,1553,1537,1,0,0,0,1553, - 1538,1,0,0,0,1553,1539,1,0,0,0,1553,1540,1,0,0,0,1553,1545,1,0,0,0,1553, - 1549,1,0,0,0,1554,239,1,0,0,0,1555,1556,5,281,0,0,1556,1561,3,170,85,0, - 1557,1558,5,380,0,0,1558,1560,3,170,85,0,1559,1557,1,0,0,0,1560,1563,1, - 0,0,0,1561,1559,1,0,0,0,1561,1562,1,0,0,0,1562,241,1,0,0,0,1563,1561,1, - 0,0,0,1564,1565,5,308,0,0,1565,1567,5,376,0,0,1566,1568,3,244,122,0,1567, - 1566,1,0,0,0,1568,1569,1,0,0,0,1569,1567,1,0,0,0,1569,1570,1,0,0,0,1570, - 1571,1,0,0,0,1571,1573,5,377,0,0,1572,1574,3,256,128,0,1573,1572,1,0,0, - 0,1573,1574,1,0,0,0,1574,243,1,0,0,0,1575,1577,3,306,153,0,1576,1578,3, - 238,119,0,1577,1576,1,0,0,0,1577,1578,1,0,0,0,1578,245,1,0,0,0,1579,1580, - 5,176,0,0,1580,1581,5,323,0,0,1581,1582,5,309,0,0,1582,1588,5,279,0,0,1583, - 1584,5,300,0,0,1584,1585,5,322,0,0,1585,1586,5,309,0,0,1586,1588,5,279, - 0,0,1587,1579,1,0,0,0,1587,1583,1,0,0,0,1588,247,1,0,0,0,1589,1590,5,6, - 0,0,1590,1591,5,279,0,0,1591,1592,5,328,0,0,1592,1593,5,97,0,0,1593,1594, - 5,72,0,0,1594,1614,5,322,0,0,1595,1596,5,6,0,0,1596,1597,5,279,0,0,1597, - 1598,5,328,0,0,1598,1599,5,343,0,0,1599,1600,5,291,0,0,1600,1614,5,322, - 0,0,1601,1602,5,6,0,0,1602,1603,5,279,0,0,1603,1604,5,328,0,0,1604,1605, - 5,343,0,0,1605,1606,5,72,0,0,1606,1614,3,306,153,0,1607,1608,5,6,0,0,1608, - 1609,5,279,0,0,1609,1610,5,328,0,0,1610,1611,5,343,0,0,1611,1612,5,44,0, - 0,1612,1614,3,306,153,0,1613,1589,1,0,0,0,1613,1595,1,0,0,0,1613,1601,1, - 0,0,0,1613,1607,1,0,0,0,1614,249,1,0,0,0,1615,1616,5,229,0,0,1616,1621, - 3,170,85,0,1617,1618,5,380,0,0,1618,1620,3,170,85,0,1619,1617,1,0,0,0,1620, - 1623,1,0,0,0,1621,1619,1,0,0,0,1621,1622,1,0,0,0,1622,251,1,0,0,0,1623, - 1621,1,0,0,0,1624,1625,5,314,0,0,1625,1626,5,187,0,0,1626,1627,3,278,139, - 0,1627,1628,3,254,127,0,1628,1634,1,0,0,0,1629,1630,5,323,0,0,1630,1631, - 5,187,0,0,1631,1632,5,398,0,0,1632,1634,3,254,127,0,1633,1624,1,0,0,0,1633, - 1629,1,0,0,0,1634,253,1,0,0,0,1635,1636,5,101,0,0,1636,1637,5,179,0,0,1637, - 1638,5,219,0,0,1638,1639,5,322,0,0,1639,255,1,0,0,0,1640,1641,5,362,0,0, - 1641,1642,3,278,139,0,1642,257,1,0,0,0,1643,1644,3,260,130,0,1644,259,1, - 0,0,0,1645,1646,6,130,-1,0,1646,1647,5,294,0,0,1647,1658,3,260,130,5,1648, - 1649,5,241,0,0,1649,1650,5,376,0,0,1650,1651,3,156,78,0,1651,1652,5,377, - 0,0,1652,1658,1,0,0,0,1653,1655,3,266,133,0,1654,1656,3,262,131,0,1655, - 1654,1,0,0,0,1655,1656,1,0,0,0,1656,1658,1,0,0,0,1657,1645,1,0,0,0,1657, - 1648,1,0,0,0,1657,1653,1,0,0,0,1658,1667,1,0,0,0,1659,1660,10,2,0,0,1660, - 1661,5,179,0,0,1661,1666,3,260,130,3,1662,1663,10,1,0,0,1663,1664,5,301, - 0,0,1664,1666,3,260,130,2,1665,1659,1,0,0,0,1665,1662,1,0,0,0,1666,1669, - 1,0,0,0,1667,1665,1,0,0,0,1667,1668,1,0,0,0,1668,261,1,0,0,0,1669,1667, - 1,0,0,0,1670,1672,5,294,0,0,1671,1670,1,0,0,0,1671,1672,1,0,0,0,1672,1673, - 1,0,0,0,1673,1674,5,187,0,0,1674,1675,3,266,133,0,1675,1676,5,179,0,0,1676, - 1677,3,266,133,0,1677,1754,1,0,0,0,1678,1680,5,294,0,0,1679,1678,1,0,0, - 0,1679,1680,1,0,0,0,1680,1681,1,0,0,0,1681,1682,5,259,0,0,1682,1683,5,376, - 0,0,1683,1688,3,258,129,0,1684,1685,5,380,0,0,1685,1687,3,258,129,0,1686, - 1684,1,0,0,0,1687,1690,1,0,0,0,1688,1686,1,0,0,0,1688,1689,1,0,0,0,1689, - 1691,1,0,0,0,1690,1688,1,0,0,0,1691,1692,5,377,0,0,1692,1754,1,0,0,0,1693, - 1695,5,294,0,0,1694,1693,1,0,0,0,1694,1695,1,0,0,0,1695,1696,1,0,0,0,1696, - 1697,5,259,0,0,1697,1698,5,376,0,0,1698,1699,3,156,78,0,1699,1700,5,377, - 0,0,1700,1754,1,0,0,0,1701,1702,5,241,0,0,1702,1703,5,376,0,0,1703,1704, - 3,156,78,0,1704,1705,5,377,0,0,1705,1754,1,0,0,0,1706,1708,5,294,0,0,1707, - 1706,1,0,0,0,1707,1708,1,0,0,0,1708,1709,1,0,0,0,1709,1710,5,319,0,0,1710, - 1754,3,266,133,0,1711,1713,5,294,0,0,1712,1711,1,0,0,0,1712,1713,1,0,0, - 0,1713,1714,1,0,0,0,1714,1715,5,276,0,0,1715,1729,7,28,0,0,1716,1717,5, - 376,0,0,1717,1730,5,377,0,0,1718,1719,5,376,0,0,1719,1724,3,258,129,0,1720, - 1721,5,380,0,0,1721,1723,3,258,129,0,1722,1720,1,0,0,0,1723,1726,1,0,0, - 0,1724,1722,1,0,0,0,1724,1725,1,0,0,0,1725,1727,1,0,0,0,1726,1724,1,0,0, - 0,1727,1728,5,377,0,0,1728,1730,1,0,0,0,1729,1716,1,0,0,0,1729,1718,1,0, - 0,0,1730,1754,1,0,0,0,1731,1733,5,294,0,0,1732,1731,1,0,0,0,1732,1733,1, - 0,0,0,1733,1734,1,0,0,0,1734,1735,5,276,0,0,1735,1754,3,266,133,0,1736, - 1738,5,269,0,0,1737,1739,5,294,0,0,1738,1737,1,0,0,0,1738,1739,1,0,0,0, - 1739,1740,1,0,0,0,1740,1754,5,295,0,0,1741,1743,5,269,0,0,1742,1744,5,294, - 0,0,1743,1742,1,0,0,0,1743,1744,1,0,0,0,1744,1745,1,0,0,0,1745,1754,7,29, - 0,0,1746,1748,5,269,0,0,1747,1749,5,294,0,0,1748,1747,1,0,0,0,1748,1749, - 1,0,0,0,1749,1750,1,0,0,0,1750,1751,5,232,0,0,1751,1752,5,248,0,0,1752, - 1754,3,266,133,0,1753,1671,1,0,0,0,1753,1679,1,0,0,0,1753,1694,1,0,0,0, - 1753,1701,1,0,0,0,1753,1707,1,0,0,0,1753,1712,1,0,0,0,1753,1732,1,0,0,0, - 1753,1736,1,0,0,0,1753,1741,1,0,0,0,1753,1746,1,0,0,0,1754,263,1,0,0,0, - 1755,1757,5,294,0,0,1756,1755,1,0,0,0,1756,1757,1,0,0,0,1757,1758,1,0,0, - 0,1758,1759,5,276,0,0,1759,1773,7,28,0,0,1760,1761,5,376,0,0,1761,1774, - 5,377,0,0,1762,1763,5,376,0,0,1763,1768,3,258,129,0,1764,1765,5,380,0,0, - 1765,1767,3,258,129,0,1766,1764,1,0,0,0,1767,1770,1,0,0,0,1768,1766,1,0, - 0,0,1768,1769,1,0,0,0,1769,1771,1,0,0,0,1770,1768,1,0,0,0,1771,1772,5,377, - 0,0,1772,1774,1,0,0,0,1773,1760,1,0,0,0,1773,1762,1,0,0,0,1774,1781,1,0, - 0,0,1775,1777,5,294,0,0,1776,1775,1,0,0,0,1776,1777,1,0,0,0,1777,1778,1, - 0,0,0,1778,1779,5,276,0,0,1779,1781,3,266,133,0,1780,1756,1,0,0,0,1780, - 1776,1,0,0,0,1781,265,1,0,0,0,1782,1783,6,133,-1,0,1783,1787,3,268,134, - 0,1784,1785,7,30,0,0,1785,1787,3,266,133,7,1786,1782,1,0,0,0,1786,1784, - 1,0,0,0,1787,1809,1,0,0,0,1788,1789,10,6,0,0,1789,1790,7,31,0,0,1790,1808, - 3,266,133,7,1791,1792,10,5,0,0,1792,1793,7,32,0,0,1793,1808,3,266,133,6, - 1794,1795,10,4,0,0,1795,1796,5,371,0,0,1796,1808,3,266,133,5,1797,1798, - 10,3,0,0,1798,1799,5,372,0,0,1799,1808,3,266,133,4,1800,1801,10,2,0,0,1801, - 1802,5,370,0,0,1802,1808,3,266,133,3,1803,1804,10,1,0,0,1804,1805,3,330, - 165,0,1805,1806,3,266,133,2,1806,1808,1,0,0,0,1807,1788,1,0,0,0,1807,1791, - 1,0,0,0,1807,1794,1,0,0,0,1807,1797,1,0,0,0,1807,1800,1,0,0,0,1807,1803, - 1,0,0,0,1808,1811,1,0,0,0,1809,1807,1,0,0,0,1809,1810,1,0,0,0,1810,267, - 1,0,0,0,1811,1809,1,0,0,0,1812,1813,6,134,-1,0,1813,1815,5,198,0,0,1814, - 1816,3,310,155,0,1815,1814,1,0,0,0,1816,1817,1,0,0,0,1817,1815,1,0,0,0, - 1817,1818,1,0,0,0,1818,1821,1,0,0,0,1819,1820,5,236,0,0,1820,1822,3,258, - 129,0,1821,1819,1,0,0,0,1821,1822,1,0,0,0,1822,1823,1,0,0,0,1823,1824,5, - 237,0,0,1824,1904,1,0,0,0,1825,1826,5,198,0,0,1826,1828,3,258,129,0,1827, - 1829,3,310,155,0,1828,1827,1,0,0,0,1829,1830,1,0,0,0,1830,1828,1,0,0,0, - 1830,1831,1,0,0,0,1831,1834,1,0,0,0,1832,1833,5,236,0,0,1833,1835,3,258, - 129,0,1834,1832,1,0,0,0,1834,1835,1,0,0,0,1835,1836,1,0,0,0,1836,1837,5, - 237,0,0,1837,1904,1,0,0,0,1838,1839,5,199,0,0,1839,1840,5,376,0,0,1840, - 1841,3,258,129,0,1841,1842,5,183,0,0,1842,1843,3,54,27,0,1843,1844,5,377, - 0,0,1844,1904,1,0,0,0,1845,1846,5,44,0,0,1846,1847,5,376,0,0,1847,1850, - 3,258,129,0,1848,1849,5,59,0,0,1849,1851,5,86,0,0,1850,1848,1,0,0,0,1850, - 1851,1,0,0,0,1851,1852,1,0,0,0,1852,1853,5,377,0,0,1853,1904,1,0,0,0,1854, - 1855,5,72,0,0,1855,1856,5,376,0,0,1856,1859,3,258,129,0,1857,1858,5,59, - 0,0,1858,1860,5,86,0,0,1859,1857,1,0,0,0,1859,1860,1,0,0,0,1860,1861,1, - 0,0,0,1861,1862,5,377,0,0,1862,1904,1,0,0,0,1863,1864,5,312,0,0,1864,1865, - 5,376,0,0,1865,1866,3,266,133,0,1866,1867,5,259,0,0,1867,1868,3,266,133, - 0,1868,1869,5,377,0,0,1869,1904,1,0,0,0,1870,1904,3,338,169,0,1871,1904, - 5,387,0,0,1872,1873,3,312,156,0,1873,1874,5,373,0,0,1874,1875,5,387,0,0, - 1875,1904,1,0,0,0,1876,1877,5,376,0,0,1877,1878,3,156,78,0,1878,1879,5, - 377,0,0,1879,1904,1,0,0,0,1880,1881,3,270,135,0,1881,1893,5,376,0,0,1882, - 1884,3,346,173,0,1883,1882,1,0,0,0,1883,1884,1,0,0,0,1884,1885,1,0,0,0, - 1885,1890,3,258,129,0,1886,1887,5,380,0,0,1887,1889,3,258,129,0,1888,1886, - 1,0,0,0,1889,1892,1,0,0,0,1890,1888,1,0,0,0,1890,1891,1,0,0,0,1891,1894, - 1,0,0,0,1892,1890,1,0,0,0,1893,1883,1,0,0,0,1893,1894,1,0,0,0,1894,1895, - 1,0,0,0,1895,1896,5,377,0,0,1896,1904,1,0,0,0,1897,1904,3,304,152,0,1898, - 1904,3,272,136,0,1899,1900,5,376,0,0,1900,1901,3,258,129,0,1901,1902,5, - 377,0,0,1902,1904,1,0,0,0,1903,1812,1,0,0,0,1903,1825,1,0,0,0,1903,1838, - 1,0,0,0,1903,1845,1,0,0,0,1903,1854,1,0,0,0,1903,1863,1,0,0,0,1903,1870, - 1,0,0,0,1903,1871,1,0,0,0,1903,1872,1,0,0,0,1903,1876,1,0,0,0,1903,1880, - 1,0,0,0,1903,1897,1,0,0,0,1903,1898,1,0,0,0,1903,1899,1,0,0,0,1904,1912, - 1,0,0,0,1905,1906,10,4,0,0,1906,1907,5,374,0,0,1907,1908,3,266,133,0,1908, - 1909,5,375,0,0,1909,1911,1,0,0,0,1910,1905,1,0,0,0,1911,1914,1,0,0,0,1912, - 1910,1,0,0,0,1912,1913,1,0,0,0,1913,269,1,0,0,0,1914,1912,1,0,0,0,1915, - 1919,3,348,174,0,1916,1919,3,350,175,0,1917,1919,3,312,156,0,1918,1915, - 1,0,0,0,1918,1916,1,0,0,0,1918,1917,1,0,0,0,1919,271,1,0,0,0,1920,1921, - 3,312,156,0,1921,273,1,0,0,0,1922,1923,3,304,152,0,1923,275,1,0,0,0,1924, - 1927,3,304,152,0,1925,1927,3,272,136,0,1926,1924,1,0,0,0,1926,1925,1,0, - 0,0,1927,277,1,0,0,0,1928,1931,5,267,0,0,1929,1932,3,280,140,0,1930,1932, - 3,284,142,0,1931,1929,1,0,0,0,1931,1930,1,0,0,0,1931,1932,1,0,0,0,1932, - 279,1,0,0,0,1933,1935,3,282,141,0,1934,1936,3,286,143,0,1935,1934,1,0,0, - 0,1935,1936,1,0,0,0,1936,281,1,0,0,0,1937,1938,3,288,144,0,1938,1939,3, - 290,145,0,1939,1941,1,0,0,0,1940,1937,1,0,0,0,1941,1942,1,0,0,0,1942,1940, - 1,0,0,0,1942,1943,1,0,0,0,1943,283,1,0,0,0,1944,1947,3,286,143,0,1945,1948, - 3,282,141,0,1946,1948,3,286,143,0,1947,1945,1,0,0,0,1947,1946,1,0,0,0,1947, - 1948,1,0,0,0,1948,285,1,0,0,0,1949,1950,3,288,144,0,1950,1951,3,290,145, - 0,1951,1952,5,343,0,0,1952,1953,3,290,145,0,1953,287,1,0,0,0,1954,1956, - 7,33,0,0,1955,1954,1,0,0,0,1955,1956,1,0,0,0,1956,1957,1,0,0,0,1957,1960, - 7,34,0,0,1958,1960,5,397,0,0,1959,1955,1,0,0,0,1959,1958,1,0,0,0,1960,289, - 1,0,0,0,1961,1964,3,304,152,0,1962,1964,3,348,174,0,1963,1961,1,0,0,0,1963, - 1962,1,0,0,0,1964,291,1,0,0,0,1965,1967,5,183,0,0,1966,1965,1,0,0,0,1966, - 1967,1,0,0,0,1967,1968,1,0,0,0,1968,1970,3,304,152,0,1969,1971,3,300,150, - 0,1970,1969,1,0,0,0,1970,1971,1,0,0,0,1971,293,1,0,0,0,1972,1974,5,183, - 0,0,1973,1972,1,0,0,0,1973,1974,1,0,0,0,1974,1975,1,0,0,0,1975,1977,3,304, - 152,0,1976,1978,3,300,150,0,1977,1976,1,0,0,0,1977,1978,1,0,0,0,1978,295, - 1,0,0,0,1979,1980,3,304,152,0,1980,1981,3,298,149,0,1981,297,1,0,0,0,1982, - 1983,5,284,0,0,1983,1985,3,304,152,0,1984,1982,1,0,0,0,1985,1986,1,0,0, - 0,1986,1984,1,0,0,0,1986,1987,1,0,0,0,1987,1990,1,0,0,0,1988,1990,1,0,0, - 0,1989,1984,1,0,0,0,1989,1988,1,0,0,0,1990,299,1,0,0,0,1991,1992,5,376, - 0,0,1992,1993,3,302,151,0,1993,1994,5,377,0,0,1994,301,1,0,0,0,1995,2000, - 3,304,152,0,1996,1997,5,380,0,0,1997,1999,3,304,152,0,1998,1996,1,0,0,0, - 1999,2002,1,0,0,0,2000,1998,1,0,0,0,2000,2001,1,0,0,0,2001,303,1,0,0,0, - 2002,2000,1,0,0,0,2003,2007,3,306,153,0,2004,2007,3,308,154,0,2005,2007, - 3,350,175,0,2006,2003,1,0,0,0,2006,2004,1,0,0,0,2006,2005,1,0,0,0,2007, - 305,1,0,0,0,2008,2009,7,35,0,0,2009,307,1,0,0,0,2010,2011,5,397,0,0,2011, - 309,1,0,0,0,2012,2013,5,358,0,0,2013,2014,3,258,129,0,2014,2015,5,339,0, - 0,2015,2016,3,258,129,0,2016,311,1,0,0,0,2017,2022,3,304,152,0,2018,2019, - 5,373,0,0,2019,2021,3,304,152,0,2020,2018,1,0,0,0,2021,2024,1,0,0,0,2022, - 2023,1,0,0,0,2022,2020,1,0,0,0,2023,313,1,0,0,0,2024,2022,1,0,0,0,2025, - 2026,5,361,0,0,2026,2027,3,320,160,0,2027,315,1,0,0,0,2028,2029,5,58,0, - 0,2029,2030,5,294,0,0,2030,2031,5,241,0,0,2031,317,1,0,0,0,2032,2033,5, - 58,0,0,2033,2034,5,241,0,0,2034,319,1,0,0,0,2035,2036,5,376,0,0,2036,2041, - 3,322,161,0,2037,2038,5,380,0,0,2038,2040,3,322,161,0,2039,2037,1,0,0,0, - 2040,2043,1,0,0,0,2041,2039,1,0,0,0,2041,2042,1,0,0,0,2042,2044,1,0,0,0, - 2043,2041,1,0,0,0,2044,2045,5,377,0,0,2045,321,1,0,0,0,2046,2051,3,324, - 162,0,2047,2049,5,365,0,0,2048,2047,1,0,0,0,2048,2049,1,0,0,0,2049,2050, - 1,0,0,0,2050,2052,3,326,163,0,2051,2048,1,0,0,0,2051,2052,1,0,0,0,2052, - 323,1,0,0,0,2053,2057,3,304,152,0,2054,2057,3,272,136,0,2055,2057,5,397, - 0,0,2056,2053,1,0,0,0,2056,2054,1,0,0,0,2056,2055,1,0,0,0,2057,325,1,0, - 0,0,2058,2063,5,398,0,0,2059,2063,5,399,0,0,2060,2063,3,344,172,0,2061, - 2063,5,397,0,0,2062,2058,1,0,0,0,2062,2059,1,0,0,0,2062,2060,1,0,0,0,2062, - 2061,1,0,0,0,2063,327,1,0,0,0,2064,2071,5,179,0,0,2065,2066,5,371,0,0,2066, - 2071,5,371,0,0,2067,2071,5,301,0,0,2068,2069,5,370,0,0,2069,2071,5,370, - 0,0,2070,2064,1,0,0,0,2070,2065,1,0,0,0,2070,2067,1,0,0,0,2070,2068,1,0, - 0,0,2071,329,1,0,0,0,2072,2087,5,365,0,0,2073,2087,5,366,0,0,2074,2087, - 5,367,0,0,2075,2076,5,367,0,0,2076,2087,5,365,0,0,2077,2078,5,366,0,0,2078, - 2087,5,365,0,0,2079,2080,5,367,0,0,2080,2087,5,366,0,0,2081,2082,5,368, - 0,0,2082,2087,5,365,0,0,2083,2084,5,367,0,0,2084,2085,5,365,0,0,2085,2087, - 5,366,0,0,2086,2072,1,0,0,0,2086,2073,1,0,0,0,2086,2074,1,0,0,0,2086,2075, - 1,0,0,0,2086,2077,1,0,0,0,2086,2079,1,0,0,0,2086,2081,1,0,0,0,2086,2083, - 1,0,0,0,2087,331,1,0,0,0,2088,2089,5,367,0,0,2089,2096,5,367,0,0,2090,2091, - 5,366,0,0,2091,2096,5,366,0,0,2092,2096,5,371,0,0,2093,2096,5,372,0,0,2094, - 2096,5,370,0,0,2095,2088,1,0,0,0,2095,2090,1,0,0,0,2095,2092,1,0,0,0,2095, - 2093,1,0,0,0,2095,2094,1,0,0,0,2096,333,1,0,0,0,2097,2098,7,36,0,0,2098, - 335,1,0,0,0,2099,2100,7,37,0,0,2100,337,1,0,0,0,2101,2114,3,340,170,0,2102, - 2114,3,342,171,0,2103,2114,3,278,139,0,2104,2105,5,389,0,0,2105,2114,3, - 342,171,0,2106,2114,3,344,172,0,2107,2114,5,399,0,0,2108,2114,5,400,0,0, - 2109,2111,5,294,0,0,2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2112,1,0,0, - 0,2112,2114,5,295,0,0,2113,2101,1,0,0,0,2113,2102,1,0,0,0,2113,2103,1,0, - 0,0,2113,2104,1,0,0,0,2113,2106,1,0,0,0,2113,2107,1,0,0,0,2113,2108,1,0, - 0,0,2113,2110,1,0,0,0,2114,339,1,0,0,0,2115,2116,5,397,0,0,2116,341,1,0, - 0,0,2117,2118,5,398,0,0,2118,343,1,0,0,0,2119,2120,7,29,0,0,2120,345,1, - 0,0,0,2121,2122,7,38,0,0,2122,347,1,0,0,0,2123,2124,7,39,0,0,2124,349,1, - 0,0,0,2125,2126,7,40,0,0,2126,351,1,0,0,0,247,360,363,365,380,398,402,411, - 416,423,430,434,443,455,458,465,473,478,481,488,496,500,512,520,524,545, - 549,553,557,566,571,575,579,583,586,590,595,601,606,611,614,618,626,634, - 638,642,646,650,654,658,662,666,668,678,686,710,717,723,726,729,739,742, - 750,762,786,799,804,808,816,820,828,838,842,848,852,856,859,868,872,879, - 882,892,900,908,912,927,946,957,961,968,973,979,983,990,994,998,1002,1010, - 1014,1019,1024,1030,1033,1037,1048,1057,1070,1085,1088,1092,1095,1097,1102, - 1106,1109,1113,1122,1131,1141,1146,1158,1161,1164,1167,1173,1177,1185,1188, - 1193,1196,1198,1212,1223,1228,1236,1239,1242,1247,1249,1251,1256,1259,1263, - 1266,1269,1281,1288,1299,1328,1350,1368,1373,1385,1398,1410,1422,1427,1454, - 1462,1466,1469,1472,1479,1482,1485,1488,1491,1494,1499,1502,1511,1516,1520, - 1525,1534,1553,1561,1569,1573,1577,1587,1613,1621,1633,1655,1657,1665,1667, - 1671,1679,1688,1694,1707,1712,1724,1729,1732,1738,1743,1748,1753,1756,1768, - 1773,1776,1780,1786,1807,1809,1817,1821,1830,1834,1850,1859,1883,1890,1893, - 1903,1912,1918,1926,1931,1935,1942,1947,1955,1959,1963,1966,1970,1973,1977, - 1986,1989,2000,2006,2022,2041,2048,2051,2056,2062,2070,2086,2095,2110,2113]; + 7,175,2,176,7,176,1,0,1,0,1,0,1,1,1,1,1,1,1,2,1,2,3,2,363,8,2,1,2,5,2,366, + 8,2,10,2,12,2,369,9,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3, + 3,383,8,3,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1, + 5,3,5,401,8,5,1,6,1,6,3,6,405,8,6,1,7,1,7,1,7,1,8,1,8,1,8,1,8,3,8,414,8, + 8,1,8,1,8,1,8,3,8,419,8,8,1,9,1,9,1,9,5,9,424,8,9,10,9,12,9,427,9,9,1,10, + 1,10,1,11,1,11,3,11,433,8,11,1,11,1,11,3,11,437,8,11,1,12,1,12,1,12,1,12, + 1,12,5,12,444,8,12,10,12,12,12,447,9,12,1,13,1,13,1,13,1,13,1,13,1,13,1, + 13,1,13,1,13,3,13,458,8,13,1,13,3,13,461,8,13,1,13,1,13,1,13,1,13,1,13, + 3,13,468,8,13,1,13,1,13,1,13,1,13,1,13,1,13,3,13,476,8,13,1,13,1,13,1,13, + 3,13,481,8,13,1,13,3,13,484,8,13,1,14,1,14,1,14,1,14,1,14,3,14,491,8,14, + 1,15,1,15,1,15,1,15,1,16,1,16,3,16,499,8,16,1,17,1,17,3,17,503,8,17,1,18, + 1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,3,19,515,8,19,1,19,1,19,1, + 19,1,19,1,19,1,19,3,19,523,8,19,1,19,1,19,3,19,527,8,19,1,19,1,19,1,19, + 1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, + 19,1,19,3,19,548,8,19,1,20,1,20,3,20,552,8,20,1,21,1,21,3,21,556,8,21,1, + 21,1,21,3,21,560,8,21,1,21,1,21,1,21,1,21,1,21,5,21,567,8,21,10,21,12,21, + 570,9,21,1,21,1,21,3,21,574,8,21,1,21,1,21,3,21,578,8,21,1,21,1,21,3,21, + 582,8,21,1,21,1,21,3,21,586,8,21,1,21,3,21,589,8,21,1,21,1,21,3,21,593, + 8,21,1,22,1,22,1,22,3,22,598,8,22,1,22,1,22,1,22,1,22,3,22,604,8,22,1,23, + 1,23,1,23,3,23,609,8,23,1,24,1,24,1,24,3,24,614,8,24,1,24,3,24,617,8,24, + 1,25,1,25,3,25,621,8,25,1,26,1,26,1,26,1,26,5,26,627,8,26,10,26,12,26,630, + 9,26,1,26,1,26,1,27,1,27,1,27,3,27,637,8,27,1,27,1,27,3,27,641,8,27,1,27, + 1,27,3,27,645,8,27,1,27,1,27,3,27,649,8,27,1,27,1,27,3,27,653,8,27,1,27, + 1,27,3,27,657,8,27,1,27,1,27,3,27,661,8,27,1,27,1,27,3,27,665,8,27,1,27, + 1,27,3,27,669,8,27,3,27,671,8,27,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29, + 3,29,681,8,29,1,29,1,29,1,30,1,30,1,30,1,30,3,30,689,8,30,1,30,1,30,1,31, + 1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1, + 33,1,33,1,33,5,33,711,8,33,10,33,12,33,714,9,33,1,33,1,33,1,34,1,34,3,34, + 720,8,34,1,34,1,34,1,34,1,34,3,34,726,8,34,1,34,3,34,729,8,34,1,34,3,34, + 732,8,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,3,36,742,8,36,1,36,3,36, + 745,8,36,1,37,1,37,1,38,1,38,1,38,1,38,3,38,753,8,38,1,39,1,39,1,40,1,40, + 1,40,1,40,1,40,1,40,1,41,1,41,3,41,765,8,41,1,41,1,41,1,41,1,41,1,41,1, + 41,1,42,1,42,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45, + 5,45,787,8,45,10,45,12,45,790,9,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1, + 46,5,46,800,8,46,10,46,12,46,803,9,46,1,46,1,46,3,46,807,8,46,1,47,1,47, + 3,47,811,8,47,1,48,1,48,1,48,1,48,5,48,817,8,48,10,48,12,48,820,9,48,1, + 48,3,48,823,8,48,1,49,1,49,1,50,1,50,1,50,1,50,3,50,831,8,50,1,51,1,51, + 1,51,1,51,1,51,1,52,1,52,1,52,3,52,841,8,52,1,52,1,52,3,52,845,8,52,1,52, + 1,52,1,53,1,53,3,53,851,8,53,1,53,1,53,3,53,855,8,53,1,53,1,53,3,53,859, + 8,53,1,53,3,53,862,8,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,3,54,871,8,54, + 1,54,1,54,3,54,875,8,54,1,54,1,54,1,54,1,54,1,54,3,54,882,8,54,1,54,3,54, + 885,8,54,1,55,1,55,1,55,1,55,1,55,1,55,5,55,893,8,55,10,55,12,55,896,9, + 55,1,56,1,56,1,57,1,57,1,57,3,57,903,8,57,1,57,1,57,1,57,1,57,1,57,1,57, + 3,57,911,8,57,1,58,1,58,3,58,915,8,58,1,58,1,58,1,58,1,59,1,59,1,59,1,60, + 1,60,1,60,1,60,1,60,1,60,1,60,3,60,930,8,60,1,61,1,61,1,61,1,61,1,62,1, + 62,1,62,1,62,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,3,64,949,8,64, + 1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,3,66,960,8,66,1,66,1,66,3, + 66,964,8,66,1,66,1,66,1,66,1,66,1,66,3,66,971,8,66,1,67,1,67,1,67,3,67, + 976,8,67,1,67,1,67,1,68,1,68,3,68,982,8,68,1,68,1,68,3,68,986,8,68,1,68, + 1,68,1,69,1,69,1,69,3,69,993,8,69,1,69,1,69,3,69,997,8,69,1,70,1,70,3,70, + 1001,8,70,1,70,1,70,3,70,1005,8,70,1,70,1,70,1,71,1,71,1,71,1,71,3,71,1013, + 8,71,1,71,1,71,3,71,1017,8,71,1,71,1,71,1,72,3,72,1022,8,72,1,72,1,72,1, + 72,1,72,3,72,1028,8,72,1,73,1,73,1,73,1,73,3,73,1034,8,73,1,73,3,73,1037, + 8,73,1,73,1,73,3,73,1041,8,73,1,74,1,74,1,74,1,75,1,75,1,75,1,75,5,75,1050, + 8,75,10,75,12,75,1053,9,75,1,76,1,76,1,76,1,76,5,76,1059,8,76,10,76,12, + 76,1062,9,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,4,77,1073,8,77, + 11,77,12,77,1074,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,4,78,1085,8,78, + 11,78,12,78,1086,1,78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79, + 1,79,1,79,3,79,1102,8,79,1,79,3,79,1105,8,79,1,79,1,79,3,79,1109,8,79,1, + 79,3,79,1112,8,79,3,79,1114,8,79,1,79,1,79,1,79,3,79,1119,8,79,1,79,1,79, + 3,79,1123,8,79,1,79,3,79,1126,8,79,5,79,1128,8,79,10,79,12,79,1131,9,79, + 1,80,1,80,1,80,1,80,5,80,1137,8,80,10,80,12,80,1140,9,80,1,81,1,81,1,81, + 1,81,5,81,1146,8,81,10,81,12,81,1149,9,81,1,82,1,82,1,82,1,82,1,82,5,82, + 1156,8,82,10,82,12,82,1159,9,82,1,82,1,82,3,82,1163,8,82,1,82,1,82,1,82, + 1,82,1,82,1,83,1,83,1,84,1,84,1,84,3,84,1175,8,84,1,84,3,84,1178,8,84,1, + 84,3,84,1181,8,84,1,84,3,84,1184,8,84,1,84,1,84,1,84,1,84,3,84,1190,8,84, + 1,85,1,85,3,85,1194,8,85,1,85,1,85,1,85,1,85,5,85,1200,8,85,10,85,12,85, + 1203,9,85,3,85,1205,8,85,1,86,1,86,1,86,3,86,1210,8,86,1,86,3,86,1213,8, + 86,3,86,1215,8,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87, + 1,87,3,87,1229,8,87,1,88,1,88,1,88,1,89,1,89,1,89,1,89,5,89,1238,8,89,10, + 89,12,89,1241,9,89,1,89,1,89,3,89,1245,8,89,1,89,1,89,1,89,1,89,1,89,1, + 89,3,89,1253,8,89,1,89,3,89,1256,8,89,1,89,3,89,1259,8,89,1,89,1,89,1,89, + 3,89,1264,8,89,5,89,1266,8,89,10,89,12,89,1269,9,89,1,90,1,90,3,90,1273, + 8,90,1,91,3,91,1276,8,91,1,91,1,91,3,91,1280,8,91,1,91,3,91,1283,8,91,1, + 91,3,91,1286,8,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,5,91,1296,8,91, + 10,91,12,91,1299,9,91,1,91,1,91,1,91,1,91,3,91,1305,8,91,1,91,1,91,1,91, + 1,91,1,91,1,91,1,91,1,91,1,91,3,91,1316,8,91,1,92,1,92,1,93,1,93,1,93,1, + 93,1,93,1,93,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96, + 1,97,1,97,1,97,1,97,1,97,5,97,1343,8,97,10,97,12,97,1346,9,97,1,97,1,97, + 1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1,99,1, + 99,1,99,1,99,3,99,1367,8,99,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1, + 102,1,102,1,102,1,102,1,102,1,102,1,102,5,102,1383,8,102,10,102,12,102, + 1386,9,102,1,102,1,102,3,102,1390,8,102,1,103,1,103,1,103,1,104,1,104,1, + 104,1,104,1,104,5,104,1400,8,104,10,104,12,104,1403,9,104,1,105,1,105,1, + 105,1,105,1,105,1,105,1,105,1,105,5,105,1413,8,105,10,105,12,105,1416,9, + 105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,5,105,1425,8,105,10,105,12, + 105,1428,9,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,5,105,1437,8,105, + 10,105,12,105,1440,9,105,1,105,1,105,3,105,1444,8,105,1,106,1,106,1,106, + 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,110, + 1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,112,5,112,1469,8,112,10,112, + 12,112,1472,9,112,1,113,1,113,1,113,1,113,1,114,3,114,1479,8,114,1,114, + 1,114,3,114,1483,8,114,1,114,3,114,1486,8,114,1,114,3,114,1489,8,114,1, + 114,1,114,1,115,1,115,1,115,3,115,1496,8,115,1,115,3,115,1499,8,115,1,115, + 3,115,1502,8,115,1,115,3,115,1505,8,115,1,115,3,115,1508,8,115,1,115,3, + 115,1511,8,115,1,115,1,115,1,115,3,115,1516,8,115,1,115,3,115,1519,8,115, + 1,116,1,116,1,116,1,116,1,116,5,116,1526,8,116,10,116,12,116,1529,9,116, + 1,117,1,117,3,117,1533,8,117,1,117,1,117,3,117,1537,8,117,1,118,1,118,1, + 118,3,118,1542,8,118,1,119,1,119,1,119,1,119,1,119,5,119,1549,8,119,10, + 119,12,119,1552,9,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1, + 120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,3,120,1570,8,120,1,121,1, + 121,1,121,1,121,5,121,1576,8,121,10,121,12,121,1579,9,121,1,122,1,122,1, + 122,4,122,1584,8,122,11,122,12,122,1585,1,122,1,122,3,122,1590,8,122,1, + 123,1,123,3,123,1594,8,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1, + 124,3,124,1604,8,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1, + 125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1, + 125,1,125,1,125,1,125,3,125,1630,8,125,1,126,1,126,1,126,1,126,5,126,1636, + 8,126,10,126,12,126,1639,9,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,3,127,1650,8,127,1,128,1,128,1,128,1,128,1,128,1,129,1,129, + 1,129,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,3,131,1672,8,131,3,131,1674,8,131,1,131,1,131,1,131,1,131,1,131,1, + 131,5,131,1682,8,131,10,131,12,131,1685,9,131,1,132,3,132,1688,8,132,1, + 132,1,132,1,132,1,132,1,132,1,132,3,132,1696,8,132,1,132,1,132,1,132,1, + 132,1,132,5,132,1703,8,132,10,132,12,132,1706,9,132,1,132,1,132,1,132,3, + 132,1711,8,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1, + 132,1,132,3,132,1724,8,132,1,132,1,132,1,132,3,132,1729,8,132,1,132,1,132, + 1,132,1,132,1,132,1,132,1,132,1,132,5,132,1739,8,132,10,132,12,132,1742, + 9,132,1,132,1,132,3,132,1746,8,132,1,132,3,132,1749,8,132,1,132,1,132,1, + 132,1,132,3,132,1755,8,132,1,132,1,132,1,132,3,132,1760,8,132,1,132,1,132, + 1,132,3,132,1765,8,132,1,132,1,132,1,132,3,132,1770,8,132,1,133,3,133,1773, + 8,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,133,5,133,1783,8,133, + 10,133,12,133,1786,9,133,1,133,1,133,3,133,1790,8,133,1,133,3,133,1793, + 8,133,1,133,1,133,3,133,1797,8,133,1,134,1,134,1,134,1,134,3,134,1803,8, + 134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1, + 134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,5,134,1824,8,134,10,134,12, + 134,1827,9,134,1,135,1,135,1,135,4,135,1832,8,135,11,135,12,135,1833,1, + 135,1,135,3,135,1838,8,135,1,135,1,135,1,135,1,135,1,135,4,135,1845,8,135, + 11,135,12,135,1846,1,135,1,135,3,135,1851,8,135,1,135,1,135,1,135,1,135, + 1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,1867, + 8,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,1876,8,135,1,135, + 1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135, + 1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,1900,8,135, + 1,135,1,135,1,135,5,135,1905,8,135,10,135,12,135,1908,9,135,3,135,1910, + 8,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,135,3,135,1920,8,135, + 1,135,1,135,1,135,1,135,1,135,5,135,1927,8,135,10,135,12,135,1930,9,135, + 1,136,1,136,1,136,3,136,1935,8,136,1,137,1,137,1,138,1,138,1,139,1,139, + 3,139,1943,8,139,1,140,1,140,1,140,3,140,1948,8,140,1,141,1,141,3,141,1952, + 8,141,1,142,1,142,1,142,4,142,1957,8,142,11,142,12,142,1958,1,143,1,143, + 1,143,3,143,1964,8,143,1,144,1,144,1,144,1,144,1,144,1,145,3,145,1972,8, + 145,1,145,1,145,3,145,1976,8,145,1,146,1,146,3,146,1980,8,146,1,147,3,147, + 1983,8,147,1,147,1,147,3,147,1987,8,147,1,148,3,148,1990,8,148,1,148,1, + 148,3,148,1994,8,148,1,149,1,149,1,149,1,150,1,150,4,150,2001,8,150,11, + 150,12,150,2002,1,150,3,150,2006,8,150,1,151,1,151,1,151,1,151,1,152,1, + 152,1,152,5,152,2015,8,152,10,152,12,152,2018,9,152,1,153,1,153,1,153,3, + 153,2023,8,153,1,154,1,154,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1, + 157,1,157,1,157,5,157,2037,8,157,10,157,12,157,2040,9,157,1,158,1,158,1, + 158,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,161,1,161,1,161,1,161,5, + 161,2056,8,161,10,161,12,161,2059,9,161,1,161,1,161,1,162,1,162,3,162,2065, + 8,162,1,162,3,162,2068,8,162,1,163,1,163,1,163,3,163,2073,8,163,1,164,1, + 164,1,164,1,164,3,164,2079,8,164,1,165,1,165,1,165,1,165,1,165,1,165,3, + 165,2087,8,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1, + 166,1,166,1,166,1,166,1,166,3,166,2103,8,166,1,167,1,167,1,167,1,167,1, + 167,1,167,1,167,3,167,2112,8,167,1,168,1,168,1,169,1,169,1,170,1,170,1, + 170,1,170,1,170,1,170,1,170,1,170,1,170,3,170,2127,8,170,1,170,3,170,2130, + 8,170,1,171,1,171,1,172,1,172,1,173,1,173,1,174,1,174,1,175,1,175,1,176, + 1,176,1,176,1,2038,5,158,178,262,268,270,177,0,2,4,6,8,10,12,14,16,18,20, + 22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68, + 70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112, + 114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148, + 150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184, + 186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220, + 222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256, + 258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292, + 294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328, + 330,332,334,336,338,340,342,344,346,348,350,352,0,41,2,0,30,30,231,231, + 3,0,16,16,37,37,67,67,4,0,13,13,26,26,64,64,166,166,2,0,12,12,25,25,2,0, + 248,248,259,259,2,0,165,165,337,337,2,0,4,4,117,117,1,0,107,111,3,0,192, + 192,222,222,295,295,11,0,10,10,145,145,151,151,188,189,201,201,223,223, + 264,265,329,329,340,340,342,342,356,357,2,0,361,361,363,363,4,0,225,226, + 233,233,246,246,296,296,2,0,182,182,289,289,2,0,40,40,260,260,3,0,21,21, + 95,95,176,176,3,0,40,40,93,93,260,260,3,0,52,52,89,89,169,169,3,0,65,65, + 106,106,125,125,2,0,11,11,122,122,2,0,92,92,268,268,3,0,239,239,266,266, + 346,346,4,0,249,249,261,261,275,275,318,318,3,0,23,23,56,56,155,155,5,0, + 24,24,138,139,144,144,150,150,298,298,2,0,218,218,321,321,3,0,56,56,135, + 135,155,155,2,0,8,8,30,30,2,0,44,44,72,72,2,0,176,176,180,180,2,0,245,245, + 344,344,2,0,369,369,389,390,4,0,32,32,387,387,391,391,394,394,2,0,389,390, + 392,392,1,0,389,390,1,0,398,399,2,0,398,398,401,401,4,0,32,32,387,387,389, + 391,393,394,3,0,294,294,368,369,389,390,2,0,176,176,232,232,1,0,175,364, + 1,0,4,174,2329,0,354,1,0,0,0,2,357,1,0,0,0,4,367,1,0,0,0,6,382,1,0,0,0, + 8,384,1,0,0,0,10,400,1,0,0,0,12,404,1,0,0,0,14,406,1,0,0,0,16,409,1,0,0, + 0,18,420,1,0,0,0,20,428,1,0,0,0,22,436,1,0,0,0,24,438,1,0,0,0,26,483,1, + 0,0,0,28,485,1,0,0,0,30,492,1,0,0,0,32,496,1,0,0,0,34,500,1,0,0,0,36,504, + 1,0,0,0,38,547,1,0,0,0,40,551,1,0,0,0,42,553,1,0,0,0,44,594,1,0,0,0,46, + 608,1,0,0,0,48,610,1,0,0,0,50,620,1,0,0,0,52,622,1,0,0,0,54,670,1,0,0,0, + 56,672,1,0,0,0,58,676,1,0,0,0,60,684,1,0,0,0,62,692,1,0,0,0,64,696,1,0, + 0,0,66,703,1,0,0,0,68,731,1,0,0,0,70,733,1,0,0,0,72,736,1,0,0,0,74,746, + 1,0,0,0,76,748,1,0,0,0,78,754,1,0,0,0,80,756,1,0,0,0,82,764,1,0,0,0,84, + 772,1,0,0,0,86,774,1,0,0,0,88,778,1,0,0,0,90,782,1,0,0,0,92,806,1,0,0,0, + 94,810,1,0,0,0,96,812,1,0,0,0,98,824,1,0,0,0,100,830,1,0,0,0,102,832,1, + 0,0,0,104,837,1,0,0,0,106,848,1,0,0,0,108,866,1,0,0,0,110,886,1,0,0,0,112, + 897,1,0,0,0,114,899,1,0,0,0,116,912,1,0,0,0,118,919,1,0,0,0,120,922,1,0, + 0,0,122,931,1,0,0,0,124,935,1,0,0,0,126,939,1,0,0,0,128,942,1,0,0,0,130, + 950,1,0,0,0,132,955,1,0,0,0,134,972,1,0,0,0,136,979,1,0,0,0,138,989,1,0, + 0,0,140,998,1,0,0,0,142,1008,1,0,0,0,144,1027,1,0,0,0,146,1029,1,0,0,0, + 148,1042,1,0,0,0,150,1045,1,0,0,0,152,1054,1,0,0,0,154,1065,1,0,0,0,156, + 1078,1,0,0,0,158,1113,1,0,0,0,160,1132,1,0,0,0,162,1141,1,0,0,0,164,1150, + 1,0,0,0,166,1169,1,0,0,0,168,1189,1,0,0,0,170,1191,1,0,0,0,172,1214,1,0, + 0,0,174,1228,1,0,0,0,176,1230,1,0,0,0,178,1244,1,0,0,0,180,1270,1,0,0,0, + 182,1315,1,0,0,0,184,1317,1,0,0,0,186,1319,1,0,0,0,188,1325,1,0,0,0,190, + 1327,1,0,0,0,192,1332,1,0,0,0,194,1337,1,0,0,0,196,1349,1,0,0,0,198,1366, + 1,0,0,0,200,1368,1,0,0,0,202,1370,1,0,0,0,204,1389,1,0,0,0,206,1391,1,0, + 0,0,208,1394,1,0,0,0,210,1443,1,0,0,0,212,1445,1,0,0,0,214,1448,1,0,0,0, + 216,1450,1,0,0,0,218,1457,1,0,0,0,220,1459,1,0,0,0,222,1461,1,0,0,0,224, + 1464,1,0,0,0,226,1473,1,0,0,0,228,1478,1,0,0,0,230,1492,1,0,0,0,232,1520, + 1,0,0,0,234,1530,1,0,0,0,236,1538,1,0,0,0,238,1543,1,0,0,0,240,1569,1,0, + 0,0,242,1571,1,0,0,0,244,1580,1,0,0,0,246,1591,1,0,0,0,248,1603,1,0,0,0, + 250,1629,1,0,0,0,252,1631,1,0,0,0,254,1649,1,0,0,0,256,1651,1,0,0,0,258, + 1656,1,0,0,0,260,1659,1,0,0,0,262,1673,1,0,0,0,264,1769,1,0,0,0,266,1796, + 1,0,0,0,268,1802,1,0,0,0,270,1919,1,0,0,0,272,1934,1,0,0,0,274,1936,1,0, + 0,0,276,1938,1,0,0,0,278,1942,1,0,0,0,280,1944,1,0,0,0,282,1949,1,0,0,0, + 284,1956,1,0,0,0,286,1960,1,0,0,0,288,1965,1,0,0,0,290,1975,1,0,0,0,292, + 1979,1,0,0,0,294,1982,1,0,0,0,296,1989,1,0,0,0,298,1995,1,0,0,0,300,2005, + 1,0,0,0,302,2007,1,0,0,0,304,2011,1,0,0,0,306,2022,1,0,0,0,308,2024,1,0, + 0,0,310,2026,1,0,0,0,312,2028,1,0,0,0,314,2033,1,0,0,0,316,2041,1,0,0,0, + 318,2044,1,0,0,0,320,2048,1,0,0,0,322,2051,1,0,0,0,324,2062,1,0,0,0,326, + 2072,1,0,0,0,328,2078,1,0,0,0,330,2086,1,0,0,0,332,2102,1,0,0,0,334,2111, + 1,0,0,0,336,2113,1,0,0,0,338,2115,1,0,0,0,340,2129,1,0,0,0,342,2131,1,0, + 0,0,344,2133,1,0,0,0,346,2135,1,0,0,0,348,2137,1,0,0,0,350,2139,1,0,0,0, + 352,2141,1,0,0,0,354,355,3,2,1,0,355,356,5,0,0,1,356,1,1,0,0,0,357,358, + 3,4,2,0,358,359,5,0,0,1,359,3,1,0,0,0,360,362,3,6,3,0,361,363,5,381,0,0, + 362,361,1,0,0,0,362,363,1,0,0,0,363,366,1,0,0,0,364,366,3,8,4,0,365,360, + 1,0,0,0,365,364,1,0,0,0,366,369,1,0,0,0,367,365,1,0,0,0,367,368,1,0,0,0, + 368,5,1,0,0,0,369,367,1,0,0,0,370,383,3,10,5,0,371,383,3,12,6,0,372,383, + 3,14,7,0,373,383,3,16,8,0,374,383,3,22,11,0,375,383,3,26,13,0,376,383,3, + 28,14,0,377,383,3,30,15,0,378,383,3,32,16,0,379,383,3,34,17,0,380,383,3, + 36,18,0,381,383,3,38,19,0,382,370,1,0,0,0,382,371,1,0,0,0,382,372,1,0,0, + 0,382,373,1,0,0,0,382,374,1,0,0,0,382,375,1,0,0,0,382,376,1,0,0,0,382,377, + 1,0,0,0,382,378,1,0,0,0,382,379,1,0,0,0,382,380,1,0,0,0,382,381,1,0,0,0, + 383,7,1,0,0,0,384,385,5,381,0,0,385,9,1,0,0,0,386,401,3,40,20,0,387,401, + 3,104,52,0,388,401,3,106,53,0,389,401,3,108,54,0,390,401,3,102,51,0,391, + 401,3,114,57,0,392,401,3,128,64,0,393,401,3,130,65,0,394,401,3,132,66,0, + 395,401,3,134,67,0,396,401,3,136,68,0,397,401,3,138,69,0,398,401,3,140, + 70,0,399,401,3,142,71,0,400,386,1,0,0,0,400,387,1,0,0,0,400,388,1,0,0,0, + 400,389,1,0,0,0,400,390,1,0,0,0,400,391,1,0,0,0,400,392,1,0,0,0,400,393, + 1,0,0,0,400,394,1,0,0,0,400,395,1,0,0,0,400,396,1,0,0,0,400,397,1,0,0,0, + 400,398,1,0,0,0,400,399,1,0,0,0,401,11,1,0,0,0,402,405,3,158,79,0,403,405, + 3,144,72,0,404,402,1,0,0,0,404,403,1,0,0,0,405,13,1,0,0,0,406,407,7,0,0, + 0,407,408,3,314,157,0,408,15,1,0,0,0,409,413,5,242,0,0,410,414,3,18,9,0, + 411,412,5,100,0,0,412,414,5,247,0,0,413,410,1,0,0,0,413,411,1,0,0,0,413, + 414,1,0,0,0,414,418,1,0,0,0,415,419,3,12,6,0,416,419,3,146,73,0,417,419, + 3,156,78,0,418,415,1,0,0,0,418,416,1,0,0,0,418,417,1,0,0,0,419,17,1,0,0, + 0,420,425,3,20,10,0,421,422,5,380,0,0,422,424,3,20,10,0,423,421,1,0,0,0, + 424,427,1,0,0,0,425,423,1,0,0,0,425,426,1,0,0,0,426,19,1,0,0,0,427,425, + 1,0,0,0,428,429,7,1,0,0,429,21,1,0,0,0,430,432,5,160,0,0,431,433,5,12,0, + 0,432,431,1,0,0,0,432,433,1,0,0,0,433,434,1,0,0,0,434,437,3,314,157,0,435, + 437,3,24,12,0,436,430,1,0,0,0,436,435,1,0,0,0,437,23,1,0,0,0,438,439,5, + 160,0,0,439,440,5,83,0,0,440,445,3,314,157,0,441,442,5,380,0,0,442,444, + 3,314,157,0,443,441,1,0,0,0,444,447,1,0,0,0,445,443,1,0,0,0,445,446,1,0, + 0,0,446,25,1,0,0,0,447,445,1,0,0,0,448,449,5,327,0,0,449,484,7,2,0,0,450, + 451,5,327,0,0,451,452,5,219,0,0,452,484,7,3,0,0,453,454,5,327,0,0,454,457, + 5,148,0,0,455,456,7,4,0,0,456,458,3,314,157,0,457,455,1,0,0,0,457,458,1, + 0,0,0,458,460,1,0,0,0,459,461,3,266,133,0,460,459,1,0,0,0,460,461,1,0,0, + 0,461,484,1,0,0,0,462,463,5,327,0,0,463,464,5,20,0,0,464,465,7,4,0,0,465, + 467,3,314,157,0,466,468,3,266,133,0,467,466,1,0,0,0,467,468,1,0,0,0,468, + 484,1,0,0,0,469,470,5,327,0,0,470,471,5,216,0,0,471,472,7,5,0,0,472,484, + 3,314,157,0,473,475,5,327,0,0,474,476,5,352,0,0,475,474,1,0,0,0,475,476, + 1,0,0,0,476,477,1,0,0,0,477,484,5,50,0,0,478,480,5,327,0,0,479,481,5,249, + 0,0,480,479,1,0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482,484,5,83,0,0,483, + 448,1,0,0,0,483,450,1,0,0,0,483,453,1,0,0,0,483,462,1,0,0,0,483,469,1,0, + 0,0,483,473,1,0,0,0,483,478,1,0,0,0,484,27,1,0,0,0,485,486,5,75,0,0,486, + 487,5,287,0,0,487,490,3,314,157,0,488,489,5,361,0,0,489,491,3,322,161,0, + 490,488,1,0,0,0,490,491,1,0,0,0,491,29,1,0,0,0,492,493,5,158,0,0,493,494, + 5,287,0,0,494,495,3,314,157,0,495,31,1,0,0,0,496,498,5,326,0,0,497,499, + 3,324,162,0,498,497,1,0,0,0,498,499,1,0,0,0,499,33,1,0,0,0,500,502,5,316, + 0,0,501,503,3,326,163,0,502,501,1,0,0,0,502,503,1,0,0,0,503,35,1,0,0,0, + 504,505,7,6,0,0,505,506,5,63,0,0,506,507,3,112,56,0,507,37,1,0,0,0,508, + 509,5,4,0,0,509,510,5,63,0,0,510,511,5,361,0,0,511,514,5,402,0,0,512,513, + 5,183,0,0,513,515,3,314,157,0,514,512,1,0,0,0,514,515,1,0,0,0,515,548,1, + 0,0,0,516,517,5,4,0,0,517,518,5,42,0,0,518,519,5,361,0,0,519,522,5,402, + 0,0,520,521,5,183,0,0,521,523,3,314,157,0,522,520,1,0,0,0,522,523,1,0,0, + 0,523,526,1,0,0,0,524,525,5,118,0,0,525,527,3,314,157,0,526,524,1,0,0,0, + 526,527,1,0,0,0,527,548,1,0,0,0,528,529,5,4,0,0,529,530,7,7,0,0,530,531, + 5,361,0,0,531,532,5,402,0,0,532,533,5,118,0,0,533,548,3,314,157,0,534,535, + 5,4,0,0,535,536,5,112,0,0,536,548,5,402,0,0,537,538,5,4,0,0,538,539,5,35, + 0,0,539,540,5,42,0,0,540,541,5,361,0,0,541,542,5,402,0,0,542,543,5,118, + 0,0,543,544,3,314,157,0,544,545,5,68,0,0,545,546,3,314,157,0,546,548,1, + 0,0,0,547,508,1,0,0,0,547,516,1,0,0,0,547,528,1,0,0,0,547,534,1,0,0,0,547, + 537,1,0,0,0,548,39,1,0,0,0,549,552,3,42,21,0,550,552,3,44,22,0,551,549, + 1,0,0,0,551,550,1,0,0,0,552,41,1,0,0,0,553,555,5,216,0,0,554,556,5,149, + 0,0,555,554,1,0,0,0,555,556,1,0,0,0,556,557,1,0,0,0,557,559,5,337,0,0,558, + 560,3,318,159,0,559,558,1,0,0,0,559,560,1,0,0,0,560,561,1,0,0,0,561,562, + 3,98,49,0,562,563,5,376,0,0,563,568,3,46,23,0,564,565,5,380,0,0,565,567, + 3,46,23,0,566,564,1,0,0,0,567,570,1,0,0,0,568,566,1,0,0,0,568,569,1,0,0, + 0,569,573,1,0,0,0,570,568,1,0,0,0,571,572,5,380,0,0,572,574,3,80,40,0,573, + 571,1,0,0,0,573,574,1,0,0,0,574,577,1,0,0,0,575,576,5,380,0,0,576,578,3, + 82,41,0,577,575,1,0,0,0,577,578,1,0,0,0,578,581,1,0,0,0,579,580,5,380,0, + 0,580,582,3,86,43,0,581,579,1,0,0,0,581,582,1,0,0,0,582,583,1,0,0,0,583, + 585,5,377,0,0,584,586,3,70,35,0,585,584,1,0,0,0,585,586,1,0,0,0,586,588, + 1,0,0,0,587,589,3,88,44,0,588,587,1,0,0,0,588,589,1,0,0,0,589,590,1,0,0, + 0,590,592,3,316,158,0,591,593,3,96,48,0,592,591,1,0,0,0,592,593,1,0,0,0, + 593,43,1,0,0,0,594,595,5,216,0,0,595,597,5,337,0,0,596,598,3,318,159,0, + 597,596,1,0,0,0,597,598,1,0,0,0,598,599,1,0,0,0,599,600,3,98,49,0,600,603, + 3,316,158,0,601,602,5,183,0,0,602,604,3,158,79,0,603,601,1,0,0,0,603,604, + 1,0,0,0,604,45,1,0,0,0,605,609,3,48,24,0,606,609,3,72,36,0,607,609,3,76, + 38,0,608,605,1,0,0,0,608,606,1,0,0,0,608,607,1,0,0,0,609,47,1,0,0,0,610, + 611,3,50,25,0,611,613,3,54,27,0,612,614,3,68,34,0,613,612,1,0,0,0,613,614, + 1,0,0,0,614,616,1,0,0,0,615,617,3,70,35,0,616,615,1,0,0,0,616,617,1,0,0, + 0,617,49,1,0,0,0,618,621,3,314,157,0,619,621,3,260,130,0,620,618,1,0,0, + 0,620,619,1,0,0,0,621,51,1,0,0,0,622,623,5,376,0,0,623,628,3,50,25,0,624, + 625,5,380,0,0,625,627,3,50,25,0,626,624,1,0,0,0,627,630,1,0,0,0,628,626, + 1,0,0,0,628,629,1,0,0,0,629,631,1,0,0,0,630,628,1,0,0,0,631,632,5,377,0, + 0,632,53,1,0,0,0,633,671,7,8,0,0,634,636,7,9,0,0,635,637,3,56,28,0,636, + 635,1,0,0,0,636,637,1,0,0,0,637,671,1,0,0,0,638,640,5,341,0,0,639,641,3, + 56,28,0,640,639,1,0,0,0,640,641,1,0,0,0,641,648,1,0,0,0,642,644,7,10,0, + 0,643,645,5,278,0,0,644,643,1,0,0,0,644,645,1,0,0,0,645,646,1,0,0,0,646, + 647,5,340,0,0,647,649,5,174,0,0,648,642,1,0,0,0,648,649,1,0,0,0,649,671, + 1,0,0,0,650,652,7,11,0,0,651,653,3,58,29,0,652,651,1,0,0,0,652,653,1,0, + 0,0,653,671,1,0,0,0,654,656,7,12,0,0,655,657,3,62,31,0,656,655,1,0,0,0, + 656,657,1,0,0,0,657,671,1,0,0,0,658,660,5,76,0,0,659,661,3,64,32,0,660, + 659,1,0,0,0,660,661,1,0,0,0,661,671,1,0,0,0,662,664,5,322,0,0,663,665,3, + 66,33,0,664,663,1,0,0,0,664,665,1,0,0,0,665,671,1,0,0,0,666,668,5,114,0, + 0,667,669,3,60,30,0,668,667,1,0,0,0,668,669,1,0,0,0,669,671,1,0,0,0,670, + 633,1,0,0,0,670,634,1,0,0,0,670,638,1,0,0,0,670,650,1,0,0,0,670,654,1,0, + 0,0,670,658,1,0,0,0,670,662,1,0,0,0,670,666,1,0,0,0,671,55,1,0,0,0,672, + 673,5,376,0,0,673,674,3,344,172,0,674,675,5,377,0,0,675,57,1,0,0,0,676, + 677,5,376,0,0,677,680,3,344,172,0,678,679,5,380,0,0,679,681,3,344,172,0, + 680,678,1,0,0,0,680,681,1,0,0,0,681,682,1,0,0,0,682,683,5,377,0,0,683,59, + 1,0,0,0,684,685,5,376,0,0,685,688,3,342,171,0,686,687,5,380,0,0,687,689, + 3,342,171,0,688,686,1,0,0,0,688,689,1,0,0,0,689,690,1,0,0,0,690,691,5,377, + 0,0,691,61,1,0,0,0,692,693,5,367,0,0,693,694,3,54,27,0,694,695,5,366,0, + 0,695,63,1,0,0,0,696,697,5,367,0,0,697,698,3,54,27,0,698,699,5,380,0,0, + 699,700,3,54,27,0,700,701,1,0,0,0,701,702,5,366,0,0,702,65,1,0,0,0,703, + 704,5,367,0,0,704,705,3,50,25,0,705,712,3,54,27,0,706,707,5,380,0,0,707, + 708,3,50,25,0,708,709,3,54,27,0,709,711,1,0,0,0,710,706,1,0,0,0,711,714, + 1,0,0,0,712,710,1,0,0,0,712,713,1,0,0,0,713,715,1,0,0,0,714,712,1,0,0,0, + 715,716,5,366,0,0,716,67,1,0,0,0,717,718,5,212,0,0,718,720,3,84,42,0,719, + 717,1,0,0,0,719,720,1,0,0,0,720,721,1,0,0,0,721,722,5,313,0,0,722,725,5, + 68,0,0,723,724,5,294,0,0,724,726,5,34,0,0,725,723,1,0,0,0,725,726,1,0,0, + 0,726,732,1,0,0,0,727,729,5,294,0,0,728,727,1,0,0,0,728,729,1,0,0,0,729, + 730,1,0,0,0,730,732,5,295,0,0,731,719,1,0,0,0,731,728,1,0,0,0,732,69,1, + 0,0,0,733,734,5,18,0,0,734,735,5,397,0,0,735,71,1,0,0,0,736,737,3,50,25, + 0,737,738,3,54,27,0,738,741,5,283,0,0,739,740,5,248,0,0,740,742,3,74,37, + 0,741,739,1,0,0,0,741,742,1,0,0,0,742,744,1,0,0,0,743,745,5,167,0,0,744, + 743,1,0,0,0,744,745,1,0,0,0,745,73,1,0,0,0,746,747,5,397,0,0,747,75,1,0, + 0,0,748,749,3,50,25,0,749,750,5,183,0,0,750,752,3,78,39,0,751,753,3,70, + 35,0,752,751,1,0,0,0,752,753,1,0,0,0,753,77,1,0,0,0,754,755,3,260,130,0, + 755,79,1,0,0,0,756,757,5,168,0,0,757,758,5,247,0,0,758,759,3,260,130,0, + 759,760,5,183,0,0,760,761,3,260,130,0,761,81,1,0,0,0,762,763,5,212,0,0, + 763,765,3,84,42,0,764,762,1,0,0,0,764,765,1,0,0,0,765,766,1,0,0,0,766,767, + 5,313,0,0,767,768,5,68,0,0,768,769,3,52,26,0,769,770,5,294,0,0,770,771, + 5,34,0,0,771,83,1,0,0,0,772,773,3,306,153,0,773,85,1,0,0,0,774,775,5,311, + 0,0,775,776,5,247,0,0,776,777,5,335,0,0,777,87,1,0,0,0,778,779,5,94,0,0, + 779,780,5,194,0,0,780,781,3,90,45,0,781,89,1,0,0,0,782,783,5,376,0,0,783, + 788,3,92,46,0,784,785,5,380,0,0,785,787,3,92,46,0,786,784,1,0,0,0,787,790, + 1,0,0,0,788,786,1,0,0,0,788,789,1,0,0,0,789,791,1,0,0,0,790,788,1,0,0,0, + 791,792,5,377,0,0,792,91,1,0,0,0,793,807,3,278,139,0,794,795,3,306,153, + 0,795,796,5,376,0,0,796,801,3,94,47,0,797,798,5,380,0,0,798,800,3,94,47, + 0,799,797,1,0,0,0,800,803,1,0,0,0,801,799,1,0,0,0,801,802,1,0,0,0,802,804, + 1,0,0,0,803,801,1,0,0,0,804,805,5,377,0,0,805,807,1,0,0,0,806,793,1,0,0, + 0,806,794,1,0,0,0,807,93,1,0,0,0,808,811,3,278,139,0,809,811,3,340,170, + 0,810,808,1,0,0,0,810,809,1,0,0,0,811,95,1,0,0,0,812,813,5,276,0,0,813, + 822,3,98,49,0,814,818,5,376,0,0,815,817,3,100,50,0,816,815,1,0,0,0,817, + 820,1,0,0,0,818,816,1,0,0,0,818,819,1,0,0,0,819,821,1,0,0,0,820,818,1,0, + 0,0,821,823,5,377,0,0,822,814,1,0,0,0,822,823,1,0,0,0,823,97,1,0,0,0,824, + 825,3,314,157,0,825,99,1,0,0,0,826,827,7,13,0,0,827,831,7,14,0,0,828,829, + 7,15,0,0,829,831,7,16,0,0,830,826,1,0,0,0,830,828,1,0,0,0,831,101,1,0,0, + 0,832,833,5,216,0,0,833,834,5,12,0,0,834,835,3,314,157,0,835,836,3,316, + 158,0,836,103,1,0,0,0,837,838,5,216,0,0,838,840,5,25,0,0,839,841,3,318, + 159,0,840,839,1,0,0,0,840,841,1,0,0,0,841,842,1,0,0,0,842,844,3,314,157, + 0,843,845,3,70,35,0,844,843,1,0,0,0,844,845,1,0,0,0,845,846,1,0,0,0,846, + 847,3,316,158,0,847,105,1,0,0,0,848,850,5,216,0,0,849,851,5,149,0,0,850, + 849,1,0,0,0,850,851,1,0,0,0,851,852,1,0,0,0,852,854,5,165,0,0,853,855,3, + 318,159,0,854,853,1,0,0,0,854,855,1,0,0,0,855,856,1,0,0,0,856,858,3,314, + 157,0,857,859,3,52,26,0,858,857,1,0,0,0,858,859,1,0,0,0,859,861,1,0,0,0, + 860,862,3,70,35,0,861,860,1,0,0,0,861,862,1,0,0,0,862,863,1,0,0,0,863,864, + 5,183,0,0,864,865,3,158,79,0,865,107,1,0,0,0,866,870,5,216,0,0,867,871, + 5,149,0,0,868,869,5,149,0,0,869,871,5,334,0,0,870,867,1,0,0,0,870,868,1, + 0,0,0,870,871,1,0,0,0,871,872,1,0,0,0,872,874,5,250,0,0,873,875,3,318,159, + 0,874,873,1,0,0,0,874,875,1,0,0,0,875,876,1,0,0,0,876,877,3,314,157,0,877, + 878,5,183,0,0,878,881,3,306,153,0,879,880,5,272,0,0,880,882,7,17,0,0,881, + 879,1,0,0,0,881,882,1,0,0,0,882,884,1,0,0,0,883,885,3,110,55,0,884,883, + 1,0,0,0,884,885,1,0,0,0,885,109,1,0,0,0,886,887,5,353,0,0,887,888,5,63, + 0,0,888,894,3,112,56,0,889,890,5,380,0,0,890,891,5,63,0,0,891,893,3,112, + 56,0,892,889,1,0,0,0,893,896,1,0,0,0,894,892,1,0,0,0,894,895,1,0,0,0,895, + 111,1,0,0,0,896,894,1,0,0,0,897,898,5,397,0,0,898,113,1,0,0,0,899,900,5, + 178,0,0,900,902,5,337,0,0,901,903,3,320,160,0,902,901,1,0,0,0,902,903,1, + 0,0,0,903,904,1,0,0,0,904,910,3,314,157,0,905,911,3,116,58,0,906,911,3, + 118,59,0,907,911,3,120,60,0,908,911,3,122,61,0,909,911,3,124,62,0,910,905, + 1,0,0,0,910,906,1,0,0,0,910,907,1,0,0,0,910,908,1,0,0,0,910,909,1,0,0,0, + 911,115,1,0,0,0,912,914,5,118,0,0,913,915,3,314,157,0,914,913,1,0,0,0,914, + 915,1,0,0,0,915,916,1,0,0,0,916,917,5,343,0,0,917,918,3,314,157,0,918,117, + 1,0,0,0,919,920,5,326,0,0,920,921,3,322,161,0,921,119,1,0,0,0,922,923,5, + 4,0,0,923,924,5,212,0,0,924,925,3,84,42,0,925,926,5,313,0,0,926,927,5,68, + 0,0,927,929,3,52,26,0,928,930,3,126,63,0,929,928,1,0,0,0,929,930,1,0,0, + 0,930,121,1,0,0,0,931,932,5,234,0,0,932,933,5,212,0,0,933,934,3,84,42,0, + 934,123,1,0,0,0,935,936,5,4,0,0,936,937,5,347,0,0,937,938,3,52,26,0,938, + 125,1,0,0,0,939,940,5,294,0,0,940,941,5,34,0,0,941,127,1,0,0,0,942,943, + 5,178,0,0,943,944,5,165,0,0,944,948,3,314,157,0,945,949,3,116,58,0,946, + 947,5,183,0,0,947,949,3,158,79,0,948,945,1,0,0,0,948,946,1,0,0,0,949,129, + 1,0,0,0,950,951,5,178,0,0,951,952,5,25,0,0,952,953,3,314,157,0,953,954, + 3,118,59,0,954,131,1,0,0,0,955,959,5,178,0,0,956,960,5,149,0,0,957,958, + 5,149,0,0,958,960,5,334,0,0,959,956,1,0,0,0,959,957,1,0,0,0,959,960,1,0, + 0,0,960,961,1,0,0,0,961,963,5,250,0,0,962,964,3,320,160,0,963,962,1,0,0, + 0,963,964,1,0,0,0,964,965,1,0,0,0,965,966,3,314,157,0,966,967,5,183,0,0, + 967,970,3,306,153,0,968,969,5,272,0,0,969,971,7,17,0,0,970,968,1,0,0,0, + 970,971,1,0,0,0,971,133,1,0,0,0,972,973,5,234,0,0,973,975,5,12,0,0,974, + 976,3,320,160,0,975,974,1,0,0,0,975,976,1,0,0,0,976,977,1,0,0,0,977,978, + 3,314,157,0,978,135,1,0,0,0,979,981,5,234,0,0,980,982,5,149,0,0,981,980, + 1,0,0,0,981,982,1,0,0,0,982,983,1,0,0,0,983,985,5,337,0,0,984,986,3,320, + 160,0,985,984,1,0,0,0,985,986,1,0,0,0,986,987,1,0,0,0,987,988,3,314,157, + 0,988,137,1,0,0,0,989,990,5,234,0,0,990,992,5,25,0,0,991,993,3,320,160, + 0,992,991,1,0,0,0,992,993,1,0,0,0,993,994,1,0,0,0,994,996,3,314,157,0,995, + 997,7,18,0,0,996,995,1,0,0,0,996,997,1,0,0,0,997,139,1,0,0,0,998,1000,5, + 234,0,0,999,1001,5,149,0,0,1000,999,1,0,0,0,1000,1001,1,0,0,0,1001,1002, + 1,0,0,0,1002,1004,5,165,0,0,1003,1005,3,320,160,0,1004,1003,1,0,0,0,1004, + 1005,1,0,0,0,1005,1006,1,0,0,0,1006,1007,3,314,157,0,1007,141,1,0,0,0,1008, + 1012,5,234,0,0,1009,1013,5,149,0,0,1010,1011,5,149,0,0,1011,1013,5,334, + 0,0,1012,1009,1,0,0,0,1012,1010,1,0,0,0,1012,1013,1,0,0,0,1013,1014,1,0, + 0,0,1014,1016,5,250,0,0,1015,1017,3,320,160,0,1016,1015,1,0,0,0,1016,1017, + 1,0,0,0,1017,1018,1,0,0,0,1018,1019,3,314,157,0,1019,143,1,0,0,0,1020,1022, + 5,240,0,0,1021,1020,1,0,0,0,1021,1022,1,0,0,0,1022,1023,1,0,0,0,1023,1028, + 3,146,73,0,1024,1028,3,154,77,0,1025,1026,5,240,0,0,1026,1028,3,156,78, + 0,1027,1021,1,0,0,0,1027,1024,1,0,0,0,1027,1025,1,0,0,0,1028,145,1,0,0, + 0,1029,1030,5,263,0,0,1030,1031,7,19,0,0,1031,1040,3,314,157,0,1032,1034, + 3,148,74,0,1033,1032,1,0,0,0,1033,1034,1,0,0,0,1034,1036,1,0,0,0,1035,1037, + 3,52,26,0,1036,1035,1,0,0,0,1036,1037,1,0,0,0,1037,1038,1,0,0,0,1038,1041, + 3,158,79,0,1039,1041,3,150,75,0,1040,1033,1,0,0,0,1040,1039,1,0,0,0,1041, + 147,1,0,0,0,1042,1043,5,307,0,0,1043,1044,3,322,161,0,1044,149,1,0,0,0, + 1045,1046,5,355,0,0,1046,1051,3,152,76,0,1047,1048,5,380,0,0,1048,1050, + 3,152,76,0,1049,1047,1,0,0,0,1050,1053,1,0,0,0,1051,1049,1,0,0,0,1051,1052, + 1,0,0,0,1052,151,1,0,0,0,1053,1051,1,0,0,0,1054,1055,5,376,0,0,1055,1060, + 3,340,170,0,1056,1057,5,380,0,0,1057,1059,3,340,170,0,1058,1056,1,0,0,0, + 1059,1062,1,0,0,0,1060,1058,1,0,0,0,1060,1061,1,0,0,0,1061,1063,1,0,0,0, + 1062,1060,1,0,0,0,1063,1064,5,377,0,0,1064,153,1,0,0,0,1065,1066,5,186, + 0,0,1066,1067,5,143,0,0,1067,1068,5,326,0,0,1068,1072,5,381,0,0,1069,1070, + 3,146,73,0,1070,1071,5,381,0,0,1071,1073,1,0,0,0,1072,1069,1,0,0,0,1073, + 1074,1,0,0,0,1074,1072,1,0,0,0,1074,1075,1,0,0,0,1075,1076,1,0,0,0,1076, + 1077,5,237,0,0,1077,155,1,0,0,0,1078,1079,5,143,0,0,1079,1080,5,326,0,0, + 1080,1084,5,186,0,0,1081,1082,3,146,73,0,1082,1083,5,381,0,0,1083,1085, + 1,0,0,0,1084,1081,1,0,0,0,1085,1086,1,0,0,0,1086,1084,1,0,0,0,1086,1087, + 1,0,0,0,1087,1088,1,0,0,0,1088,1089,5,237,0,0,1089,157,1,0,0,0,1090,1091, + 6,79,-1,0,1091,1114,3,160,80,0,1092,1093,3,162,81,0,1093,1094,3,158,79, + 5,1094,1114,1,0,0,0,1095,1096,5,376,0,0,1096,1097,3,158,79,0,1097,1098, + 5,377,0,0,1098,1114,1,0,0,0,1099,1101,3,170,85,0,1100,1102,3,232,116,0, + 1101,1100,1,0,0,0,1101,1102,1,0,0,0,1102,1104,1,0,0,0,1103,1105,3,236,118, + 0,1104,1103,1,0,0,0,1104,1105,1,0,0,0,1105,1114,1,0,0,0,1106,1108,3,168, + 84,0,1107,1109,3,232,116,0,1108,1107,1,0,0,0,1108,1109,1,0,0,0,1109,1111, + 1,0,0,0,1110,1112,3,236,118,0,1111,1110,1,0,0,0,1111,1112,1,0,0,0,1112, + 1114,1,0,0,0,1113,1090,1,0,0,0,1113,1092,1,0,0,0,1113,1095,1,0,0,0,1113, + 1099,1,0,0,0,1113,1106,1,0,0,0,1114,1129,1,0,0,0,1115,1116,10,3,0,0,1116, + 1118,7,20,0,0,1117,1119,5,176,0,0,1118,1117,1,0,0,0,1118,1119,1,0,0,0,1119, + 1120,1,0,0,0,1120,1122,3,158,79,0,1121,1123,3,232,116,0,1122,1121,1,0,0, + 0,1122,1123,1,0,0,0,1123,1125,1,0,0,0,1124,1126,3,236,118,0,1125,1124,1, + 0,0,0,1125,1126,1,0,0,0,1126,1128,1,0,0,0,1127,1115,1,0,0,0,1128,1131,1, + 0,0,0,1129,1127,1,0,0,0,1129,1130,1,0,0,0,1130,159,1,0,0,0,1131,1129,1, + 0,0,0,1132,1133,5,355,0,0,1133,1138,3,260,130,0,1134,1135,5,380,0,0,1135, + 1137,3,260,130,0,1136,1134,1,0,0,0,1137,1140,1,0,0,0,1138,1136,1,0,0,0, + 1138,1139,1,0,0,0,1139,161,1,0,0,0,1140,1138,1,0,0,0,1141,1142,5,361,0, + 0,1142,1147,3,164,82,0,1143,1144,5,380,0,0,1144,1146,3,164,82,0,1145,1143, + 1,0,0,0,1146,1149,1,0,0,0,1147,1145,1,0,0,0,1147,1148,1,0,0,0,1148,163, + 1,0,0,0,1149,1147,1,0,0,0,1150,1162,3,166,83,0,1151,1152,5,376,0,0,1152, + 1157,3,50,25,0,1153,1154,5,380,0,0,1154,1156,3,50,25,0,1155,1153,1,0,0, + 0,1156,1159,1,0,0,0,1157,1155,1,0,0,0,1157,1158,1,0,0,0,1158,1160,1,0,0, + 0,1159,1157,1,0,0,0,1160,1161,5,377,0,0,1161,1163,1,0,0,0,1162,1151,1,0, + 0,0,1162,1163,1,0,0,0,1163,1164,1,0,0,0,1164,1165,5,183,0,0,1165,1166,5, + 376,0,0,1166,1167,3,158,79,0,1167,1168,5,377,0,0,1168,165,1,0,0,0,1169, + 1170,3,306,153,0,1170,167,1,0,0,0,1171,1172,3,170,85,0,1172,1174,3,176, + 88,0,1173,1175,3,206,103,0,1174,1173,1,0,0,0,1174,1175,1,0,0,0,1175,1177, + 1,0,0,0,1176,1178,3,208,104,0,1177,1176,1,0,0,0,1177,1178,1,0,0,0,1178, + 1180,1,0,0,0,1179,1181,3,222,111,0,1180,1179,1,0,0,0,1180,1181,1,0,0,0, + 1181,1183,1,0,0,0,1182,1184,3,224,112,0,1183,1182,1,0,0,0,1183,1184,1,0, + 0,0,1184,1190,1,0,0,0,1185,1186,3,170,85,0,1186,1187,3,176,88,0,1187,1188, + 3,230,115,0,1188,1190,1,0,0,0,1189,1171,1,0,0,0,1189,1185,1,0,0,0,1190, + 169,1,0,0,0,1191,1193,5,325,0,0,1192,1194,3,348,174,0,1193,1192,1,0,0,0, + 1193,1194,1,0,0,0,1194,1204,1,0,0,0,1195,1205,5,387,0,0,1196,1201,3,172, + 86,0,1197,1198,5,380,0,0,1198,1200,3,172,86,0,1199,1197,1,0,0,0,1200,1203, + 1,0,0,0,1201,1199,1,0,0,0,1201,1202,1,0,0,0,1202,1205,1,0,0,0,1203,1201, + 1,0,0,0,1204,1195,1,0,0,0,1204,1196,1,0,0,0,1205,171,1,0,0,0,1206,1215, + 3,174,87,0,1207,1212,3,260,130,0,1208,1210,5,183,0,0,1209,1208,1,0,0,0, + 1209,1210,1,0,0,0,1210,1211,1,0,0,0,1211,1213,3,260,130,0,1212,1209,1,0, + 0,0,1212,1213,1,0,0,0,1213,1215,1,0,0,0,1214,1206,1,0,0,0,1214,1207,1,0, + 0,0,1215,173,1,0,0,0,1216,1217,3,270,135,0,1217,1218,5,305,0,0,1218,1219, + 3,228,114,0,1219,1220,5,183,0,0,1220,1221,3,306,153,0,1221,1229,1,0,0,0, + 1222,1223,3,270,135,0,1223,1224,5,305,0,0,1224,1225,3,298,149,0,1225,1226, + 5,183,0,0,1226,1227,3,306,153,0,1227,1229,1,0,0,0,1228,1216,1,0,0,0,1228, + 1222,1,0,0,0,1229,175,1,0,0,0,1230,1231,5,248,0,0,1231,1232,3,178,89,0, + 1232,177,1,0,0,0,1233,1234,6,89,-1,0,1234,1239,3,180,90,0,1235,1236,5,380, + 0,0,1236,1238,3,180,90,0,1237,1235,1,0,0,0,1238,1241,1,0,0,0,1239,1237, + 1,0,0,0,1239,1240,1,0,0,0,1240,1245,1,0,0,0,1241,1239,1,0,0,0,1242,1245, + 3,190,95,0,1243,1245,3,192,96,0,1244,1233,1,0,0,0,1244,1242,1,0,0,0,1244, + 1243,1,0,0,0,1245,1267,1,0,0,0,1246,1247,10,3,0,0,1247,1248,5,217,0,0,1248, + 1249,5,270,0,0,1249,1266,3,178,89,4,1250,1252,10,4,0,0,1251,1253,5,290, + 0,0,1252,1251,1,0,0,0,1252,1253,1,0,0,0,1253,1255,1,0,0,0,1254,1256,7,21, + 0,0,1255,1254,1,0,0,0,1255,1256,1,0,0,0,1256,1258,1,0,0,0,1257,1259,5,304, + 0,0,1258,1257,1,0,0,0,1258,1259,1,0,0,0,1259,1260,1,0,0,0,1260,1261,5,270, + 0,0,1261,1263,3,178,89,0,1262,1264,3,204,102,0,1263,1262,1,0,0,0,1263,1264, + 1,0,0,0,1264,1266,1,0,0,0,1265,1246,1,0,0,0,1265,1250,1,0,0,0,1266,1269, + 1,0,0,0,1267,1265,1,0,0,0,1267,1268,1,0,0,0,1268,179,1,0,0,0,1269,1267, + 1,0,0,0,1270,1272,3,182,91,0,1271,1273,3,296,148,0,1272,1271,1,0,0,0,1272, + 1273,1,0,0,0,1273,181,1,0,0,0,1274,1276,5,337,0,0,1275,1274,1,0,0,0,1275, + 1276,1,0,0,0,1276,1277,1,0,0,0,1277,1279,3,184,92,0,1278,1280,3,186,93, + 0,1279,1278,1,0,0,0,1279,1280,1,0,0,0,1280,1285,1,0,0,0,1281,1283,5,183, + 0,0,1282,1281,1,0,0,0,1282,1283,1,0,0,0,1283,1284,1,0,0,0,1284,1286,3,276, + 138,0,1285,1282,1,0,0,0,1285,1286,1,0,0,0,1286,1316,1,0,0,0,1287,1288,5, + 273,0,0,1288,1289,5,337,0,0,1289,1290,5,376,0,0,1290,1291,3,272,136,0,1291, + 1292,5,376,0,0,1292,1297,3,260,130,0,1293,1294,5,380,0,0,1294,1296,3,260, + 130,0,1295,1293,1,0,0,0,1296,1299,1,0,0,0,1297,1295,1,0,0,0,1297,1298,1, + 0,0,0,1298,1300,1,0,0,0,1299,1297,1,0,0,0,1300,1301,5,377,0,0,1301,1302, + 5,377,0,0,1302,1316,1,0,0,0,1303,1305,5,273,0,0,1304,1303,1,0,0,0,1304, + 1305,1,0,0,0,1305,1306,1,0,0,0,1306,1307,5,376,0,0,1307,1308,3,158,79,0, + 1308,1309,5,377,0,0,1309,1316,1,0,0,0,1310,1311,5,349,0,0,1311,1312,5,376, + 0,0,1312,1313,3,260,130,0,1313,1314,5,377,0,0,1314,1316,1,0,0,0,1315,1275, + 1,0,0,0,1315,1287,1,0,0,0,1315,1304,1,0,0,0,1315,1310,1,0,0,0,1316,183, + 1,0,0,0,1317,1318,3,314,157,0,1318,185,1,0,0,0,1319,1320,5,247,0,0,1320, + 1321,5,335,0,0,1321,1322,5,183,0,0,1322,1323,5,297,0,0,1323,1324,3,188, + 94,0,1324,187,1,0,0,0,1325,1326,3,260,130,0,1326,189,1,0,0,0,1327,1328, + 5,376,0,0,1328,1329,3,150,75,0,1329,1330,5,377,0,0,1330,1331,3,296,148, + 0,1331,191,1,0,0,0,1332,1333,5,337,0,0,1333,1334,5,376,0,0,1334,1335,3, + 194,97,0,1335,1336,5,377,0,0,1336,193,1,0,0,0,1337,1338,3,196,98,0,1338, + 1339,5,376,0,0,1339,1344,3,198,99,0,1340,1341,5,380,0,0,1341,1343,3,198, + 99,0,1342,1340,1,0,0,0,1343,1346,1,0,0,0,1344,1342,1,0,0,0,1344,1345,1, + 0,0,0,1345,1347,1,0,0,0,1346,1344,1,0,0,0,1347,1348,5,377,0,0,1348,195, + 1,0,0,0,1349,1350,7,22,0,0,1350,197,1,0,0,0,1351,1352,5,337,0,0,1352,1367, + 3,220,110,0,1353,1367,3,202,101,0,1354,1367,3,280,140,0,1355,1356,5,24, + 0,0,1356,1357,5,396,0,0,1357,1358,5,337,0,0,1358,1367,3,220,110,0,1359, + 1360,5,150,0,0,1360,1361,5,396,0,0,1361,1367,3,202,101,0,1362,1363,3,200, + 100,0,1363,1364,5,396,0,0,1364,1365,3,280,140,0,1365,1367,1,0,0,0,1366, + 1351,1,0,0,0,1366,1353,1,0,0,0,1366,1354,1,0,0,0,1366,1355,1,0,0,0,1366, + 1359,1,0,0,0,1366,1362,1,0,0,0,1367,199,1,0,0,0,1368,1369,7,23,0,0,1369, + 201,1,0,0,0,1370,1371,5,31,0,0,1371,1372,5,376,0,0,1372,1373,3,314,157, + 0,1373,1374,5,377,0,0,1374,203,1,0,0,0,1375,1376,5,299,0,0,1376,1390,3, + 262,131,0,1377,1378,5,353,0,0,1378,1379,5,376,0,0,1379,1384,3,314,157,0, + 1380,1381,5,380,0,0,1381,1383,3,314,157,0,1382,1380,1,0,0,0,1383,1386,1, + 0,0,0,1384,1382,1,0,0,0,1384,1385,1,0,0,0,1385,1387,1,0,0,0,1386,1384,1, + 0,0,0,1387,1388,5,377,0,0,1388,1390,1,0,0,0,1389,1375,1,0,0,0,1389,1377, + 1,0,0,0,1390,205,1,0,0,0,1391,1392,5,359,0,0,1392,1393,3,262,131,0,1393, + 207,1,0,0,0,1394,1395,5,253,0,0,1395,1396,5,194,0,0,1396,1401,3,210,105, + 0,1397,1398,5,380,0,0,1398,1400,3,210,105,0,1399,1397,1,0,0,0,1400,1403, + 1,0,0,0,1401,1399,1,0,0,0,1401,1402,1,0,0,0,1402,209,1,0,0,0,1403,1401, + 1,0,0,0,1404,1444,3,260,130,0,1405,1444,3,216,108,0,1406,1407,5,376,0,0, + 1407,1444,5,377,0,0,1408,1409,5,376,0,0,1409,1414,3,260,130,0,1410,1411, + 5,380,0,0,1411,1413,3,260,130,0,1412,1410,1,0,0,0,1413,1416,1,0,0,0,1414, + 1412,1,0,0,0,1414,1415,1,0,0,0,1415,1417,1,0,0,0,1416,1414,1,0,0,0,1417, + 1418,5,377,0,0,1418,1444,1,0,0,0,1419,1420,3,214,107,0,1420,1421,5,376, + 0,0,1421,1426,3,260,130,0,1422,1423,5,380,0,0,1423,1425,3,260,130,0,1424, + 1422,1,0,0,0,1425,1428,1,0,0,0,1426,1424,1,0,0,0,1426,1427,1,0,0,0,1427, + 1429,1,0,0,0,1428,1426,1,0,0,0,1429,1430,5,377,0,0,1430,1444,1,0,0,0,1431, + 1432,3,212,106,0,1432,1433,5,376,0,0,1433,1438,3,210,105,0,1434,1435,5, + 380,0,0,1435,1437,3,210,105,0,1436,1434,1,0,0,0,1437,1440,1,0,0,0,1438, + 1436,1,0,0,0,1438,1439,1,0,0,0,1439,1441,1,0,0,0,1440,1438,1,0,0,0,1441, + 1442,5,377,0,0,1442,1444,1,0,0,0,1443,1404,1,0,0,0,1443,1405,1,0,0,0,1443, + 1406,1,0,0,0,1443,1408,1,0,0,0,1443,1419,1,0,0,0,1443,1431,1,0,0,0,1444, + 211,1,0,0,0,1445,1446,5,254,0,0,1446,1447,5,136,0,0,1447,213,1,0,0,0,1448, + 1449,7,24,0,0,1449,215,1,0,0,0,1450,1451,3,218,109,0,1451,1452,5,376,0, + 0,1452,1453,3,220,110,0,1453,1454,5,380,0,0,1454,1455,3,280,140,0,1455, + 1456,5,377,0,0,1456,217,1,0,0,0,1457,1458,7,25,0,0,1458,219,1,0,0,0,1459, + 1460,3,314,157,0,1460,221,1,0,0,0,1461,1462,5,256,0,0,1462,1463,3,262,131, + 0,1463,223,1,0,0,0,1464,1465,5,360,0,0,1465,1470,3,226,113,0,1466,1467, + 5,380,0,0,1467,1469,3,226,113,0,1468,1466,1,0,0,0,1469,1472,1,0,0,0,1470, + 1468,1,0,0,0,1470,1471,1,0,0,0,1471,225,1,0,0,0,1472,1470,1,0,0,0,1473, + 1474,3,298,149,0,1474,1475,5,183,0,0,1475,1476,3,228,114,0,1476,227,1,0, + 0,0,1477,1479,3,298,149,0,1478,1477,1,0,0,0,1478,1479,1,0,0,0,1479,1480, + 1,0,0,0,1480,1482,5,376,0,0,1481,1483,3,238,119,0,1482,1481,1,0,0,0,1482, + 1483,1,0,0,0,1483,1485,1,0,0,0,1484,1486,3,232,116,0,1485,1484,1,0,0,0, + 1485,1486,1,0,0,0,1486,1488,1,0,0,0,1487,1489,3,254,127,0,1488,1487,1,0, + 0,0,1488,1489,1,0,0,0,1489,1490,1,0,0,0,1490,1491,5,377,0,0,1491,229,1, + 0,0,0,1492,1493,5,280,0,0,1493,1495,5,376,0,0,1494,1496,3,238,119,0,1495, + 1494,1,0,0,0,1495,1496,1,0,0,0,1496,1498,1,0,0,0,1497,1499,3,232,116,0, + 1498,1497,1,0,0,0,1498,1499,1,0,0,0,1499,1501,1,0,0,0,1500,1502,3,242,121, + 0,1501,1500,1,0,0,0,1501,1502,1,0,0,0,1502,1504,1,0,0,0,1503,1505,3,248, + 124,0,1504,1503,1,0,0,0,1504,1505,1,0,0,0,1505,1507,1,0,0,0,1506,1508,3, + 250,125,0,1507,1506,1,0,0,0,1507,1508,1,0,0,0,1508,1510,1,0,0,0,1509,1511, + 3,244,122,0,1510,1509,1,0,0,0,1510,1511,1,0,0,0,1511,1512,1,0,0,0,1512, + 1513,3,252,126,0,1513,1518,5,377,0,0,1514,1516,5,183,0,0,1515,1514,1,0, + 0,0,1515,1516,1,0,0,0,1516,1517,1,0,0,0,1517,1519,3,306,153,0,1518,1515, + 1,0,0,0,1518,1519,1,0,0,0,1519,231,1,0,0,0,1520,1521,5,302,0,0,1521,1522, + 5,194,0,0,1522,1527,3,234,117,0,1523,1524,5,380,0,0,1524,1526,3,234,117, + 0,1525,1523,1,0,0,0,1526,1529,1,0,0,0,1527,1525,1,0,0,0,1527,1528,1,0,0, + 0,1528,233,1,0,0,0,1529,1527,1,0,0,0,1530,1532,3,260,130,0,1531,1533,7, + 26,0,0,1532,1531,1,0,0,0,1532,1533,1,0,0,0,1533,1536,1,0,0,0,1534,1535, + 5,86,0,0,1535,1537,7,27,0,0,1536,1534,1,0,0,0,1536,1537,1,0,0,0,1537,235, + 1,0,0,0,1538,1541,5,277,0,0,1539,1542,5,176,0,0,1540,1542,3,260,130,0,1541, + 1539,1,0,0,0,1541,1540,1,0,0,0,1542,237,1,0,0,0,1543,1544,5,307,0,0,1544, + 1545,5,194,0,0,1545,1550,3,260,130,0,1546,1547,5,380,0,0,1547,1549,3,260, + 130,0,1548,1546,1,0,0,0,1549,1552,1,0,0,0,1550,1548,1,0,0,0,1550,1551,1, + 0,0,0,1551,239,1,0,0,0,1552,1550,1,0,0,0,1553,1570,5,387,0,0,1554,1570, + 5,390,0,0,1555,1570,5,395,0,0,1556,1557,5,378,0,0,1557,1558,5,398,0,0,1558, + 1559,5,380,0,0,1559,1560,5,398,0,0,1560,1570,5,379,0,0,1561,1562,5,378, + 0,0,1562,1563,5,398,0,0,1563,1564,5,380,0,0,1564,1570,5,379,0,0,1565,1566, + 5,378,0,0,1566,1567,5,380,0,0,1567,1568,5,398,0,0,1568,1570,5,379,0,0,1569, + 1553,1,0,0,0,1569,1554,1,0,0,0,1569,1555,1,0,0,0,1569,1556,1,0,0,0,1569, + 1561,1,0,0,0,1569,1565,1,0,0,0,1570,241,1,0,0,0,1571,1572,5,281,0,0,1572, + 1577,3,172,86,0,1573,1574,5,380,0,0,1574,1576,3,172,86,0,1575,1573,1,0, + 0,0,1576,1579,1,0,0,0,1577,1575,1,0,0,0,1577,1578,1,0,0,0,1578,243,1,0, + 0,0,1579,1577,1,0,0,0,1580,1581,5,308,0,0,1581,1583,5,376,0,0,1582,1584, + 3,246,123,0,1583,1582,1,0,0,0,1584,1585,1,0,0,0,1585,1583,1,0,0,0,1585, + 1586,1,0,0,0,1586,1587,1,0,0,0,1587,1589,5,377,0,0,1588,1590,3,258,129, + 0,1589,1588,1,0,0,0,1589,1590,1,0,0,0,1590,245,1,0,0,0,1591,1593,3,308, + 154,0,1592,1594,3,240,120,0,1593,1592,1,0,0,0,1593,1594,1,0,0,0,1594,247, + 1,0,0,0,1595,1596,5,176,0,0,1596,1597,5,323,0,0,1597,1598,5,309,0,0,1598, + 1604,5,279,0,0,1599,1600,5,300,0,0,1600,1601,5,322,0,0,1601,1602,5,309, + 0,0,1602,1604,5,279,0,0,1603,1595,1,0,0,0,1603,1599,1,0,0,0,1604,249,1, + 0,0,0,1605,1606,5,6,0,0,1606,1607,5,279,0,0,1607,1608,5,328,0,0,1608,1609, + 5,97,0,0,1609,1610,5,72,0,0,1610,1630,5,322,0,0,1611,1612,5,6,0,0,1612, + 1613,5,279,0,0,1613,1614,5,328,0,0,1614,1615,5,343,0,0,1615,1616,5,291, + 0,0,1616,1630,5,322,0,0,1617,1618,5,6,0,0,1618,1619,5,279,0,0,1619,1620, + 5,328,0,0,1620,1621,5,343,0,0,1621,1622,5,72,0,0,1622,1630,3,308,154,0, + 1623,1624,5,6,0,0,1624,1625,5,279,0,0,1625,1626,5,328,0,0,1626,1627,5,343, + 0,0,1627,1628,5,44,0,0,1628,1630,3,308,154,0,1629,1605,1,0,0,0,1629,1611, + 1,0,0,0,1629,1617,1,0,0,0,1629,1623,1,0,0,0,1630,251,1,0,0,0,1631,1632, + 5,229,0,0,1632,1637,3,172,86,0,1633,1634,5,380,0,0,1634,1636,3,172,86,0, + 1635,1633,1,0,0,0,1636,1639,1,0,0,0,1637,1635,1,0,0,0,1637,1638,1,0,0,0, + 1638,253,1,0,0,0,1639,1637,1,0,0,0,1640,1641,5,314,0,0,1641,1642,5,187, + 0,0,1642,1643,3,280,140,0,1643,1644,3,256,128,0,1644,1650,1,0,0,0,1645, + 1646,5,323,0,0,1646,1647,5,187,0,0,1647,1648,5,398,0,0,1648,1650,3,256, + 128,0,1649,1640,1,0,0,0,1649,1645,1,0,0,0,1650,255,1,0,0,0,1651,1652,5, + 101,0,0,1652,1653,5,179,0,0,1653,1654,5,219,0,0,1654,1655,5,322,0,0,1655, + 257,1,0,0,0,1656,1657,5,362,0,0,1657,1658,3,280,140,0,1658,259,1,0,0,0, + 1659,1660,3,262,131,0,1660,261,1,0,0,0,1661,1662,6,131,-1,0,1662,1663,5, + 294,0,0,1663,1674,3,262,131,5,1664,1665,5,241,0,0,1665,1666,5,376,0,0,1666, + 1667,3,158,79,0,1667,1668,5,377,0,0,1668,1674,1,0,0,0,1669,1671,3,268,134, + 0,1670,1672,3,264,132,0,1671,1670,1,0,0,0,1671,1672,1,0,0,0,1672,1674,1, + 0,0,0,1673,1661,1,0,0,0,1673,1664,1,0,0,0,1673,1669,1,0,0,0,1674,1683,1, + 0,0,0,1675,1676,10,2,0,0,1676,1677,5,179,0,0,1677,1682,3,262,131,3,1678, + 1679,10,1,0,0,1679,1680,5,301,0,0,1680,1682,3,262,131,2,1681,1675,1,0,0, + 0,1681,1678,1,0,0,0,1682,1685,1,0,0,0,1683,1681,1,0,0,0,1683,1684,1,0,0, + 0,1684,263,1,0,0,0,1685,1683,1,0,0,0,1686,1688,5,294,0,0,1687,1686,1,0, + 0,0,1687,1688,1,0,0,0,1688,1689,1,0,0,0,1689,1690,5,187,0,0,1690,1691,3, + 268,134,0,1691,1692,5,179,0,0,1692,1693,3,268,134,0,1693,1770,1,0,0,0,1694, + 1696,5,294,0,0,1695,1694,1,0,0,0,1695,1696,1,0,0,0,1696,1697,1,0,0,0,1697, + 1698,5,259,0,0,1698,1699,5,376,0,0,1699,1704,3,260,130,0,1700,1701,5,380, + 0,0,1701,1703,3,260,130,0,1702,1700,1,0,0,0,1703,1706,1,0,0,0,1704,1702, + 1,0,0,0,1704,1705,1,0,0,0,1705,1707,1,0,0,0,1706,1704,1,0,0,0,1707,1708, + 5,377,0,0,1708,1770,1,0,0,0,1709,1711,5,294,0,0,1710,1709,1,0,0,0,1710, + 1711,1,0,0,0,1711,1712,1,0,0,0,1712,1713,5,259,0,0,1713,1714,5,376,0,0, + 1714,1715,3,158,79,0,1715,1716,5,377,0,0,1716,1770,1,0,0,0,1717,1718,5, + 241,0,0,1718,1719,5,376,0,0,1719,1720,3,158,79,0,1720,1721,5,377,0,0,1721, + 1770,1,0,0,0,1722,1724,5,294,0,0,1723,1722,1,0,0,0,1723,1724,1,0,0,0,1724, + 1725,1,0,0,0,1725,1726,5,319,0,0,1726,1770,3,268,134,0,1727,1729,5,294, + 0,0,1728,1727,1,0,0,0,1728,1729,1,0,0,0,1729,1730,1,0,0,0,1730,1731,5,276, + 0,0,1731,1745,7,28,0,0,1732,1733,5,376,0,0,1733,1746,5,377,0,0,1734,1735, + 5,376,0,0,1735,1740,3,260,130,0,1736,1737,5,380,0,0,1737,1739,3,260,130, + 0,1738,1736,1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740,1741,1,0,0, + 0,1741,1743,1,0,0,0,1742,1740,1,0,0,0,1743,1744,5,377,0,0,1744,1746,1,0, + 0,0,1745,1732,1,0,0,0,1745,1734,1,0,0,0,1746,1770,1,0,0,0,1747,1749,5,294, + 0,0,1748,1747,1,0,0,0,1748,1749,1,0,0,0,1749,1750,1,0,0,0,1750,1751,5,276, + 0,0,1751,1770,3,268,134,0,1752,1754,5,269,0,0,1753,1755,5,294,0,0,1754, + 1753,1,0,0,0,1754,1755,1,0,0,0,1755,1756,1,0,0,0,1756,1770,5,295,0,0,1757, + 1759,5,269,0,0,1758,1760,5,294,0,0,1759,1758,1,0,0,0,1759,1760,1,0,0,0, + 1760,1761,1,0,0,0,1761,1770,7,29,0,0,1762,1764,5,269,0,0,1763,1765,5,294, + 0,0,1764,1763,1,0,0,0,1764,1765,1,0,0,0,1765,1766,1,0,0,0,1766,1767,5,232, + 0,0,1767,1768,5,248,0,0,1768,1770,3,268,134,0,1769,1687,1,0,0,0,1769,1695, + 1,0,0,0,1769,1710,1,0,0,0,1769,1717,1,0,0,0,1769,1723,1,0,0,0,1769,1728, + 1,0,0,0,1769,1748,1,0,0,0,1769,1752,1,0,0,0,1769,1757,1,0,0,0,1769,1762, + 1,0,0,0,1770,265,1,0,0,0,1771,1773,5,294,0,0,1772,1771,1,0,0,0,1772,1773, + 1,0,0,0,1773,1774,1,0,0,0,1774,1775,5,276,0,0,1775,1789,7,28,0,0,1776,1777, + 5,376,0,0,1777,1790,5,377,0,0,1778,1779,5,376,0,0,1779,1784,3,260,130,0, + 1780,1781,5,380,0,0,1781,1783,3,260,130,0,1782,1780,1,0,0,0,1783,1786,1, + 0,0,0,1784,1782,1,0,0,0,1784,1785,1,0,0,0,1785,1787,1,0,0,0,1786,1784,1, + 0,0,0,1787,1788,5,377,0,0,1788,1790,1,0,0,0,1789,1776,1,0,0,0,1789,1778, + 1,0,0,0,1790,1797,1,0,0,0,1791,1793,5,294,0,0,1792,1791,1,0,0,0,1792,1793, + 1,0,0,0,1793,1794,1,0,0,0,1794,1795,5,276,0,0,1795,1797,3,268,134,0,1796, + 1772,1,0,0,0,1796,1792,1,0,0,0,1797,267,1,0,0,0,1798,1799,6,134,-1,0,1799, + 1803,3,270,135,0,1800,1801,7,30,0,0,1801,1803,3,268,134,7,1802,1798,1,0, + 0,0,1802,1800,1,0,0,0,1803,1825,1,0,0,0,1804,1805,10,6,0,0,1805,1806,7, + 31,0,0,1806,1824,3,268,134,7,1807,1808,10,5,0,0,1808,1809,7,32,0,0,1809, + 1824,3,268,134,6,1810,1811,10,4,0,0,1811,1812,5,371,0,0,1812,1824,3,268, + 134,5,1813,1814,10,3,0,0,1814,1815,5,372,0,0,1815,1824,3,268,134,4,1816, + 1817,10,2,0,0,1817,1818,5,370,0,0,1818,1824,3,268,134,3,1819,1820,10,1, + 0,0,1820,1821,3,332,166,0,1821,1822,3,268,134,2,1822,1824,1,0,0,0,1823, + 1804,1,0,0,0,1823,1807,1,0,0,0,1823,1810,1,0,0,0,1823,1813,1,0,0,0,1823, + 1816,1,0,0,0,1823,1819,1,0,0,0,1824,1827,1,0,0,0,1825,1823,1,0,0,0,1825, + 1826,1,0,0,0,1826,269,1,0,0,0,1827,1825,1,0,0,0,1828,1829,6,135,-1,0,1829, + 1831,5,198,0,0,1830,1832,3,312,156,0,1831,1830,1,0,0,0,1832,1833,1,0,0, + 0,1833,1831,1,0,0,0,1833,1834,1,0,0,0,1834,1837,1,0,0,0,1835,1836,5,236, + 0,0,1836,1838,3,260,130,0,1837,1835,1,0,0,0,1837,1838,1,0,0,0,1838,1839, + 1,0,0,0,1839,1840,5,237,0,0,1840,1920,1,0,0,0,1841,1842,5,198,0,0,1842, + 1844,3,260,130,0,1843,1845,3,312,156,0,1844,1843,1,0,0,0,1845,1846,1,0, + 0,0,1846,1844,1,0,0,0,1846,1847,1,0,0,0,1847,1850,1,0,0,0,1848,1849,5,236, + 0,0,1849,1851,3,260,130,0,1850,1848,1,0,0,0,1850,1851,1,0,0,0,1851,1852, + 1,0,0,0,1852,1853,5,237,0,0,1853,1920,1,0,0,0,1854,1855,5,199,0,0,1855, + 1856,5,376,0,0,1856,1857,3,260,130,0,1857,1858,5,183,0,0,1858,1859,3,54, + 27,0,1859,1860,5,377,0,0,1860,1920,1,0,0,0,1861,1862,5,44,0,0,1862,1863, + 5,376,0,0,1863,1866,3,260,130,0,1864,1865,5,59,0,0,1865,1867,5,86,0,0,1866, + 1864,1,0,0,0,1866,1867,1,0,0,0,1867,1868,1,0,0,0,1868,1869,5,377,0,0,1869, + 1920,1,0,0,0,1870,1871,5,72,0,0,1871,1872,5,376,0,0,1872,1875,3,260,130, + 0,1873,1874,5,59,0,0,1874,1876,5,86,0,0,1875,1873,1,0,0,0,1875,1876,1,0, + 0,0,1876,1877,1,0,0,0,1877,1878,5,377,0,0,1878,1920,1,0,0,0,1879,1880,5, + 312,0,0,1880,1881,5,376,0,0,1881,1882,3,268,134,0,1882,1883,5,259,0,0,1883, + 1884,3,268,134,0,1884,1885,5,377,0,0,1885,1920,1,0,0,0,1886,1920,3,340, + 170,0,1887,1920,5,387,0,0,1888,1889,3,314,157,0,1889,1890,5,373,0,0,1890, + 1891,5,387,0,0,1891,1920,1,0,0,0,1892,1893,5,376,0,0,1893,1894,3,158,79, + 0,1894,1895,5,377,0,0,1895,1920,1,0,0,0,1896,1897,3,272,136,0,1897,1909, + 5,376,0,0,1898,1900,3,348,174,0,1899,1898,1,0,0,0,1899,1900,1,0,0,0,1900, + 1901,1,0,0,0,1901,1906,3,260,130,0,1902,1903,5,380,0,0,1903,1905,3,260, + 130,0,1904,1902,1,0,0,0,1905,1908,1,0,0,0,1906,1904,1,0,0,0,1906,1907,1, + 0,0,0,1907,1910,1,0,0,0,1908,1906,1,0,0,0,1909,1899,1,0,0,0,1909,1910,1, + 0,0,0,1910,1911,1,0,0,0,1911,1912,5,377,0,0,1912,1920,1,0,0,0,1913,1920, + 3,306,153,0,1914,1920,3,274,137,0,1915,1916,5,376,0,0,1916,1917,3,260,130, + 0,1917,1918,5,377,0,0,1918,1920,1,0,0,0,1919,1828,1,0,0,0,1919,1841,1,0, + 0,0,1919,1854,1,0,0,0,1919,1861,1,0,0,0,1919,1870,1,0,0,0,1919,1879,1,0, + 0,0,1919,1886,1,0,0,0,1919,1887,1,0,0,0,1919,1888,1,0,0,0,1919,1892,1,0, + 0,0,1919,1896,1,0,0,0,1919,1913,1,0,0,0,1919,1914,1,0,0,0,1919,1915,1,0, + 0,0,1920,1928,1,0,0,0,1921,1922,10,4,0,0,1922,1923,5,374,0,0,1923,1924, + 3,268,134,0,1924,1925,5,375,0,0,1925,1927,1,0,0,0,1926,1921,1,0,0,0,1927, + 1930,1,0,0,0,1928,1926,1,0,0,0,1928,1929,1,0,0,0,1929,271,1,0,0,0,1930, + 1928,1,0,0,0,1931,1935,3,350,175,0,1932,1935,3,352,176,0,1933,1935,3,314, + 157,0,1934,1931,1,0,0,0,1934,1932,1,0,0,0,1934,1933,1,0,0,0,1935,273,1, + 0,0,0,1936,1937,3,314,157,0,1937,275,1,0,0,0,1938,1939,3,306,153,0,1939, + 277,1,0,0,0,1940,1943,3,306,153,0,1941,1943,3,274,137,0,1942,1940,1,0,0, + 0,1942,1941,1,0,0,0,1943,279,1,0,0,0,1944,1947,5,267,0,0,1945,1948,3,282, + 141,0,1946,1948,3,286,143,0,1947,1945,1,0,0,0,1947,1946,1,0,0,0,1947,1948, + 1,0,0,0,1948,281,1,0,0,0,1949,1951,3,284,142,0,1950,1952,3,288,144,0,1951, + 1950,1,0,0,0,1951,1952,1,0,0,0,1952,283,1,0,0,0,1953,1954,3,290,145,0,1954, + 1955,3,292,146,0,1955,1957,1,0,0,0,1956,1953,1,0,0,0,1957,1958,1,0,0,0, + 1958,1956,1,0,0,0,1958,1959,1,0,0,0,1959,285,1,0,0,0,1960,1963,3,288,144, + 0,1961,1964,3,284,142,0,1962,1964,3,288,144,0,1963,1961,1,0,0,0,1963,1962, + 1,0,0,0,1963,1964,1,0,0,0,1964,287,1,0,0,0,1965,1966,3,290,145,0,1966,1967, + 3,292,146,0,1967,1968,5,343,0,0,1968,1969,3,292,146,0,1969,289,1,0,0,0, + 1970,1972,7,33,0,0,1971,1970,1,0,0,0,1971,1972,1,0,0,0,1972,1973,1,0,0, + 0,1973,1976,7,34,0,0,1974,1976,5,397,0,0,1975,1971,1,0,0,0,1975,1974,1, + 0,0,0,1976,291,1,0,0,0,1977,1980,3,306,153,0,1978,1980,3,350,175,0,1979, + 1977,1,0,0,0,1979,1978,1,0,0,0,1980,293,1,0,0,0,1981,1983,5,183,0,0,1982, + 1981,1,0,0,0,1982,1983,1,0,0,0,1983,1984,1,0,0,0,1984,1986,3,306,153,0, + 1985,1987,3,302,151,0,1986,1985,1,0,0,0,1986,1987,1,0,0,0,1987,295,1,0, + 0,0,1988,1990,5,183,0,0,1989,1988,1,0,0,0,1989,1990,1,0,0,0,1990,1991,1, + 0,0,0,1991,1993,3,306,153,0,1992,1994,3,302,151,0,1993,1992,1,0,0,0,1993, + 1994,1,0,0,0,1994,297,1,0,0,0,1995,1996,3,306,153,0,1996,1997,3,300,150, + 0,1997,299,1,0,0,0,1998,1999,5,284,0,0,1999,2001,3,306,153,0,2000,1998, + 1,0,0,0,2001,2002,1,0,0,0,2002,2000,1,0,0,0,2002,2003,1,0,0,0,2003,2006, + 1,0,0,0,2004,2006,1,0,0,0,2005,2000,1,0,0,0,2005,2004,1,0,0,0,2006,301, + 1,0,0,0,2007,2008,5,376,0,0,2008,2009,3,304,152,0,2009,2010,5,377,0,0,2010, + 303,1,0,0,0,2011,2016,3,306,153,0,2012,2013,5,380,0,0,2013,2015,3,306,153, + 0,2014,2012,1,0,0,0,2015,2018,1,0,0,0,2016,2014,1,0,0,0,2016,2017,1,0,0, + 0,2017,305,1,0,0,0,2018,2016,1,0,0,0,2019,2023,3,308,154,0,2020,2023,3, + 310,155,0,2021,2023,3,352,176,0,2022,2019,1,0,0,0,2022,2020,1,0,0,0,2022, + 2021,1,0,0,0,2023,307,1,0,0,0,2024,2025,7,35,0,0,2025,309,1,0,0,0,2026, + 2027,5,397,0,0,2027,311,1,0,0,0,2028,2029,5,358,0,0,2029,2030,3,260,130, + 0,2030,2031,5,339,0,0,2031,2032,3,260,130,0,2032,313,1,0,0,0,2033,2038, + 3,306,153,0,2034,2035,5,373,0,0,2035,2037,3,306,153,0,2036,2034,1,0,0,0, + 2037,2040,1,0,0,0,2038,2039,1,0,0,0,2038,2036,1,0,0,0,2039,315,1,0,0,0, + 2040,2038,1,0,0,0,2041,2042,5,361,0,0,2042,2043,3,322,161,0,2043,317,1, + 0,0,0,2044,2045,5,58,0,0,2045,2046,5,294,0,0,2046,2047,5,241,0,0,2047,319, + 1,0,0,0,2048,2049,5,58,0,0,2049,2050,5,241,0,0,2050,321,1,0,0,0,2051,2052, + 5,376,0,0,2052,2057,3,324,162,0,2053,2054,5,380,0,0,2054,2056,3,324,162, + 0,2055,2053,1,0,0,0,2056,2059,1,0,0,0,2057,2055,1,0,0,0,2057,2058,1,0,0, + 0,2058,2060,1,0,0,0,2059,2057,1,0,0,0,2060,2061,5,377,0,0,2061,323,1,0, + 0,0,2062,2067,3,326,163,0,2063,2065,5,365,0,0,2064,2063,1,0,0,0,2064,2065, + 1,0,0,0,2065,2066,1,0,0,0,2066,2068,3,328,164,0,2067,2064,1,0,0,0,2067, + 2068,1,0,0,0,2068,325,1,0,0,0,2069,2073,3,306,153,0,2070,2073,3,274,137, + 0,2071,2073,5,397,0,0,2072,2069,1,0,0,0,2072,2070,1,0,0,0,2072,2071,1,0, + 0,0,2073,327,1,0,0,0,2074,2079,5,398,0,0,2075,2079,5,399,0,0,2076,2079, + 3,346,173,0,2077,2079,5,397,0,0,2078,2074,1,0,0,0,2078,2075,1,0,0,0,2078, + 2076,1,0,0,0,2078,2077,1,0,0,0,2079,329,1,0,0,0,2080,2087,5,179,0,0,2081, + 2082,5,371,0,0,2082,2087,5,371,0,0,2083,2087,5,301,0,0,2084,2085,5,370, + 0,0,2085,2087,5,370,0,0,2086,2080,1,0,0,0,2086,2081,1,0,0,0,2086,2083,1, + 0,0,0,2086,2084,1,0,0,0,2087,331,1,0,0,0,2088,2103,5,365,0,0,2089,2103, + 5,366,0,0,2090,2103,5,367,0,0,2091,2092,5,367,0,0,2092,2103,5,365,0,0,2093, + 2094,5,366,0,0,2094,2103,5,365,0,0,2095,2096,5,367,0,0,2096,2103,5,366, + 0,0,2097,2098,5,368,0,0,2098,2103,5,365,0,0,2099,2100,5,367,0,0,2100,2101, + 5,365,0,0,2101,2103,5,366,0,0,2102,2088,1,0,0,0,2102,2089,1,0,0,0,2102, + 2090,1,0,0,0,2102,2091,1,0,0,0,2102,2093,1,0,0,0,2102,2095,1,0,0,0,2102, + 2097,1,0,0,0,2102,2099,1,0,0,0,2103,333,1,0,0,0,2104,2105,5,367,0,0,2105, + 2112,5,367,0,0,2106,2107,5,366,0,0,2107,2112,5,366,0,0,2108,2112,5,371, + 0,0,2109,2112,5,372,0,0,2110,2112,5,370,0,0,2111,2104,1,0,0,0,2111,2106, + 1,0,0,0,2111,2108,1,0,0,0,2111,2109,1,0,0,0,2111,2110,1,0,0,0,2112,335, + 1,0,0,0,2113,2114,7,36,0,0,2114,337,1,0,0,0,2115,2116,7,37,0,0,2116,339, + 1,0,0,0,2117,2130,3,342,171,0,2118,2130,3,344,172,0,2119,2130,3,280,140, + 0,2120,2121,5,389,0,0,2121,2130,3,344,172,0,2122,2130,3,346,173,0,2123, + 2130,5,399,0,0,2124,2130,5,400,0,0,2125,2127,5,294,0,0,2126,2125,1,0,0, + 0,2126,2127,1,0,0,0,2127,2128,1,0,0,0,2128,2130,5,295,0,0,2129,2117,1,0, + 0,0,2129,2118,1,0,0,0,2129,2119,1,0,0,0,2129,2120,1,0,0,0,2129,2122,1,0, + 0,0,2129,2123,1,0,0,0,2129,2124,1,0,0,0,2129,2126,1,0,0,0,2130,341,1,0, + 0,0,2131,2132,5,397,0,0,2132,343,1,0,0,0,2133,2134,5,398,0,0,2134,345,1, + 0,0,0,2135,2136,7,29,0,0,2136,347,1,0,0,0,2137,2138,7,38,0,0,2138,349,1, + 0,0,0,2139,2140,7,39,0,0,2140,351,1,0,0,0,2141,2142,7,40,0,0,2142,353,1, + 0,0,0,248,362,365,367,382,400,404,413,418,425,432,436,445,457,460,467,475, + 480,483,490,498,502,514,522,526,547,551,555,559,568,573,577,581,585,588, + 592,597,603,608,613,616,620,628,636,640,644,648,652,656,660,664,668,670, + 680,688,712,719,725,728,731,741,744,752,764,788,801,806,810,818,822,830, + 840,844,850,854,858,861,870,874,881,884,894,902,910,914,929,948,959,963, + 970,975,981,985,992,996,1000,1004,1012,1016,1021,1027,1033,1036,1040,1051, + 1060,1074,1086,1101,1104,1108,1111,1113,1118,1122,1125,1129,1138,1147,1157, + 1162,1174,1177,1180,1183,1189,1193,1201,1204,1209,1212,1214,1228,1239,1244, + 1252,1255,1258,1263,1265,1267,1272,1275,1279,1282,1285,1297,1304,1315,1344, + 1366,1384,1389,1401,1414,1426,1438,1443,1470,1478,1482,1485,1488,1495,1498, + 1501,1504,1507,1510,1515,1518,1527,1532,1536,1541,1550,1569,1577,1585,1589, + 1593,1603,1629,1637,1649,1671,1673,1681,1683,1687,1695,1704,1710,1723,1728, + 1740,1745,1748,1754,1759,1764,1769,1772,1784,1789,1792,1796,1802,1823,1825, + 1833,1837,1846,1850,1866,1875,1899,1906,1909,1919,1928,1934,1942,1947,1951, + 1958,1963,1971,1975,1979,1982,1986,1989,1993,2002,2005,2016,2022,2038,2057, + 2064,2067,2072,2078,2086,2102,2111,2126,2129]; private static __ATN: ATN; public static get _ATN(): ATN { @@ -15856,6 +15924,9 @@ export class InsertStatementContext extends ParserRuleContext { public KW_EXECUTE(): TerminalNode { return this.getToken(FlinkSqlParser.KW_EXECUTE, 0); } + public insertMulStatementCompatibility(): InsertMulStatementCompatibilityContext { + return this.getTypedRuleContext(InsertMulStatementCompatibilityContext, 0) as InsertMulStatementCompatibilityContext; + } public insertMulStatement(): InsertMulStatementContext { return this.getTypedRuleContext(InsertMulStatementContext, 0) as InsertMulStatementContext; } @@ -16062,6 +16133,59 @@ export class ValuesRowDefinitionContext extends ParserRuleContext { } +export class InsertMulStatementCompatibilityContext extends ParserRuleContext { + constructor(parser?: FlinkSqlParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public KW_BEGIN(): TerminalNode { + return this.getToken(FlinkSqlParser.KW_BEGIN, 0); + } + public KW_STATEMENT(): TerminalNode { + return this.getToken(FlinkSqlParser.KW_STATEMENT, 0); + } + public KW_SET(): TerminalNode { + return this.getToken(FlinkSqlParser.KW_SET, 0); + } + public SEMICOLON_list(): TerminalNode[] { + return this.getTokens(FlinkSqlParser.SEMICOLON); + } + public SEMICOLON(i: number): TerminalNode { + return this.getToken(FlinkSqlParser.SEMICOLON, i); + } + public KW_END(): TerminalNode { + return this.getToken(FlinkSqlParser.KW_END, 0); + } + public insertSimpleStatement_list(): InsertSimpleStatementContext[] { + return this.getTypedRuleContexts(InsertSimpleStatementContext) as InsertSimpleStatementContext[]; + } + public insertSimpleStatement(i: number): InsertSimpleStatementContext { + return this.getTypedRuleContext(InsertSimpleStatementContext, i) as InsertSimpleStatementContext; + } + public get ruleIndex(): number { + return FlinkSqlParser.RULE_insertMulStatementCompatibility; + } + public enterRule(listener: FlinkSqlParserListener): void { + if(listener.enterInsertMulStatementCompatibility) { + listener.enterInsertMulStatementCompatibility(this); + } + } + public exitRule(listener: FlinkSqlParserListener): void { + if(listener.exitInsertMulStatementCompatibility) { + listener.exitInsertMulStatementCompatibility(this); + } + } + // @Override + public accept(visitor: FlinkSqlParserVisitor): Result { + if (visitor.visitInsertMulStatementCompatibility) { + return visitor.visitInsertMulStatementCompatibility(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class InsertMulStatementContext extends ParserRuleContext { constructor(parser?: FlinkSqlParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); diff --git a/src/lib/flinksql/FlinkSqlParserListener.ts b/src/lib/flinksql/FlinkSqlParserListener.ts index 8c51d18..48e9a08 100644 --- a/src/lib/flinksql/FlinkSqlParserListener.ts +++ b/src/lib/flinksql/FlinkSqlParserListener.ts @@ -1,4 +1,4 @@ -// Generated from /Users/mortalYoung/Projects/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0 +// Generated from /Users/zhenglin/Documents/parser/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0 import {ParseTreeListener} from "antlr4"; @@ -81,6 +81,7 @@ import { InsertSimpleStatementContext } from "./FlinkSqlParser"; import { InsertPartitionDefinitionContext } from "./FlinkSqlParser"; import { ValuesDefinitionContext } from "./FlinkSqlParser"; import { ValuesRowDefinitionContext } from "./FlinkSqlParser"; +import { InsertMulStatementCompatibilityContext } from "./FlinkSqlParser"; import { InsertMulStatementContext } from "./FlinkSqlParser"; import { QueryStatementContext } from "./FlinkSqlParser"; import { ValuesCaluseContext } from "./FlinkSqlParser"; @@ -993,6 +994,16 @@ export default class FlinkSqlParserListener extends ParseTreeListener { * @param ctx the parse tree */ exitValuesRowDefinition?: (ctx: ValuesRowDefinitionContext) => void; + /** + * Enter a parse tree produced by `FlinkSqlParser.insertMulStatementCompatibility`. + * @param ctx the parse tree + */ + enterInsertMulStatementCompatibility?: (ctx: InsertMulStatementCompatibilityContext) => void; + /** + * Exit a parse tree produced by `FlinkSqlParser.insertMulStatementCompatibility`. + * @param ctx the parse tree + */ + exitInsertMulStatementCompatibility?: (ctx: InsertMulStatementCompatibilityContext) => void; /** * Enter a parse tree produced by `FlinkSqlParser.insertMulStatement`. * @param ctx the parse tree diff --git a/src/lib/flinksql/FlinkSqlParserVisitor.ts b/src/lib/flinksql/FlinkSqlParserVisitor.ts index d834d9d..e1175ea 100644 --- a/src/lib/flinksql/FlinkSqlParserVisitor.ts +++ b/src/lib/flinksql/FlinkSqlParserVisitor.ts @@ -1,4 +1,4 @@ -// Generated from /Users/mortalYoung/Projects/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0 +// Generated from /Users/zhenglin/Documents/parser/dt-sql-parser/src/grammar/flinksql/FlinkSqlParser.g4 by ANTLR 4.12.0 import {ParseTreeVisitor} from 'antlr4'; @@ -81,6 +81,7 @@ import { InsertSimpleStatementContext } from "./FlinkSqlParser"; import { InsertPartitionDefinitionContext } from "./FlinkSqlParser"; import { ValuesDefinitionContext } from "./FlinkSqlParser"; import { ValuesRowDefinitionContext } from "./FlinkSqlParser"; +import { InsertMulStatementCompatibilityContext } from "./FlinkSqlParser"; import { InsertMulStatementContext } from "./FlinkSqlParser"; import { QueryStatementContext } from "./FlinkSqlParser"; import { ValuesCaluseContext } from "./FlinkSqlParser"; @@ -682,6 +683,12 @@ export default class FlinkSqlParserVisitor extends ParseTreeVisitor Result; + /** + * Visit a parse tree produced by `FlinkSqlParser.insertMulStatementCompatibility`. + * @param ctx the parse tree + * @return the visitor result + */ + visitInsertMulStatementCompatibility?: (ctx: InsertMulStatementCompatibilityContext) => Result; /** * Visit a parse tree produced by `FlinkSqlParser.insertMulStatement`. * @param ctx the parse tree diff --git a/test/helper.ts b/test/helper.ts index ef59b07..46d1e65 100644 --- a/test/helper.ts +++ b/test/helper.ts @@ -10,7 +10,7 @@ export const readSQL = (dirname: string, fileName: string) => { const char = content[index]; tmp += char; - const isMulti = tmp.includes('EXECUTE STATEMENT SET'); + const isMulti = tmp.includes('EXECUTE STATEMENT SET') || tmp.includes('BEGIN STATEMENT SET;'); if (!isMulti) { // 非批量的先简单按照分号切割 diff --git a/test/parser/flinksql/syntax/fixtures/insertMultipleTable.sql b/test/parser/flinksql/syntax/fixtures/insertMultipleTable.sql index f852e77..06c3336 100644 --- a/test/parser/flinksql/syntax/fixtures/insertMultipleTable.sql +++ b/test/parser/flinksql/syntax/fixtures/insertMultipleTable.sql @@ -1,3 +1,5 @@ +-- FlinkSQL 1.16:insert multiple table statement + EXECUTE STATEMENT SET BEGIN INSERT INTO country_page_view @@ -8,4 +10,13 @@ VALUES ('Chinese', 'mumiao', 18), ('Amercian', 'georage', 22); END; +-- FlinkSQL 1.15:insert multiple table statement +BEGIN STATEMENT SET; +INSERT INTO country_page_view +VALUES ('Chinese', 'mumiao', 18), + ('Amercian', 'georage', 22); +INSERT INTO country_page_view +VALUES ('Chinese', 'mumiao', 18), + ('Amercian', 'georage', 22); +END; \ No newline at end of file