diff --git a/src/interpreter/LuaInterpreter.ts b/src/interpreter/LuaInterpreter.ts index d012557..921ad2f 100644 --- a/src/interpreter/LuaInterpreter.ts +++ b/src/interpreter/LuaInterpreter.ts @@ -391,12 +391,6 @@ export default class LuaInterpreter extends LuaParserVisitor { } } throw ReturnStmt.withList(resultList); - } else if (ctx.CONTINUE()) { - throw new NotYetImplemented( - 'continue is not supported in Lua', - ctx, - 'N003' - ); } else { throw new RuntimeError( "This 'break' should not happen; open an issue on GitHub", diff --git a/src/parser/LuaLexer.g4 b/src/parser/LuaLexer.g4 index e1cad6b..6aa1913 100644 --- a/src/parser/LuaLexer.g4 +++ b/src/parser/LuaLexer.g4 @@ -32,7 +32,6 @@ LOCAL : 'local'; LT : '<'; GT : '>'; RETURN : 'return'; -CONTINUE : 'continue'; CC : '::'; NIL : 'nil'; FALSE : 'false'; @@ -120,4 +119,4 @@ WS: [ \t\u000C\r]+ -> channel(HIDDEN); NL: [\n] -> channel(2); -SHEBANG: '#' { this.IsLine1Col0() }? '!'? SingleLineInputCharacter* -> channel(HIDDEN); \ No newline at end of file +SHEBANG: '#' { this.IsLine1Col0() }? '!'? SingleLineInputCharacter* -> channel(HIDDEN); diff --git a/src/parser/LuaLexer.interp b/src/parser/LuaLexer.interp index da0b2dd..d6c083f 100644 --- a/src/parser/LuaLexer.interp +++ b/src/parser/LuaLexer.interp @@ -21,7 +21,6 @@ null '<' '>' 'return' -'continue' '::' 'nil' 'false' @@ -92,7 +91,6 @@ LOCAL LT GT RETURN -CONTINUE CC NIL FALSE @@ -162,7 +160,6 @@ LOCAL LT GT RETURN -CONTINUE CC NIL FALSE @@ -228,4 +225,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 68, 580, 6, -1, 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, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 5, 56, 358, 8, 56, 10, 56, 12, 56, 361, 9, 56, 1, 57, 1, 57, 1, 57, 5, 57, 366, 8, 57, 10, 57, 12, 57, 369, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 376, 8, 58, 10, 58, 12, 58, 379, 9, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 393, 8, 60, 10, 60, 12, 60, 396, 9, 60, 1, 60, 3, 60, 399, 8, 60, 1, 61, 4, 61, 402, 8, 61, 11, 61, 12, 61, 403, 1, 62, 1, 62, 1, 62, 4, 62, 409, 8, 62, 11, 62, 12, 62, 410, 1, 63, 4, 63, 414, 8, 63, 11, 63, 12, 63, 415, 1, 63, 1, 63, 5, 63, 420, 8, 63, 10, 63, 12, 63, 423, 9, 63, 1, 63, 3, 63, 426, 8, 63, 1, 63, 1, 63, 4, 63, 430, 8, 63, 11, 63, 12, 63, 431, 1, 63, 3, 63, 435, 8, 63, 1, 63, 4, 63, 438, 8, 63, 11, 63, 12, 63, 439, 1, 63, 1, 63, 3, 63, 444, 8, 63, 1, 64, 1, 64, 1, 64, 4, 64, 449, 8, 64, 11, 64, 12, 64, 450, 1, 64, 1, 64, 5, 64, 455, 8, 64, 10, 64, 12, 64, 458, 9, 64, 1, 64, 3, 64, 461, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 4, 64, 467, 8, 64, 11, 64, 12, 64, 468, 1, 64, 3, 64, 472, 8, 64, 1, 64, 1, 64, 1, 64, 4, 64, 477, 8, 64, 11, 64, 12, 64, 478, 1, 64, 1, 64, 3, 64, 483, 8, 64, 1, 65, 1, 65, 3, 65, 487, 8, 65, 1, 65, 4, 65, 490, 8, 65, 11, 65, 12, 65, 491, 1, 66, 1, 66, 3, 66, 496, 8, 66, 1, 66, 4, 66, 499, 8, 66, 11, 66, 12, 66, 500, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 507, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 513, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 526, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 4, 70, 538, 8, 70, 11, 70, 12, 70, 539, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 4, 75, 558, 8, 75, 11, 75, 12, 75, 559, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 571, 8, 77, 1, 77, 5, 77, 574, 8, 77, 10, 77, 12, 77, 577, 9, 77, 1, 77, 1, 77, 1, 394, 0, 78, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 0, 123, 61, 125, 62, 127, 63, 129, 64, 131, 0, 133, 0, 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 65, 151, 66, 153, 67, 155, 68, 1, 0, 15, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 2, 0, 88, 88, 120, 120, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 2, 0, 80, 80, 112, 112, 11, 0, 34, 36, 39, 39, 92, 92, 97, 98, 102, 102, 110, 110, 114, 114, 116, 116, 118, 118, 122, 122, 124, 124, 1, 0, 48, 50, 1, 0, 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 4, 0, 10, 10, 13, 13, 133, 133, 8232, 8233, 3, 0, 9, 9, 12, 13, 32, 32, 1, 0, 10, 10, 609, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 1, 157, 1, 0, 0, 0, 3, 159, 1, 0, 0, 0, 5, 161, 1, 0, 0, 0, 7, 167, 1, 0, 0, 0, 9, 172, 1, 0, 0, 0, 11, 175, 1, 0, 0, 0, 13, 179, 1, 0, 0, 0, 15, 185, 1, 0, 0, 0, 17, 192, 1, 0, 0, 0, 19, 198, 1, 0, 0, 0, 21, 201, 1, 0, 0, 0, 23, 206, 1, 0, 0, 0, 25, 213, 1, 0, 0, 0, 27, 218, 1, 0, 0, 0, 29, 222, 1, 0, 0, 0, 31, 224, 1, 0, 0, 0, 33, 227, 1, 0, 0, 0, 35, 236, 1, 0, 0, 0, 37, 242, 1, 0, 0, 0, 39, 244, 1, 0, 0, 0, 41, 246, 1, 0, 0, 0, 43, 253, 1, 0, 0, 0, 45, 262, 1, 0, 0, 0, 47, 265, 1, 0, 0, 0, 49, 269, 1, 0, 0, 0, 51, 275, 1, 0, 0, 0, 53, 280, 1, 0, 0, 0, 55, 282, 1, 0, 0, 0, 57, 284, 1, 0, 0, 0, 59, 286, 1, 0, 0, 0, 61, 288, 1, 0, 0, 0, 63, 290, 1, 0, 0, 0, 65, 292, 1, 0, 0, 0, 67, 296, 1, 0, 0, 0, 69, 299, 1, 0, 0, 0, 71, 302, 1, 0, 0, 0, 73, 304, 1, 0, 0, 0, 75, 307, 1, 0, 0, 0, 77, 309, 1, 0, 0, 0, 79, 311, 1, 0, 0, 0, 81, 314, 1, 0, 0, 0, 83, 317, 1, 0, 0, 0, 85, 321, 1, 0, 0, 0, 87, 324, 1, 0, 0, 0, 89, 326, 1, 0, 0, 0, 91, 328, 1, 0, 0, 0, 93, 330, 1, 0, 0, 0, 95, 332, 1, 0, 0, 0, 97, 334, 1, 0, 0, 0, 99, 336, 1, 0, 0, 0, 101, 339, 1, 0, 0, 0, 103, 342, 1, 0, 0, 0, 105, 344, 1, 0, 0, 0, 107, 346, 1, 0, 0, 0, 109, 348, 1, 0, 0, 0, 111, 352, 1, 0, 0, 0, 113, 355, 1, 0, 0, 0, 115, 362, 1, 0, 0, 0, 117, 372, 1, 0, 0, 0, 119, 382, 1, 0, 0, 0, 121, 398, 1, 0, 0, 0, 123, 401, 1, 0, 0, 0, 125, 405, 1, 0, 0, 0, 127, 443, 1, 0, 0, 0, 129, 482, 1, 0, 0, 0, 131, 484, 1, 0, 0, 0, 133, 493, 1, 0, 0, 0, 135, 512, 1, 0, 0, 0, 137, 525, 1, 0, 0, 0, 139, 527, 1, 0, 0, 0, 141, 532, 1, 0, 0, 0, 143, 543, 1, 0, 0, 0, 145, 545, 1, 0, 0, 0, 147, 547, 1, 0, 0, 0, 149, 549, 1, 0, 0, 0, 151, 557, 1, 0, 0, 0, 153, 563, 1, 0, 0, 0, 155, 567, 1, 0, 0, 0, 157, 158, 5, 59, 0, 0, 158, 2, 1, 0, 0, 0, 159, 160, 5, 61, 0, 0, 160, 4, 1, 0, 0, 0, 161, 162, 5, 98, 0, 0, 162, 163, 5, 114, 0, 0, 163, 164, 5, 101, 0, 0, 164, 165, 5, 97, 0, 0, 165, 166, 5, 107, 0, 0, 166, 6, 1, 0, 0, 0, 167, 168, 5, 103, 0, 0, 168, 169, 5, 111, 0, 0, 169, 170, 5, 116, 0, 0, 170, 171, 5, 111, 0, 0, 171, 8, 1, 0, 0, 0, 172, 173, 5, 100, 0, 0, 173, 174, 5, 111, 0, 0, 174, 10, 1, 0, 0, 0, 175, 176, 5, 101, 0, 0, 176, 177, 5, 110, 0, 0, 177, 178, 5, 100, 0, 0, 178, 12, 1, 0, 0, 0, 179, 180, 5, 119, 0, 0, 180, 181, 5, 104, 0, 0, 181, 182, 5, 105, 0, 0, 182, 183, 5, 108, 0, 0, 183, 184, 5, 101, 0, 0, 184, 14, 1, 0, 0, 0, 185, 186, 5, 114, 0, 0, 186, 187, 5, 101, 0, 0, 187, 188, 5, 112, 0, 0, 188, 189, 5, 101, 0, 0, 189, 190, 5, 97, 0, 0, 190, 191, 5, 116, 0, 0, 191, 16, 1, 0, 0, 0, 192, 193, 5, 117, 0, 0, 193, 194, 5, 110, 0, 0, 194, 195, 5, 116, 0, 0, 195, 196, 5, 105, 0, 0, 196, 197, 5, 108, 0, 0, 197, 18, 1, 0, 0, 0, 198, 199, 5, 105, 0, 0, 199, 200, 5, 102, 0, 0, 200, 20, 1, 0, 0, 0, 201, 202, 5, 116, 0, 0, 202, 203, 5, 104, 0, 0, 203, 204, 5, 101, 0, 0, 204, 205, 5, 110, 0, 0, 205, 22, 1, 0, 0, 0, 206, 207, 5, 101, 0, 0, 207, 208, 5, 108, 0, 0, 208, 209, 5, 115, 0, 0, 209, 210, 5, 101, 0, 0, 210, 211, 5, 105, 0, 0, 211, 212, 5, 102, 0, 0, 212, 24, 1, 0, 0, 0, 213, 214, 5, 101, 0, 0, 214, 215, 5, 108, 0, 0, 215, 216, 5, 115, 0, 0, 216, 217, 5, 101, 0, 0, 217, 26, 1, 0, 0, 0, 218, 219, 5, 102, 0, 0, 219, 220, 5, 111, 0, 0, 220, 221, 5, 114, 0, 0, 221, 28, 1, 0, 0, 0, 222, 223, 5, 44, 0, 0, 223, 30, 1, 0, 0, 0, 224, 225, 5, 105, 0, 0, 225, 226, 5, 110, 0, 0, 226, 32, 1, 0, 0, 0, 227, 228, 5, 102, 0, 0, 228, 229, 5, 117, 0, 0, 229, 230, 5, 110, 0, 0, 230, 231, 5, 99, 0, 0, 231, 232, 5, 116, 0, 0, 232, 233, 5, 105, 0, 0, 233, 234, 5, 111, 0, 0, 234, 235, 5, 110, 0, 0, 235, 34, 1, 0, 0, 0, 236, 237, 5, 108, 0, 0, 237, 238, 5, 111, 0, 0, 238, 239, 5, 99, 0, 0, 239, 240, 5, 97, 0, 0, 240, 241, 5, 108, 0, 0, 241, 36, 1, 0, 0, 0, 242, 243, 5, 60, 0, 0, 243, 38, 1, 0, 0, 0, 244, 245, 5, 62, 0, 0, 245, 40, 1, 0, 0, 0, 246, 247, 5, 114, 0, 0, 247, 248, 5, 101, 0, 0, 248, 249, 5, 116, 0, 0, 249, 250, 5, 117, 0, 0, 250, 251, 5, 114, 0, 0, 251, 252, 5, 110, 0, 0, 252, 42, 1, 0, 0, 0, 253, 254, 5, 99, 0, 0, 254, 255, 5, 111, 0, 0, 255, 256, 5, 110, 0, 0, 256, 257, 5, 116, 0, 0, 257, 258, 5, 105, 0, 0, 258, 259, 5, 110, 0, 0, 259, 260, 5, 117, 0, 0, 260, 261, 5, 101, 0, 0, 261, 44, 1, 0, 0, 0, 262, 263, 5, 58, 0, 0, 263, 264, 5, 58, 0, 0, 264, 46, 1, 0, 0, 0, 265, 266, 5, 110, 0, 0, 266, 267, 5, 105, 0, 0, 267, 268, 5, 108, 0, 0, 268, 48, 1, 0, 0, 0, 269, 270, 5, 102, 0, 0, 270, 271, 5, 97, 0, 0, 271, 272, 5, 108, 0, 0, 272, 273, 5, 115, 0, 0, 273, 274, 5, 101, 0, 0, 274, 50, 1, 0, 0, 0, 275, 276, 5, 116, 0, 0, 276, 277, 5, 114, 0, 0, 277, 278, 5, 117, 0, 0, 278, 279, 5, 101, 0, 0, 279, 52, 1, 0, 0, 0, 280, 281, 5, 46, 0, 0, 281, 54, 1, 0, 0, 0, 282, 283, 5, 126, 0, 0, 283, 56, 1, 0, 0, 0, 284, 285, 5, 45, 0, 0, 285, 58, 1, 0, 0, 0, 286, 287, 5, 35, 0, 0, 287, 60, 1, 0, 0, 0, 288, 289, 5, 40, 0, 0, 289, 62, 1, 0, 0, 0, 290, 291, 5, 41, 0, 0, 291, 64, 1, 0, 0, 0, 292, 293, 5, 110, 0, 0, 293, 294, 5, 111, 0, 0, 294, 295, 5, 116, 0, 0, 295, 66, 1, 0, 0, 0, 296, 297, 5, 60, 0, 0, 297, 298, 5, 60, 0, 0, 298, 68, 1, 0, 0, 0, 299, 300, 5, 62, 0, 0, 300, 301, 5, 62, 0, 0, 301, 70, 1, 0, 0, 0, 302, 303, 5, 38, 0, 0, 303, 72, 1, 0, 0, 0, 304, 305, 5, 47, 0, 0, 305, 306, 5, 47, 0, 0, 306, 74, 1, 0, 0, 0, 307, 308, 5, 37, 0, 0, 308, 76, 1, 0, 0, 0, 309, 310, 5, 58, 0, 0, 310, 78, 1, 0, 0, 0, 311, 312, 5, 60, 0, 0, 312, 313, 5, 61, 0, 0, 313, 80, 1, 0, 0, 0, 314, 315, 5, 62, 0, 0, 315, 316, 5, 61, 0, 0, 316, 82, 1, 0, 0, 0, 317, 318, 5, 97, 0, 0, 318, 319, 5, 110, 0, 0, 319, 320, 5, 100, 0, 0, 320, 84, 1, 0, 0, 0, 321, 322, 5, 111, 0, 0, 322, 323, 5, 114, 0, 0, 323, 86, 1, 0, 0, 0, 324, 325, 5, 43, 0, 0, 325, 88, 1, 0, 0, 0, 326, 327, 5, 42, 0, 0, 327, 90, 1, 0, 0, 0, 328, 329, 5, 123, 0, 0, 329, 92, 1, 0, 0, 0, 330, 331, 5, 125, 0, 0, 331, 94, 1, 0, 0, 0, 332, 333, 5, 91, 0, 0, 333, 96, 1, 0, 0, 0, 334, 335, 5, 93, 0, 0, 335, 98, 1, 0, 0, 0, 336, 337, 5, 61, 0, 0, 337, 338, 5, 61, 0, 0, 338, 100, 1, 0, 0, 0, 339, 340, 5, 46, 0, 0, 340, 341, 5, 46, 0, 0, 341, 102, 1, 0, 0, 0, 342, 343, 5, 124, 0, 0, 343, 104, 1, 0, 0, 0, 344, 345, 5, 94, 0, 0, 345, 106, 1, 0, 0, 0, 346, 347, 5, 47, 0, 0, 347, 108, 1, 0, 0, 0, 348, 349, 5, 46, 0, 0, 349, 350, 5, 46, 0, 0, 350, 351, 5, 46, 0, 0, 351, 110, 1, 0, 0, 0, 352, 353, 5, 126, 0, 0, 353, 354, 5, 61, 0, 0, 354, 112, 1, 0, 0, 0, 355, 359, 7, 0, 0, 0, 356, 358, 7, 1, 0, 0, 357, 356, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 114, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 367, 5, 34, 0, 0, 363, 366, 3, 135, 67, 0, 364, 366, 8, 2, 0, 0, 365, 363, 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, 370, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 371, 5, 34, 0, 0, 371, 116, 1, 0, 0, 0, 372, 377, 5, 39, 0, 0, 373, 376, 3, 135, 67, 0, 374, 376, 8, 3, 0, 0, 375, 373, 1, 0, 0, 0, 375, 374, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 380, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 381, 5, 39, 0, 0, 381, 118, 1, 0, 0, 0, 382, 383, 5, 91, 0, 0, 383, 384, 3, 121, 60, 0, 384, 385, 5, 93, 0, 0, 385, 120, 1, 0, 0, 0, 386, 387, 5, 61, 0, 0, 387, 388, 3, 121, 60, 0, 388, 389, 5, 61, 0, 0, 389, 399, 1, 0, 0, 0, 390, 394, 5, 91, 0, 0, 391, 393, 9, 0, 0, 0, 392, 391, 1, 0, 0, 0, 393, 396, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 395, 397, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 397, 399, 5, 93, 0, 0, 398, 386, 1, 0, 0, 0, 398, 390, 1, 0, 0, 0, 399, 122, 1, 0, 0, 0, 400, 402, 3, 143, 71, 0, 401, 400, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 124, 1, 0, 0, 0, 405, 406, 5, 48, 0, 0, 406, 408, 7, 4, 0, 0, 407, 409, 3, 145, 72, 0, 408, 407, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 126, 1, 0, 0, 0, 412, 414, 3, 143, 71, 0, 413, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 421, 5, 46, 0, 0, 418, 420, 3, 143, 71, 0, 419, 418, 1, 0, 0, 0, 420, 423, 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 425, 1, 0, 0, 0, 423, 421, 1, 0, 0, 0, 424, 426, 3, 131, 65, 0, 425, 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 444, 1, 0, 0, 0, 427, 429, 5, 46, 0, 0, 428, 430, 3, 143, 71, 0, 429, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 434, 1, 0, 0, 0, 433, 435, 3, 131, 65, 0, 434, 433, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 444, 1, 0, 0, 0, 436, 438, 3, 143, 71, 0, 437, 436, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 442, 3, 131, 65, 0, 442, 444, 1, 0, 0, 0, 443, 413, 1, 0, 0, 0, 443, 427, 1, 0, 0, 0, 443, 437, 1, 0, 0, 0, 444, 128, 1, 0, 0, 0, 445, 446, 5, 48, 0, 0, 446, 448, 7, 4, 0, 0, 447, 449, 3, 145, 72, 0, 448, 447, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 456, 5, 46, 0, 0, 453, 455, 3, 145, 72, 0, 454, 453, 1, 0, 0, 0, 455, 458, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 459, 461, 3, 133, 66, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 483, 1, 0, 0, 0, 462, 463, 5, 48, 0, 0, 463, 464, 7, 4, 0, 0, 464, 466, 5, 46, 0, 0, 465, 467, 3, 145, 72, 0, 466, 465, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 472, 3, 133, 66, 0, 471, 470, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 483, 1, 0, 0, 0, 473, 474, 5, 48, 0, 0, 474, 476, 7, 4, 0, 0, 475, 477, 3, 145, 72, 0, 476, 475, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 481, 3, 133, 66, 0, 481, 483, 1, 0, 0, 0, 482, 445, 1, 0, 0, 0, 482, 462, 1, 0, 0, 0, 482, 473, 1, 0, 0, 0, 483, 130, 1, 0, 0, 0, 484, 486, 7, 5, 0, 0, 485, 487, 7, 6, 0, 0, 486, 485, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 489, 1, 0, 0, 0, 488, 490, 3, 143, 71, 0, 489, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 132, 1, 0, 0, 0, 493, 495, 7, 7, 0, 0, 494, 496, 7, 6, 0, 0, 495, 494, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, 499, 3, 143, 71, 0, 498, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 134, 1, 0, 0, 0, 502, 503, 5, 92, 0, 0, 503, 513, 7, 8, 0, 0, 504, 506, 5, 92, 0, 0, 505, 507, 5, 13, 0, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 513, 5, 10, 0, 0, 509, 513, 3, 137, 68, 0, 510, 513, 3, 139, 69, 0, 511, 513, 3, 141, 70, 0, 512, 502, 1, 0, 0, 0, 512, 504, 1, 0, 0, 0, 512, 509, 1, 0, 0, 0, 512, 510, 1, 0, 0, 0, 512, 511, 1, 0, 0, 0, 513, 136, 1, 0, 0, 0, 514, 515, 5, 92, 0, 0, 515, 526, 3, 143, 71, 0, 516, 517, 5, 92, 0, 0, 517, 518, 3, 143, 71, 0, 518, 519, 3, 143, 71, 0, 519, 526, 1, 0, 0, 0, 520, 521, 5, 92, 0, 0, 521, 522, 7, 9, 0, 0, 522, 523, 3, 143, 71, 0, 523, 524, 3, 143, 71, 0, 524, 526, 1, 0, 0, 0, 525, 514, 1, 0, 0, 0, 525, 516, 1, 0, 0, 0, 525, 520, 1, 0, 0, 0, 526, 138, 1, 0, 0, 0, 527, 528, 5, 92, 0, 0, 528, 529, 5, 120, 0, 0, 529, 530, 3, 145, 72, 0, 530, 531, 3, 145, 72, 0, 531, 140, 1, 0, 0, 0, 532, 533, 5, 92, 0, 0, 533, 534, 5, 117, 0, 0, 534, 535, 5, 123, 0, 0, 535, 537, 1, 0, 0, 0, 536, 538, 3, 145, 72, 0, 537, 536, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 5, 125, 0, 0, 542, 142, 1, 0, 0, 0, 543, 544, 7, 10, 0, 0, 544, 144, 1, 0, 0, 0, 545, 546, 7, 11, 0, 0, 546, 146, 1, 0, 0, 0, 547, 548, 8, 12, 0, 0, 548, 148, 1, 0, 0, 0, 549, 550, 5, 45, 0, 0, 550, 551, 5, 45, 0, 0, 551, 552, 1, 0, 0, 0, 552, 553, 6, 74, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 6, 74, 1, 0, 555, 150, 1, 0, 0, 0, 556, 558, 7, 13, 0, 0, 557, 556, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 6, 75, 1, 0, 562, 152, 1, 0, 0, 0, 563, 564, 7, 14, 0, 0, 564, 565, 1, 0, 0, 0, 565, 566, 6, 76, 2, 0, 566, 154, 1, 0, 0, 0, 567, 568, 5, 35, 0, 0, 568, 570, 4, 77, 0, 0, 569, 571, 5, 33, 0, 0, 570, 569, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 575, 1, 0, 0, 0, 572, 574, 3, 147, 73, 0, 573, 572, 1, 0, 0, 0, 574, 577, 1, 0, 0, 0, 575, 573, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 578, 1, 0, 0, 0, 577, 575, 1, 0, 0, 0, 578, 579, 6, 77, 1, 0, 579, 156, 1, 0, 0, 0, 35, 0, 359, 365, 367, 375, 377, 394, 398, 403, 410, 415, 421, 425, 431, 434, 439, 443, 450, 456, 460, 468, 471, 478, 482, 486, 491, 495, 500, 506, 512, 525, 539, 559, 570, 575, 3, 1, 74, 0, 0, 1, 0, 0, 2, 0] \ No newline at end of file +[4, 0, 67, 569, 6, -1, 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, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 5, 55, 347, 8, 55, 10, 55, 12, 55, 350, 9, 55, 1, 56, 1, 56, 1, 56, 5, 56, 355, 8, 56, 10, 56, 12, 56, 358, 9, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 5, 57, 365, 8, 57, 10, 57, 12, 57, 368, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 382, 8, 59, 10, 59, 12, 59, 385, 9, 59, 1, 59, 3, 59, 388, 8, 59, 1, 60, 4, 60, 391, 8, 60, 11, 60, 12, 60, 392, 1, 61, 1, 61, 1, 61, 4, 61, 398, 8, 61, 11, 61, 12, 61, 399, 1, 62, 4, 62, 403, 8, 62, 11, 62, 12, 62, 404, 1, 62, 1, 62, 5, 62, 409, 8, 62, 10, 62, 12, 62, 412, 9, 62, 1, 62, 3, 62, 415, 8, 62, 1, 62, 1, 62, 4, 62, 419, 8, 62, 11, 62, 12, 62, 420, 1, 62, 3, 62, 424, 8, 62, 1, 62, 4, 62, 427, 8, 62, 11, 62, 12, 62, 428, 1, 62, 1, 62, 3, 62, 433, 8, 62, 1, 63, 1, 63, 1, 63, 4, 63, 438, 8, 63, 11, 63, 12, 63, 439, 1, 63, 1, 63, 5, 63, 444, 8, 63, 10, 63, 12, 63, 447, 9, 63, 1, 63, 3, 63, 450, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 4, 63, 456, 8, 63, 11, 63, 12, 63, 457, 1, 63, 3, 63, 461, 8, 63, 1, 63, 1, 63, 1, 63, 4, 63, 466, 8, 63, 11, 63, 12, 63, 467, 1, 63, 1, 63, 3, 63, 472, 8, 63, 1, 64, 1, 64, 3, 64, 476, 8, 64, 1, 64, 4, 64, 479, 8, 64, 11, 64, 12, 64, 480, 1, 65, 1, 65, 3, 65, 485, 8, 65, 1, 65, 4, 65, 488, 8, 65, 11, 65, 12, 65, 489, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 496, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 502, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 515, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 4, 69, 527, 8, 69, 11, 69, 12, 69, 528, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 4, 74, 547, 8, 74, 11, 74, 12, 74, 548, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 3, 76, 560, 8, 76, 1, 76, 5, 76, 563, 8, 76, 10, 76, 12, 76, 566, 9, 76, 1, 76, 1, 76, 1, 383, 0, 77, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 0, 121, 60, 123, 61, 125, 62, 127, 63, 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, 145, 0, 147, 64, 149, 65, 151, 66, 153, 67, 1, 0, 15, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 2, 0, 88, 88, 120, 120, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 2, 0, 80, 80, 112, 112, 11, 0, 34, 36, 39, 39, 92, 92, 97, 98, 102, 102, 110, 110, 114, 114, 116, 116, 118, 118, 122, 122, 124, 124, 1, 0, 48, 50, 1, 0, 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 4, 0, 10, 10, 13, 13, 133, 133, 8232, 8233, 3, 0, 9, 9, 12, 13, 32, 32, 1, 0, 10, 10, 598, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 1, 155, 1, 0, 0, 0, 3, 157, 1, 0, 0, 0, 5, 159, 1, 0, 0, 0, 7, 165, 1, 0, 0, 0, 9, 170, 1, 0, 0, 0, 11, 173, 1, 0, 0, 0, 13, 177, 1, 0, 0, 0, 15, 183, 1, 0, 0, 0, 17, 190, 1, 0, 0, 0, 19, 196, 1, 0, 0, 0, 21, 199, 1, 0, 0, 0, 23, 204, 1, 0, 0, 0, 25, 211, 1, 0, 0, 0, 27, 216, 1, 0, 0, 0, 29, 220, 1, 0, 0, 0, 31, 222, 1, 0, 0, 0, 33, 225, 1, 0, 0, 0, 35, 234, 1, 0, 0, 0, 37, 240, 1, 0, 0, 0, 39, 242, 1, 0, 0, 0, 41, 244, 1, 0, 0, 0, 43, 251, 1, 0, 0, 0, 45, 254, 1, 0, 0, 0, 47, 258, 1, 0, 0, 0, 49, 264, 1, 0, 0, 0, 51, 269, 1, 0, 0, 0, 53, 271, 1, 0, 0, 0, 55, 273, 1, 0, 0, 0, 57, 275, 1, 0, 0, 0, 59, 277, 1, 0, 0, 0, 61, 279, 1, 0, 0, 0, 63, 281, 1, 0, 0, 0, 65, 285, 1, 0, 0, 0, 67, 288, 1, 0, 0, 0, 69, 291, 1, 0, 0, 0, 71, 293, 1, 0, 0, 0, 73, 296, 1, 0, 0, 0, 75, 298, 1, 0, 0, 0, 77, 300, 1, 0, 0, 0, 79, 303, 1, 0, 0, 0, 81, 306, 1, 0, 0, 0, 83, 310, 1, 0, 0, 0, 85, 313, 1, 0, 0, 0, 87, 315, 1, 0, 0, 0, 89, 317, 1, 0, 0, 0, 91, 319, 1, 0, 0, 0, 93, 321, 1, 0, 0, 0, 95, 323, 1, 0, 0, 0, 97, 325, 1, 0, 0, 0, 99, 328, 1, 0, 0, 0, 101, 331, 1, 0, 0, 0, 103, 333, 1, 0, 0, 0, 105, 335, 1, 0, 0, 0, 107, 337, 1, 0, 0, 0, 109, 341, 1, 0, 0, 0, 111, 344, 1, 0, 0, 0, 113, 351, 1, 0, 0, 0, 115, 361, 1, 0, 0, 0, 117, 371, 1, 0, 0, 0, 119, 387, 1, 0, 0, 0, 121, 390, 1, 0, 0, 0, 123, 394, 1, 0, 0, 0, 125, 432, 1, 0, 0, 0, 127, 471, 1, 0, 0, 0, 129, 473, 1, 0, 0, 0, 131, 482, 1, 0, 0, 0, 133, 501, 1, 0, 0, 0, 135, 514, 1, 0, 0, 0, 137, 516, 1, 0, 0, 0, 139, 521, 1, 0, 0, 0, 141, 532, 1, 0, 0, 0, 143, 534, 1, 0, 0, 0, 145, 536, 1, 0, 0, 0, 147, 538, 1, 0, 0, 0, 149, 546, 1, 0, 0, 0, 151, 552, 1, 0, 0, 0, 153, 556, 1, 0, 0, 0, 155, 156, 5, 59, 0, 0, 156, 2, 1, 0, 0, 0, 157, 158, 5, 61, 0, 0, 158, 4, 1, 0, 0, 0, 159, 160, 5, 98, 0, 0, 160, 161, 5, 114, 0, 0, 161, 162, 5, 101, 0, 0, 162, 163, 5, 97, 0, 0, 163, 164, 5, 107, 0, 0, 164, 6, 1, 0, 0, 0, 165, 166, 5, 103, 0, 0, 166, 167, 5, 111, 0, 0, 167, 168, 5, 116, 0, 0, 168, 169, 5, 111, 0, 0, 169, 8, 1, 0, 0, 0, 170, 171, 5, 100, 0, 0, 171, 172, 5, 111, 0, 0, 172, 10, 1, 0, 0, 0, 173, 174, 5, 101, 0, 0, 174, 175, 5, 110, 0, 0, 175, 176, 5, 100, 0, 0, 176, 12, 1, 0, 0, 0, 177, 178, 5, 119, 0, 0, 178, 179, 5, 104, 0, 0, 179, 180, 5, 105, 0, 0, 180, 181, 5, 108, 0, 0, 181, 182, 5, 101, 0, 0, 182, 14, 1, 0, 0, 0, 183, 184, 5, 114, 0, 0, 184, 185, 5, 101, 0, 0, 185, 186, 5, 112, 0, 0, 186, 187, 5, 101, 0, 0, 187, 188, 5, 97, 0, 0, 188, 189, 5, 116, 0, 0, 189, 16, 1, 0, 0, 0, 190, 191, 5, 117, 0, 0, 191, 192, 5, 110, 0, 0, 192, 193, 5, 116, 0, 0, 193, 194, 5, 105, 0, 0, 194, 195, 5, 108, 0, 0, 195, 18, 1, 0, 0, 0, 196, 197, 5, 105, 0, 0, 197, 198, 5, 102, 0, 0, 198, 20, 1, 0, 0, 0, 199, 200, 5, 116, 0, 0, 200, 201, 5, 104, 0, 0, 201, 202, 5, 101, 0, 0, 202, 203, 5, 110, 0, 0, 203, 22, 1, 0, 0, 0, 204, 205, 5, 101, 0, 0, 205, 206, 5, 108, 0, 0, 206, 207, 5, 115, 0, 0, 207, 208, 5, 101, 0, 0, 208, 209, 5, 105, 0, 0, 209, 210, 5, 102, 0, 0, 210, 24, 1, 0, 0, 0, 211, 212, 5, 101, 0, 0, 212, 213, 5, 108, 0, 0, 213, 214, 5, 115, 0, 0, 214, 215, 5, 101, 0, 0, 215, 26, 1, 0, 0, 0, 216, 217, 5, 102, 0, 0, 217, 218, 5, 111, 0, 0, 218, 219, 5, 114, 0, 0, 219, 28, 1, 0, 0, 0, 220, 221, 5, 44, 0, 0, 221, 30, 1, 0, 0, 0, 222, 223, 5, 105, 0, 0, 223, 224, 5, 110, 0, 0, 224, 32, 1, 0, 0, 0, 225, 226, 5, 102, 0, 0, 226, 227, 5, 117, 0, 0, 227, 228, 5, 110, 0, 0, 228, 229, 5, 99, 0, 0, 229, 230, 5, 116, 0, 0, 230, 231, 5, 105, 0, 0, 231, 232, 5, 111, 0, 0, 232, 233, 5, 110, 0, 0, 233, 34, 1, 0, 0, 0, 234, 235, 5, 108, 0, 0, 235, 236, 5, 111, 0, 0, 236, 237, 5, 99, 0, 0, 237, 238, 5, 97, 0, 0, 238, 239, 5, 108, 0, 0, 239, 36, 1, 0, 0, 0, 240, 241, 5, 60, 0, 0, 241, 38, 1, 0, 0, 0, 242, 243, 5, 62, 0, 0, 243, 40, 1, 0, 0, 0, 244, 245, 5, 114, 0, 0, 245, 246, 5, 101, 0, 0, 246, 247, 5, 116, 0, 0, 247, 248, 5, 117, 0, 0, 248, 249, 5, 114, 0, 0, 249, 250, 5, 110, 0, 0, 250, 42, 1, 0, 0, 0, 251, 252, 5, 58, 0, 0, 252, 253, 5, 58, 0, 0, 253, 44, 1, 0, 0, 0, 254, 255, 5, 110, 0, 0, 255, 256, 5, 105, 0, 0, 256, 257, 5, 108, 0, 0, 257, 46, 1, 0, 0, 0, 258, 259, 5, 102, 0, 0, 259, 260, 5, 97, 0, 0, 260, 261, 5, 108, 0, 0, 261, 262, 5, 115, 0, 0, 262, 263, 5, 101, 0, 0, 263, 48, 1, 0, 0, 0, 264, 265, 5, 116, 0, 0, 265, 266, 5, 114, 0, 0, 266, 267, 5, 117, 0, 0, 267, 268, 5, 101, 0, 0, 268, 50, 1, 0, 0, 0, 269, 270, 5, 46, 0, 0, 270, 52, 1, 0, 0, 0, 271, 272, 5, 126, 0, 0, 272, 54, 1, 0, 0, 0, 273, 274, 5, 45, 0, 0, 274, 56, 1, 0, 0, 0, 275, 276, 5, 35, 0, 0, 276, 58, 1, 0, 0, 0, 277, 278, 5, 40, 0, 0, 278, 60, 1, 0, 0, 0, 279, 280, 5, 41, 0, 0, 280, 62, 1, 0, 0, 0, 281, 282, 5, 110, 0, 0, 282, 283, 5, 111, 0, 0, 283, 284, 5, 116, 0, 0, 284, 64, 1, 0, 0, 0, 285, 286, 5, 60, 0, 0, 286, 287, 5, 60, 0, 0, 287, 66, 1, 0, 0, 0, 288, 289, 5, 62, 0, 0, 289, 290, 5, 62, 0, 0, 290, 68, 1, 0, 0, 0, 291, 292, 5, 38, 0, 0, 292, 70, 1, 0, 0, 0, 293, 294, 5, 47, 0, 0, 294, 295, 5, 47, 0, 0, 295, 72, 1, 0, 0, 0, 296, 297, 5, 37, 0, 0, 297, 74, 1, 0, 0, 0, 298, 299, 5, 58, 0, 0, 299, 76, 1, 0, 0, 0, 300, 301, 5, 60, 0, 0, 301, 302, 5, 61, 0, 0, 302, 78, 1, 0, 0, 0, 303, 304, 5, 62, 0, 0, 304, 305, 5, 61, 0, 0, 305, 80, 1, 0, 0, 0, 306, 307, 5, 97, 0, 0, 307, 308, 5, 110, 0, 0, 308, 309, 5, 100, 0, 0, 309, 82, 1, 0, 0, 0, 310, 311, 5, 111, 0, 0, 311, 312, 5, 114, 0, 0, 312, 84, 1, 0, 0, 0, 313, 314, 5, 43, 0, 0, 314, 86, 1, 0, 0, 0, 315, 316, 5, 42, 0, 0, 316, 88, 1, 0, 0, 0, 317, 318, 5, 123, 0, 0, 318, 90, 1, 0, 0, 0, 319, 320, 5, 125, 0, 0, 320, 92, 1, 0, 0, 0, 321, 322, 5, 91, 0, 0, 322, 94, 1, 0, 0, 0, 323, 324, 5, 93, 0, 0, 324, 96, 1, 0, 0, 0, 325, 326, 5, 61, 0, 0, 326, 327, 5, 61, 0, 0, 327, 98, 1, 0, 0, 0, 328, 329, 5, 46, 0, 0, 329, 330, 5, 46, 0, 0, 330, 100, 1, 0, 0, 0, 331, 332, 5, 124, 0, 0, 332, 102, 1, 0, 0, 0, 333, 334, 5, 94, 0, 0, 334, 104, 1, 0, 0, 0, 335, 336, 5, 47, 0, 0, 336, 106, 1, 0, 0, 0, 337, 338, 5, 46, 0, 0, 338, 339, 5, 46, 0, 0, 339, 340, 5, 46, 0, 0, 340, 108, 1, 0, 0, 0, 341, 342, 5, 126, 0, 0, 342, 343, 5, 61, 0, 0, 343, 110, 1, 0, 0, 0, 344, 348, 7, 0, 0, 0, 345, 347, 7, 1, 0, 0, 346, 345, 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 112, 1, 0, 0, 0, 350, 348, 1, 0, 0, 0, 351, 356, 5, 34, 0, 0, 352, 355, 3, 133, 66, 0, 353, 355, 8, 2, 0, 0, 354, 352, 1, 0, 0, 0, 354, 353, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 359, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 359, 360, 5, 34, 0, 0, 360, 114, 1, 0, 0, 0, 361, 366, 5, 39, 0, 0, 362, 365, 3, 133, 66, 0, 363, 365, 8, 3, 0, 0, 364, 362, 1, 0, 0, 0, 364, 363, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 370, 5, 39, 0, 0, 370, 116, 1, 0, 0, 0, 371, 372, 5, 91, 0, 0, 372, 373, 3, 119, 59, 0, 373, 374, 5, 93, 0, 0, 374, 118, 1, 0, 0, 0, 375, 376, 5, 61, 0, 0, 376, 377, 3, 119, 59, 0, 377, 378, 5, 61, 0, 0, 378, 388, 1, 0, 0, 0, 379, 383, 5, 91, 0, 0, 380, 382, 9, 0, 0, 0, 381, 380, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 386, 388, 5, 93, 0, 0, 387, 375, 1, 0, 0, 0, 387, 379, 1, 0, 0, 0, 388, 120, 1, 0, 0, 0, 389, 391, 3, 141, 70, 0, 390, 389, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 122, 1, 0, 0, 0, 394, 395, 5, 48, 0, 0, 395, 397, 7, 4, 0, 0, 396, 398, 3, 143, 71, 0, 397, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 124, 1, 0, 0, 0, 401, 403, 3, 141, 70, 0, 402, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 402, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 410, 5, 46, 0, 0, 407, 409, 3, 141, 70, 0, 408, 407, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 415, 3, 129, 64, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 433, 1, 0, 0, 0, 416, 418, 5, 46, 0, 0, 417, 419, 3, 141, 70, 0, 418, 417, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 423, 1, 0, 0, 0, 422, 424, 3, 129, 64, 0, 423, 422, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 433, 1, 0, 0, 0, 425, 427, 3, 141, 70, 0, 426, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 431, 3, 129, 64, 0, 431, 433, 1, 0, 0, 0, 432, 402, 1, 0, 0, 0, 432, 416, 1, 0, 0, 0, 432, 426, 1, 0, 0, 0, 433, 126, 1, 0, 0, 0, 434, 435, 5, 48, 0, 0, 435, 437, 7, 4, 0, 0, 436, 438, 3, 143, 71, 0, 437, 436, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 445, 5, 46, 0, 0, 442, 444, 3, 143, 71, 0, 443, 442, 1, 0, 0, 0, 444, 447, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 449, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 448, 450, 3, 131, 65, 0, 449, 448, 1, 0, 0, 0, 449, 450, 1, 0, 0, 0, 450, 472, 1, 0, 0, 0, 451, 452, 5, 48, 0, 0, 452, 453, 7, 4, 0, 0, 453, 455, 5, 46, 0, 0, 454, 456, 3, 143, 71, 0, 455, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 461, 3, 131, 65, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 472, 1, 0, 0, 0, 462, 463, 5, 48, 0, 0, 463, 465, 7, 4, 0, 0, 464, 466, 3, 143, 71, 0, 465, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 3, 131, 65, 0, 470, 472, 1, 0, 0, 0, 471, 434, 1, 0, 0, 0, 471, 451, 1, 0, 0, 0, 471, 462, 1, 0, 0, 0, 472, 128, 1, 0, 0, 0, 473, 475, 7, 5, 0, 0, 474, 476, 7, 6, 0, 0, 475, 474, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 478, 1, 0, 0, 0, 477, 479, 3, 141, 70, 0, 478, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 130, 1, 0, 0, 0, 482, 484, 7, 7, 0, 0, 483, 485, 7, 6, 0, 0, 484, 483, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 487, 1, 0, 0, 0, 486, 488, 3, 141, 70, 0, 487, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 132, 1, 0, 0, 0, 491, 492, 5, 92, 0, 0, 492, 502, 7, 8, 0, 0, 493, 495, 5, 92, 0, 0, 494, 496, 5, 13, 0, 0, 495, 494, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 502, 5, 10, 0, 0, 498, 502, 3, 135, 67, 0, 499, 502, 3, 137, 68, 0, 500, 502, 3, 139, 69, 0, 501, 491, 1, 0, 0, 0, 501, 493, 1, 0, 0, 0, 501, 498, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 501, 500, 1, 0, 0, 0, 502, 134, 1, 0, 0, 0, 503, 504, 5, 92, 0, 0, 504, 515, 3, 141, 70, 0, 505, 506, 5, 92, 0, 0, 506, 507, 3, 141, 70, 0, 507, 508, 3, 141, 70, 0, 508, 515, 1, 0, 0, 0, 509, 510, 5, 92, 0, 0, 510, 511, 7, 9, 0, 0, 511, 512, 3, 141, 70, 0, 512, 513, 3, 141, 70, 0, 513, 515, 1, 0, 0, 0, 514, 503, 1, 0, 0, 0, 514, 505, 1, 0, 0, 0, 514, 509, 1, 0, 0, 0, 515, 136, 1, 0, 0, 0, 516, 517, 5, 92, 0, 0, 517, 518, 5, 120, 0, 0, 518, 519, 3, 143, 71, 0, 519, 520, 3, 143, 71, 0, 520, 138, 1, 0, 0, 0, 521, 522, 5, 92, 0, 0, 522, 523, 5, 117, 0, 0, 523, 524, 5, 123, 0, 0, 524, 526, 1, 0, 0, 0, 525, 527, 3, 143, 71, 0, 526, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 531, 5, 125, 0, 0, 531, 140, 1, 0, 0, 0, 532, 533, 7, 10, 0, 0, 533, 142, 1, 0, 0, 0, 534, 535, 7, 11, 0, 0, 535, 144, 1, 0, 0, 0, 536, 537, 8, 12, 0, 0, 537, 146, 1, 0, 0, 0, 538, 539, 5, 45, 0, 0, 539, 540, 5, 45, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 6, 73, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 6, 73, 1, 0, 544, 148, 1, 0, 0, 0, 545, 547, 7, 13, 0, 0, 546, 545, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 551, 6, 74, 1, 0, 551, 150, 1, 0, 0, 0, 552, 553, 7, 14, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 6, 75, 2, 0, 555, 152, 1, 0, 0, 0, 556, 557, 5, 35, 0, 0, 557, 559, 4, 76, 0, 0, 558, 560, 5, 33, 0, 0, 559, 558, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 564, 1, 0, 0, 0, 561, 563, 3, 145, 72, 0, 562, 561, 1, 0, 0, 0, 563, 566, 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 567, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 567, 568, 6, 76, 1, 0, 568, 154, 1, 0, 0, 0, 35, 0, 348, 354, 356, 364, 366, 383, 387, 392, 399, 404, 410, 414, 420, 423, 428, 432, 439, 445, 449, 457, 460, 467, 471, 475, 480, 484, 489, 495, 501, 514, 528, 548, 559, 564, 3, 1, 73, 0, 0, 1, 0, 0, 2, 0] \ No newline at end of file diff --git a/src/parser/LuaLexer.tokens b/src/parser/LuaLexer.tokens index 35d3fe6..f6a42c7 100644 --- a/src/parser/LuaLexer.tokens +++ b/src/parser/LuaLexer.tokens @@ -19,53 +19,52 @@ LOCAL=18 LT=19 GT=20 RETURN=21 -CONTINUE=22 -CC=23 -NIL=24 -FALSE=25 -TRUE=26 -DOT=27 -SQUIG=28 -MINUS=29 -POUND=30 -OP=31 -CP=32 -NOT=33 -LL=34 -GG=35 -AMP=36 -SS=37 -PER=38 -COL=39 -LE=40 -GE=41 -AND=42 -OR=43 -PLUS=44 -STAR=45 -OCU=46 -CCU=47 -OB=48 -CB=49 -EE=50 -DD=51 -PIPE=52 -CARET=53 -SLASH=54 -DDD=55 -SQEQ=56 -NAME=57 -NORMALSTRING=58 -CHARSTRING=59 -LONGSTRING=60 -INT=61 -HEX=62 -FLOAT=63 -HEX_FLOAT=64 -COMMENT=65 -WS=66 -NL=67 -SHEBANG=68 +CC=22 +NIL=23 +FALSE=24 +TRUE=25 +DOT=26 +SQUIG=27 +MINUS=28 +POUND=29 +OP=30 +CP=31 +NOT=32 +LL=33 +GG=34 +AMP=35 +SS=36 +PER=37 +COL=38 +LE=39 +GE=40 +AND=41 +OR=42 +PLUS=43 +STAR=44 +OCU=45 +CCU=46 +OB=47 +CB=48 +EE=49 +DD=50 +PIPE=51 +CARET=52 +SLASH=53 +DDD=54 +SQEQ=55 +NAME=56 +NORMALSTRING=57 +CHARSTRING=58 +LONGSTRING=59 +INT=60 +HEX=61 +FLOAT=62 +HEX_FLOAT=63 +COMMENT=64 +WS=65 +NL=66 +SHEBANG=67 ';'=1 '='=2 'break'=3 @@ -87,38 +86,37 @@ SHEBANG=68 '<'=19 '>'=20 'return'=21 -'continue'=22 -'::'=23 -'nil'=24 -'false'=25 -'true'=26 -'.'=27 -'~'=28 -'-'=29 -'#'=30 -'('=31 -')'=32 -'not'=33 -'<<'=34 -'>>'=35 -'&'=36 -'//'=37 -'%'=38 -':'=39 -'<='=40 -'>='=41 -'and'=42 -'or'=43 -'+'=44 -'*'=45 -'{'=46 -'}'=47 -'['=48 -']'=49 -'=='=50 -'..'=51 -'|'=52 -'^'=53 -'/'=54 -'...'=55 -'~='=56 +'::'=22 +'nil'=23 +'false'=24 +'true'=25 +'.'=26 +'~'=27 +'-'=28 +'#'=29 +'('=30 +')'=31 +'not'=32 +'<<'=33 +'>>'=34 +'&'=35 +'//'=36 +'%'=37 +':'=38 +'<='=39 +'>='=40 +'and'=41 +'or'=42 +'+'=43 +'*'=44 +'{'=45 +'}'=46 +'['=47 +']'=48 +'=='=49 +'..'=50 +'|'=51 +'^'=52 +'/'=53 +'...'=54 +'~='=55 diff --git a/src/parser/LuaLexer.ts b/src/parser/LuaLexer.ts index df5834e..b45b4f9 100644 --- a/src/parser/LuaLexer.ts +++ b/src/parser/LuaLexer.ts @@ -35,53 +35,52 @@ export default class LuaLexer extends LuaLexerBase { public static readonly LT = 19; public static readonly GT = 20; public static readonly RETURN = 21; - public static readonly CONTINUE = 22; - public static readonly CC = 23; - public static readonly NIL = 24; - public static readonly FALSE = 25; - public static readonly TRUE = 26; - public static readonly DOT = 27; - public static readonly SQUIG = 28; - public static readonly MINUS = 29; - public static readonly POUND = 30; - public static readonly OP = 31; - public static readonly CP = 32; - public static readonly NOT = 33; - public static readonly LL = 34; - public static readonly GG = 35; - public static readonly AMP = 36; - public static readonly SS = 37; - public static readonly PER = 38; - public static readonly COL = 39; - public static readonly LE = 40; - public static readonly GE = 41; - public static readonly AND = 42; - public static readonly OR = 43; - public static readonly PLUS = 44; - public static readonly STAR = 45; - public static readonly OCU = 46; - public static readonly CCU = 47; - public static readonly OB = 48; - public static readonly CB = 49; - public static readonly EE = 50; - public static readonly DD = 51; - public static readonly PIPE = 52; - public static readonly CARET = 53; - public static readonly SLASH = 54; - public static readonly DDD = 55; - public static readonly SQEQ = 56; - public static readonly NAME = 57; - public static readonly NORMALSTRING = 58; - public static readonly CHARSTRING = 59; - public static readonly LONGSTRING = 60; - public static readonly INT = 61; - public static readonly HEX = 62; - public static readonly FLOAT = 63; - public static readonly HEX_FLOAT = 64; - public static readonly COMMENT = 65; - public static readonly WS = 66; - public static readonly NL = 67; - public static readonly SHEBANG = 68; + public static readonly CC = 22; + public static readonly NIL = 23; + public static readonly FALSE = 24; + public static readonly TRUE = 25; + public static readonly DOT = 26; + public static readonly SQUIG = 27; + public static readonly MINUS = 28; + public static readonly POUND = 29; + public static readonly OP = 30; + public static readonly CP = 31; + public static readonly NOT = 32; + public static readonly LL = 33; + public static readonly GG = 34; + public static readonly AMP = 35; + public static readonly SS = 36; + public static readonly PER = 37; + public static readonly COL = 38; + public static readonly LE = 39; + public static readonly GE = 40; + public static readonly AND = 41; + public static readonly OR = 42; + public static readonly PLUS = 43; + public static readonly STAR = 44; + public static readonly OCU = 45; + public static readonly CCU = 46; + public static readonly OB = 47; + public static readonly CB = 48; + public static readonly EE = 49; + public static readonly DD = 50; + public static readonly PIPE = 51; + public static readonly CARET = 52; + public static readonly SLASH = 53; + public static readonly DDD = 54; + public static readonly SQEQ = 55; + public static readonly NAME = 56; + public static readonly NORMALSTRING = 57; + public static readonly CHARSTRING = 58; + public static readonly LONGSTRING = 59; + public static readonly INT = 60; + public static readonly HEX = 61; + public static readonly FLOAT = 62; + public static readonly HEX_FLOAT = 63; + public static readonly COMMENT = 64; + public static readonly WS = 65; + public static readonly NL = 66; + public static readonly SHEBANG = 67; public static readonly EOF = Token.EOF; public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; @@ -97,7 +96,6 @@ export default class LuaLexer extends LuaLexerBase { "'function'", "'local'", "'<'", "'>'", "'return'", - "'continue'", "'::'", "'nil'", "'false'", "'true'", "'.'", "'~'", @@ -126,7 +124,6 @@ export default class LuaLexer extends LuaLexerBase { "IN", "FUNCTION", "LOCAL", "LT", "GT", "RETURN", - "CONTINUE", "CC", "NIL", "FALSE", "TRUE", "DOT", "SQUIG", @@ -157,14 +154,14 @@ export default class LuaLexer extends LuaLexerBase { public static readonly ruleNames: string[] = [ "SEMI", "EQ", "BREAK", "GOTO", "DO", "END", "WHILE", "REPEAT", "UNTIL", "IF", "THEN", "ELSEIF", "ELSE", "FOR", "COMMA", "IN", "FUNCTION", "LOCAL", - "LT", "GT", "RETURN", "CONTINUE", "CC", "NIL", "FALSE", "TRUE", "DOT", - "SQUIG", "MINUS", "POUND", "OP", "CP", "NOT", "LL", "GG", "AMP", "SS", - "PER", "COL", "LE", "GE", "AND", "OR", "PLUS", "STAR", "OCU", "CCU", "OB", - "CB", "EE", "DD", "PIPE", "CARET", "SLASH", "DDD", "SQEQ", "NAME", "NORMALSTRING", - "CHARSTRING", "LONGSTRING", "NESTED_STR", "INT", "HEX", "FLOAT", "HEX_FLOAT", - "ExponentPart", "HexExponentPart", "EscapeSequence", "DecimalEscape", - "HexEscape", "UtfEscape", "Digit", "HexDigit", "SingleLineInputCharacter", - "COMMENT", "WS", "NL", "SHEBANG", + "LT", "GT", "RETURN", "CC", "NIL", "FALSE", "TRUE", "DOT", "SQUIG", "MINUS", + "POUND", "OP", "CP", "NOT", "LL", "GG", "AMP", "SS", "PER", "COL", "LE", + "GE", "AND", "OR", "PLUS", "STAR", "OCU", "CCU", "OB", "CB", "EE", "DD", + "PIPE", "CARET", "SLASH", "DDD", "SQEQ", "NAME", "NORMALSTRING", "CHARSTRING", + "LONGSTRING", "NESTED_STR", "INT", "HEX", "FLOAT", "HEX_FLOAT", "ExponentPart", + "HexExponentPart", "EscapeSequence", "DecimalEscape", "HexEscape", "UtfEscape", + "Digit", "HexDigit", "SingleLineInputCharacter", "COMMENT", "WS", "NL", + "SHEBANG", ]; @@ -188,7 +185,7 @@ export default class LuaLexer extends LuaLexerBase { // @Override public action(localctx: RuleContext, ruleIndex: number, actionIndex: number): void { switch (ruleIndex) { - case 74: + case 73: this.COMMENT_action(localctx, actionIndex); break; } @@ -203,7 +200,7 @@ export default class LuaLexer extends LuaLexerBase { // @Override public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { - case 77: + case 76: return this.SHEBANG_sempred(localctx, predIndex); } return true; @@ -216,7 +213,7 @@ export default class LuaLexer extends LuaLexerBase { return true; } - public static readonly _serializedATN: number[] = [4,0,68,580,6,-1,2,0, + public static readonly _serializedATN: number[] = [4,0,67,569,6,-1,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, @@ -227,190 +224,186 @@ export default class LuaLexer extends LuaLexerBase { 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,1,0,1,0,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1, - 2,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1, - 6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,10, - 1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1, - 12,1,12,1,13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,16, - 1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,19,1, - 19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21, - 1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1, - 24,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,27,1,27,1,28,1,28,1,29,1,29,1,30, - 1,30,1,31,1,31,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,34,1,34,1,34,1,35,1, - 35,1,36,1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,39,1,40,1,40,1,40,1,41, - 1,41,1,41,1,41,1,42,1,42,1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,46,1,46,1, - 47,1,47,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,53, - 1,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56,5,56,358,8,56,10,56,12, - 56,361,9,56,1,57,1,57,1,57,5,57,366,8,57,10,57,12,57,369,9,57,1,57,1,57, - 1,58,1,58,1,58,5,58,376,8,58,10,58,12,58,379,9,58,1,58,1,58,1,59,1,59,1, - 59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,5,60,393,8,60,10,60,12,60,396,9,60, - 1,60,3,60,399,8,60,1,61,4,61,402,8,61,11,61,12,61,403,1,62,1,62,1,62,4, - 62,409,8,62,11,62,12,62,410,1,63,4,63,414,8,63,11,63,12,63,415,1,63,1,63, - 5,63,420,8,63,10,63,12,63,423,9,63,1,63,3,63,426,8,63,1,63,1,63,4,63,430, - 8,63,11,63,12,63,431,1,63,3,63,435,8,63,1,63,4,63,438,8,63,11,63,12,63, - 439,1,63,1,63,3,63,444,8,63,1,64,1,64,1,64,4,64,449,8,64,11,64,12,64,450, - 1,64,1,64,5,64,455,8,64,10,64,12,64,458,9,64,1,64,3,64,461,8,64,1,64,1, - 64,1,64,1,64,4,64,467,8,64,11,64,12,64,468,1,64,3,64,472,8,64,1,64,1,64, - 1,64,4,64,477,8,64,11,64,12,64,478,1,64,1,64,3,64,483,8,64,1,65,1,65,3, - 65,487,8,65,1,65,4,65,490,8,65,11,65,12,65,491,1,66,1,66,3,66,496,8,66, - 1,66,4,66,499,8,66,11,66,12,66,500,1,67,1,67,1,67,1,67,3,67,507,8,67,1, - 67,1,67,1,67,1,67,3,67,513,8,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68, - 1,68,1,68,1,68,3,68,526,8,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1, - 70,1,70,4,70,538,8,70,11,70,12,70,539,1,70,1,70,1,71,1,71,1,72,1,72,1,73, - 1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,4,75,558,8,75,11,75,12,75, - 559,1,75,1,75,1,76,1,76,1,76,1,76,1,77,1,77,1,77,3,77,571,8,77,1,77,5,77, - 574,8,77,10,77,12,77,577,9,77,1,77,1,77,1,394,0,78,1,1,3,2,5,3,7,4,9,5, - 11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35, - 18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59, - 30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83, - 42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53, - 107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,0,123,61,125,62,127, - 63,129,64,131,0,133,0,135,0,137,0,139,0,141,0,143,0,145,0,147,0,149,65, - 151,66,153,67,155,68,1,0,15,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95, - 97,122,2,0,34,34,92,92,2,0,39,39,92,92,2,0,88,88,120,120,2,0,69,69,101, - 101,2,0,43,43,45,45,2,0,80,80,112,112,11,0,34,36,39,39,92,92,97,98,102, - 102,110,110,114,114,116,116,118,118,122,122,124,124,1,0,48,50,1,0,48,57, - 3,0,48,57,65,70,97,102,4,0,10,10,13,13,133,133,8232,8233,3,0,9,9,12,13, - 32,32,1,0,10,10,609,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9, - 1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0, - 0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31, - 1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0, - 0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53, - 1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0, - 0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75, - 1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0, - 0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97, - 1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1, - 0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0, - 0,0,0,119,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0, - 0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,1,157,1,0,0,0, - 3,159,1,0,0,0,5,161,1,0,0,0,7,167,1,0,0,0,9,172,1,0,0,0,11,175,1,0,0,0, - 13,179,1,0,0,0,15,185,1,0,0,0,17,192,1,0,0,0,19,198,1,0,0,0,21,201,1,0, - 0,0,23,206,1,0,0,0,25,213,1,0,0,0,27,218,1,0,0,0,29,222,1,0,0,0,31,224, - 1,0,0,0,33,227,1,0,0,0,35,236,1,0,0,0,37,242,1,0,0,0,39,244,1,0,0,0,41, - 246,1,0,0,0,43,253,1,0,0,0,45,262,1,0,0,0,47,265,1,0,0,0,49,269,1,0,0,0, - 51,275,1,0,0,0,53,280,1,0,0,0,55,282,1,0,0,0,57,284,1,0,0,0,59,286,1,0, - 0,0,61,288,1,0,0,0,63,290,1,0,0,0,65,292,1,0,0,0,67,296,1,0,0,0,69,299, - 1,0,0,0,71,302,1,0,0,0,73,304,1,0,0,0,75,307,1,0,0,0,77,309,1,0,0,0,79, - 311,1,0,0,0,81,314,1,0,0,0,83,317,1,0,0,0,85,321,1,0,0,0,87,324,1,0,0,0, - 89,326,1,0,0,0,91,328,1,0,0,0,93,330,1,0,0,0,95,332,1,0,0,0,97,334,1,0, - 0,0,99,336,1,0,0,0,101,339,1,0,0,0,103,342,1,0,0,0,105,344,1,0,0,0,107, - 346,1,0,0,0,109,348,1,0,0,0,111,352,1,0,0,0,113,355,1,0,0,0,115,362,1,0, - 0,0,117,372,1,0,0,0,119,382,1,0,0,0,121,398,1,0,0,0,123,401,1,0,0,0,125, - 405,1,0,0,0,127,443,1,0,0,0,129,482,1,0,0,0,131,484,1,0,0,0,133,493,1,0, - 0,0,135,512,1,0,0,0,137,525,1,0,0,0,139,527,1,0,0,0,141,532,1,0,0,0,143, - 543,1,0,0,0,145,545,1,0,0,0,147,547,1,0,0,0,149,549,1,0,0,0,151,557,1,0, - 0,0,153,563,1,0,0,0,155,567,1,0,0,0,157,158,5,59,0,0,158,2,1,0,0,0,159, - 160,5,61,0,0,160,4,1,0,0,0,161,162,5,98,0,0,162,163,5,114,0,0,163,164,5, - 101,0,0,164,165,5,97,0,0,165,166,5,107,0,0,166,6,1,0,0,0,167,168,5,103, - 0,0,168,169,5,111,0,0,169,170,5,116,0,0,170,171,5,111,0,0,171,8,1,0,0,0, - 172,173,5,100,0,0,173,174,5,111,0,0,174,10,1,0,0,0,175,176,5,101,0,0,176, - 177,5,110,0,0,177,178,5,100,0,0,178,12,1,0,0,0,179,180,5,119,0,0,180,181, - 5,104,0,0,181,182,5,105,0,0,182,183,5,108,0,0,183,184,5,101,0,0,184,14, - 1,0,0,0,185,186,5,114,0,0,186,187,5,101,0,0,187,188,5,112,0,0,188,189,5, - 101,0,0,189,190,5,97,0,0,190,191,5,116,0,0,191,16,1,0,0,0,192,193,5,117, - 0,0,193,194,5,110,0,0,194,195,5,116,0,0,195,196,5,105,0,0,196,197,5,108, - 0,0,197,18,1,0,0,0,198,199,5,105,0,0,199,200,5,102,0,0,200,20,1,0,0,0,201, - 202,5,116,0,0,202,203,5,104,0,0,203,204,5,101,0,0,204,205,5,110,0,0,205, - 22,1,0,0,0,206,207,5,101,0,0,207,208,5,108,0,0,208,209,5,115,0,0,209,210, - 5,101,0,0,210,211,5,105,0,0,211,212,5,102,0,0,212,24,1,0,0,0,213,214,5, - 101,0,0,214,215,5,108,0,0,215,216,5,115,0,0,216,217,5,101,0,0,217,26,1, - 0,0,0,218,219,5,102,0,0,219,220,5,111,0,0,220,221,5,114,0,0,221,28,1,0, - 0,0,222,223,5,44,0,0,223,30,1,0,0,0,224,225,5,105,0,0,225,226,5,110,0,0, - 226,32,1,0,0,0,227,228,5,102,0,0,228,229,5,117,0,0,229,230,5,110,0,0,230, - 231,5,99,0,0,231,232,5,116,0,0,232,233,5,105,0,0,233,234,5,111,0,0,234, - 235,5,110,0,0,235,34,1,0,0,0,236,237,5,108,0,0,237,238,5,111,0,0,238,239, - 5,99,0,0,239,240,5,97,0,0,240,241,5,108,0,0,241,36,1,0,0,0,242,243,5,60, - 0,0,243,38,1,0,0,0,244,245,5,62,0,0,245,40,1,0,0,0,246,247,5,114,0,0,247, - 248,5,101,0,0,248,249,5,116,0,0,249,250,5,117,0,0,250,251,5,114,0,0,251, - 252,5,110,0,0,252,42,1,0,0,0,253,254,5,99,0,0,254,255,5,111,0,0,255,256, - 5,110,0,0,256,257,5,116,0,0,257,258,5,105,0,0,258,259,5,110,0,0,259,260, - 5,117,0,0,260,261,5,101,0,0,261,44,1,0,0,0,262,263,5,58,0,0,263,264,5,58, - 0,0,264,46,1,0,0,0,265,266,5,110,0,0,266,267,5,105,0,0,267,268,5,108,0, - 0,268,48,1,0,0,0,269,270,5,102,0,0,270,271,5,97,0,0,271,272,5,108,0,0,272, - 273,5,115,0,0,273,274,5,101,0,0,274,50,1,0,0,0,275,276,5,116,0,0,276,277, - 5,114,0,0,277,278,5,117,0,0,278,279,5,101,0,0,279,52,1,0,0,0,280,281,5, - 46,0,0,281,54,1,0,0,0,282,283,5,126,0,0,283,56,1,0,0,0,284,285,5,45,0,0, - 285,58,1,0,0,0,286,287,5,35,0,0,287,60,1,0,0,0,288,289,5,40,0,0,289,62, - 1,0,0,0,290,291,5,41,0,0,291,64,1,0,0,0,292,293,5,110,0,0,293,294,5,111, - 0,0,294,295,5,116,0,0,295,66,1,0,0,0,296,297,5,60,0,0,297,298,5,60,0,0, - 298,68,1,0,0,0,299,300,5,62,0,0,300,301,5,62,0,0,301,70,1,0,0,0,302,303, - 5,38,0,0,303,72,1,0,0,0,304,305,5,47,0,0,305,306,5,47,0,0,306,74,1,0,0, - 0,307,308,5,37,0,0,308,76,1,0,0,0,309,310,5,58,0,0,310,78,1,0,0,0,311,312, - 5,60,0,0,312,313,5,61,0,0,313,80,1,0,0,0,314,315,5,62,0,0,315,316,5,61, - 0,0,316,82,1,0,0,0,317,318,5,97,0,0,318,319,5,110,0,0,319,320,5,100,0,0, - 320,84,1,0,0,0,321,322,5,111,0,0,322,323,5,114,0,0,323,86,1,0,0,0,324,325, - 5,43,0,0,325,88,1,0,0,0,326,327,5,42,0,0,327,90,1,0,0,0,328,329,5,123,0, - 0,329,92,1,0,0,0,330,331,5,125,0,0,331,94,1,0,0,0,332,333,5,91,0,0,333, - 96,1,0,0,0,334,335,5,93,0,0,335,98,1,0,0,0,336,337,5,61,0,0,337,338,5,61, - 0,0,338,100,1,0,0,0,339,340,5,46,0,0,340,341,5,46,0,0,341,102,1,0,0,0,342, - 343,5,124,0,0,343,104,1,0,0,0,344,345,5,94,0,0,345,106,1,0,0,0,346,347, - 5,47,0,0,347,108,1,0,0,0,348,349,5,46,0,0,349,350,5,46,0,0,350,351,5,46, - 0,0,351,110,1,0,0,0,352,353,5,126,0,0,353,354,5,61,0,0,354,112,1,0,0,0, - 355,359,7,0,0,0,356,358,7,1,0,0,357,356,1,0,0,0,358,361,1,0,0,0,359,357, - 1,0,0,0,359,360,1,0,0,0,360,114,1,0,0,0,361,359,1,0,0,0,362,367,5,34,0, - 0,363,366,3,135,67,0,364,366,8,2,0,0,365,363,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,370,1,0,0,0,369,367,1,0, - 0,0,370,371,5,34,0,0,371,116,1,0,0,0,372,377,5,39,0,0,373,376,3,135,67, - 0,374,376,8,3,0,0,375,373,1,0,0,0,375,374,1,0,0,0,376,379,1,0,0,0,377,375, - 1,0,0,0,377,378,1,0,0,0,378,380,1,0,0,0,379,377,1,0,0,0,380,381,5,39,0, - 0,381,118,1,0,0,0,382,383,5,91,0,0,383,384,3,121,60,0,384,385,5,93,0,0, - 385,120,1,0,0,0,386,387,5,61,0,0,387,388,3,121,60,0,388,389,5,61,0,0,389, - 399,1,0,0,0,390,394,5,91,0,0,391,393,9,0,0,0,392,391,1,0,0,0,393,396,1, - 0,0,0,394,395,1,0,0,0,394,392,1,0,0,0,395,397,1,0,0,0,396,394,1,0,0,0,397, - 399,5,93,0,0,398,386,1,0,0,0,398,390,1,0,0,0,399,122,1,0,0,0,400,402,3, - 143,71,0,401,400,1,0,0,0,402,403,1,0,0,0,403,401,1,0,0,0,403,404,1,0,0, - 0,404,124,1,0,0,0,405,406,5,48,0,0,406,408,7,4,0,0,407,409,3,145,72,0,408, - 407,1,0,0,0,409,410,1,0,0,0,410,408,1,0,0,0,410,411,1,0,0,0,411,126,1,0, - 0,0,412,414,3,143,71,0,413,412,1,0,0,0,414,415,1,0,0,0,415,413,1,0,0,0, - 415,416,1,0,0,0,416,417,1,0,0,0,417,421,5,46,0,0,418,420,3,143,71,0,419, - 418,1,0,0,0,420,423,1,0,0,0,421,419,1,0,0,0,421,422,1,0,0,0,422,425,1,0, - 0,0,423,421,1,0,0,0,424,426,3,131,65,0,425,424,1,0,0,0,425,426,1,0,0,0, - 426,444,1,0,0,0,427,429,5,46,0,0,428,430,3,143,71,0,429,428,1,0,0,0,430, - 431,1,0,0,0,431,429,1,0,0,0,431,432,1,0,0,0,432,434,1,0,0,0,433,435,3,131, - 65,0,434,433,1,0,0,0,434,435,1,0,0,0,435,444,1,0,0,0,436,438,3,143,71,0, - 437,436,1,0,0,0,438,439,1,0,0,0,439,437,1,0,0,0,439,440,1,0,0,0,440,441, - 1,0,0,0,441,442,3,131,65,0,442,444,1,0,0,0,443,413,1,0,0,0,443,427,1,0, - 0,0,443,437,1,0,0,0,444,128,1,0,0,0,445,446,5,48,0,0,446,448,7,4,0,0,447, - 449,3,145,72,0,448,447,1,0,0,0,449,450,1,0,0,0,450,448,1,0,0,0,450,451, - 1,0,0,0,451,452,1,0,0,0,452,456,5,46,0,0,453,455,3,145,72,0,454,453,1,0, - 0,0,455,458,1,0,0,0,456,454,1,0,0,0,456,457,1,0,0,0,457,460,1,0,0,0,458, - 456,1,0,0,0,459,461,3,133,66,0,460,459,1,0,0,0,460,461,1,0,0,0,461,483, - 1,0,0,0,462,463,5,48,0,0,463,464,7,4,0,0,464,466,5,46,0,0,465,467,3,145, - 72,0,466,465,1,0,0,0,467,468,1,0,0,0,468,466,1,0,0,0,468,469,1,0,0,0,469, - 471,1,0,0,0,470,472,3,133,66,0,471,470,1,0,0,0,471,472,1,0,0,0,472,483, - 1,0,0,0,473,474,5,48,0,0,474,476,7,4,0,0,475,477,3,145,72,0,476,475,1,0, - 0,0,477,478,1,0,0,0,478,476,1,0,0,0,478,479,1,0,0,0,479,480,1,0,0,0,480, - 481,3,133,66,0,481,483,1,0,0,0,482,445,1,0,0,0,482,462,1,0,0,0,482,473, - 1,0,0,0,483,130,1,0,0,0,484,486,7,5,0,0,485,487,7,6,0,0,486,485,1,0,0,0, - 486,487,1,0,0,0,487,489,1,0,0,0,488,490,3,143,71,0,489,488,1,0,0,0,490, - 491,1,0,0,0,491,489,1,0,0,0,491,492,1,0,0,0,492,132,1,0,0,0,493,495,7,7, - 0,0,494,496,7,6,0,0,495,494,1,0,0,0,495,496,1,0,0,0,496,498,1,0,0,0,497, - 499,3,143,71,0,498,497,1,0,0,0,499,500,1,0,0,0,500,498,1,0,0,0,500,501, - 1,0,0,0,501,134,1,0,0,0,502,503,5,92,0,0,503,513,7,8,0,0,504,506,5,92,0, - 0,505,507,5,13,0,0,506,505,1,0,0,0,506,507,1,0,0,0,507,508,1,0,0,0,508, - 513,5,10,0,0,509,513,3,137,68,0,510,513,3,139,69,0,511,513,3,141,70,0,512, - 502,1,0,0,0,512,504,1,0,0,0,512,509,1,0,0,0,512,510,1,0,0,0,512,511,1,0, - 0,0,513,136,1,0,0,0,514,515,5,92,0,0,515,526,3,143,71,0,516,517,5,92,0, - 0,517,518,3,143,71,0,518,519,3,143,71,0,519,526,1,0,0,0,520,521,5,92,0, - 0,521,522,7,9,0,0,522,523,3,143,71,0,523,524,3,143,71,0,524,526,1,0,0,0, - 525,514,1,0,0,0,525,516,1,0,0,0,525,520,1,0,0,0,526,138,1,0,0,0,527,528, - 5,92,0,0,528,529,5,120,0,0,529,530,3,145,72,0,530,531,3,145,72,0,531,140, - 1,0,0,0,532,533,5,92,0,0,533,534,5,117,0,0,534,535,5,123,0,0,535,537,1, - 0,0,0,536,538,3,145,72,0,537,536,1,0,0,0,538,539,1,0,0,0,539,537,1,0,0, - 0,539,540,1,0,0,0,540,541,1,0,0,0,541,542,5,125,0,0,542,142,1,0,0,0,543, - 544,7,10,0,0,544,144,1,0,0,0,545,546,7,11,0,0,546,146,1,0,0,0,547,548,8, - 12,0,0,548,148,1,0,0,0,549,550,5,45,0,0,550,551,5,45,0,0,551,552,1,0,0, - 0,552,553,6,74,0,0,553,554,1,0,0,0,554,555,6,74,1,0,555,150,1,0,0,0,556, - 558,7,13,0,0,557,556,1,0,0,0,558,559,1,0,0,0,559,557,1,0,0,0,559,560,1, - 0,0,0,560,561,1,0,0,0,561,562,6,75,1,0,562,152,1,0,0,0,563,564,7,14,0,0, - 564,565,1,0,0,0,565,566,6,76,2,0,566,154,1,0,0,0,567,568,5,35,0,0,568,570, - 4,77,0,0,569,571,5,33,0,0,570,569,1,0,0,0,570,571,1,0,0,0,571,575,1,0,0, - 0,572,574,3,147,73,0,573,572,1,0,0,0,574,577,1,0,0,0,575,573,1,0,0,0,575, - 576,1,0,0,0,576,578,1,0,0,0,577,575,1,0,0,0,578,579,6,77,1,0,579,156,1, - 0,0,0,35,0,359,365,367,375,377,394,398,403,410,415,421,425,431,434,439, - 443,450,456,460,468,471,478,482,486,491,495,500,506,512,525,539,559,570, - 575,3,1,74,0,0,1,0,0,2,0]; + 74,2,75,7,75,2,76,7,76,1,0,1,0,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3, + 1,3,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7, + 1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,10, + 1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1, + 13,1,13,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1, + 20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,23,1,23, + 1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,26,1,26,1,27,1, + 27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,33, + 1,33,1,33,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,37,1,37,1,38,1,38,1,38,1, + 39,1,39,1,39,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,42,1,42,1,43,1,43,1,44, + 1,44,1,45,1,45,1,46,1,46,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1,50,1, + 50,1,51,1,51,1,52,1,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,55,1,55,5,55, + 347,8,55,10,55,12,55,350,9,55,1,56,1,56,1,56,5,56,355,8,56,10,56,12,56, + 358,9,56,1,56,1,56,1,57,1,57,1,57,5,57,365,8,57,10,57,12,57,368,9,57,1, + 57,1,57,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,5,59,382,8,59, + 10,59,12,59,385,9,59,1,59,3,59,388,8,59,1,60,4,60,391,8,60,11,60,12,60, + 392,1,61,1,61,1,61,4,61,398,8,61,11,61,12,61,399,1,62,4,62,403,8,62,11, + 62,12,62,404,1,62,1,62,5,62,409,8,62,10,62,12,62,412,9,62,1,62,3,62,415, + 8,62,1,62,1,62,4,62,419,8,62,11,62,12,62,420,1,62,3,62,424,8,62,1,62,4, + 62,427,8,62,11,62,12,62,428,1,62,1,62,3,62,433,8,62,1,63,1,63,1,63,4,63, + 438,8,63,11,63,12,63,439,1,63,1,63,5,63,444,8,63,10,63,12,63,447,9,63,1, + 63,3,63,450,8,63,1,63,1,63,1,63,1,63,4,63,456,8,63,11,63,12,63,457,1,63, + 3,63,461,8,63,1,63,1,63,1,63,4,63,466,8,63,11,63,12,63,467,1,63,1,63,3, + 63,472,8,63,1,64,1,64,3,64,476,8,64,1,64,4,64,479,8,64,11,64,12,64,480, + 1,65,1,65,3,65,485,8,65,1,65,4,65,488,8,65,11,65,12,65,489,1,66,1,66,1, + 66,1,66,3,66,496,8,66,1,66,1,66,1,66,1,66,3,66,502,8,66,1,67,1,67,1,67, + 1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,515,8,67,1,68,1,68,1,68,1, + 68,1,68,1,69,1,69,1,69,1,69,1,69,4,69,527,8,69,11,69,12,69,528,1,69,1,69, + 1,70,1,70,1,71,1,71,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,74,4, + 74,547,8,74,11,74,12,74,548,1,74,1,74,1,75,1,75,1,75,1,75,1,76,1,76,1,76, + 3,76,560,8,76,1,76,5,76,563,8,76,10,76,12,76,566,9,76,1,76,1,76,1,383,0, + 77,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14, + 29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26, + 53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38, + 77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50, + 101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,0,121, + 60,123,61,125,62,127,63,129,0,131,0,133,0,135,0,137,0,139,0,141,0,143,0, + 145,0,147,64,149,65,151,66,153,67,1,0,15,3,0,65,90,95,95,97,122,4,0,48, + 57,65,90,95,95,97,122,2,0,34,34,92,92,2,0,39,39,92,92,2,0,88,88,120,120, + 2,0,69,69,101,101,2,0,43,43,45,45,2,0,80,80,112,112,11,0,34,36,39,39,92, + 92,97,98,102,102,110,110,114,114,116,116,118,118,122,122,124,124,1,0,48, + 50,1,0,48,57,3,0,48,57,65,70,97,102,4,0,10,10,13,13,133,133,8232,8233,3, + 0,9,9,12,13,32,32,1,0,10,10,598,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7, + 1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0, + 0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1, + 0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0, + 0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1, + 0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0, + 0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1, + 0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0, + 0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1, + 0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0, + 0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0, + 0,117,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0, + 147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,1,155,1,0,0,0,3,157, + 1,0,0,0,5,159,1,0,0,0,7,165,1,0,0,0,9,170,1,0,0,0,11,173,1,0,0,0,13,177, + 1,0,0,0,15,183,1,0,0,0,17,190,1,0,0,0,19,196,1,0,0,0,21,199,1,0,0,0,23, + 204,1,0,0,0,25,211,1,0,0,0,27,216,1,0,0,0,29,220,1,0,0,0,31,222,1,0,0,0, + 33,225,1,0,0,0,35,234,1,0,0,0,37,240,1,0,0,0,39,242,1,0,0,0,41,244,1,0, + 0,0,43,251,1,0,0,0,45,254,1,0,0,0,47,258,1,0,0,0,49,264,1,0,0,0,51,269, + 1,0,0,0,53,271,1,0,0,0,55,273,1,0,0,0,57,275,1,0,0,0,59,277,1,0,0,0,61, + 279,1,0,0,0,63,281,1,0,0,0,65,285,1,0,0,0,67,288,1,0,0,0,69,291,1,0,0,0, + 71,293,1,0,0,0,73,296,1,0,0,0,75,298,1,0,0,0,77,300,1,0,0,0,79,303,1,0, + 0,0,81,306,1,0,0,0,83,310,1,0,0,0,85,313,1,0,0,0,87,315,1,0,0,0,89,317, + 1,0,0,0,91,319,1,0,0,0,93,321,1,0,0,0,95,323,1,0,0,0,97,325,1,0,0,0,99, + 328,1,0,0,0,101,331,1,0,0,0,103,333,1,0,0,0,105,335,1,0,0,0,107,337,1,0, + 0,0,109,341,1,0,0,0,111,344,1,0,0,0,113,351,1,0,0,0,115,361,1,0,0,0,117, + 371,1,0,0,0,119,387,1,0,0,0,121,390,1,0,0,0,123,394,1,0,0,0,125,432,1,0, + 0,0,127,471,1,0,0,0,129,473,1,0,0,0,131,482,1,0,0,0,133,501,1,0,0,0,135, + 514,1,0,0,0,137,516,1,0,0,0,139,521,1,0,0,0,141,532,1,0,0,0,143,534,1,0, + 0,0,145,536,1,0,0,0,147,538,1,0,0,0,149,546,1,0,0,0,151,552,1,0,0,0,153, + 556,1,0,0,0,155,156,5,59,0,0,156,2,1,0,0,0,157,158,5,61,0,0,158,4,1,0,0, + 0,159,160,5,98,0,0,160,161,5,114,0,0,161,162,5,101,0,0,162,163,5,97,0,0, + 163,164,5,107,0,0,164,6,1,0,0,0,165,166,5,103,0,0,166,167,5,111,0,0,167, + 168,5,116,0,0,168,169,5,111,0,0,169,8,1,0,0,0,170,171,5,100,0,0,171,172, + 5,111,0,0,172,10,1,0,0,0,173,174,5,101,0,0,174,175,5,110,0,0,175,176,5, + 100,0,0,176,12,1,0,0,0,177,178,5,119,0,0,178,179,5,104,0,0,179,180,5,105, + 0,0,180,181,5,108,0,0,181,182,5,101,0,0,182,14,1,0,0,0,183,184,5,114,0, + 0,184,185,5,101,0,0,185,186,5,112,0,0,186,187,5,101,0,0,187,188,5,97,0, + 0,188,189,5,116,0,0,189,16,1,0,0,0,190,191,5,117,0,0,191,192,5,110,0,0, + 192,193,5,116,0,0,193,194,5,105,0,0,194,195,5,108,0,0,195,18,1,0,0,0,196, + 197,5,105,0,0,197,198,5,102,0,0,198,20,1,0,0,0,199,200,5,116,0,0,200,201, + 5,104,0,0,201,202,5,101,0,0,202,203,5,110,0,0,203,22,1,0,0,0,204,205,5, + 101,0,0,205,206,5,108,0,0,206,207,5,115,0,0,207,208,5,101,0,0,208,209,5, + 105,0,0,209,210,5,102,0,0,210,24,1,0,0,0,211,212,5,101,0,0,212,213,5,108, + 0,0,213,214,5,115,0,0,214,215,5,101,0,0,215,26,1,0,0,0,216,217,5,102,0, + 0,217,218,5,111,0,0,218,219,5,114,0,0,219,28,1,0,0,0,220,221,5,44,0,0,221, + 30,1,0,0,0,222,223,5,105,0,0,223,224,5,110,0,0,224,32,1,0,0,0,225,226,5, + 102,0,0,226,227,5,117,0,0,227,228,5,110,0,0,228,229,5,99,0,0,229,230,5, + 116,0,0,230,231,5,105,0,0,231,232,5,111,0,0,232,233,5,110,0,0,233,34,1, + 0,0,0,234,235,5,108,0,0,235,236,5,111,0,0,236,237,5,99,0,0,237,238,5,97, + 0,0,238,239,5,108,0,0,239,36,1,0,0,0,240,241,5,60,0,0,241,38,1,0,0,0,242, + 243,5,62,0,0,243,40,1,0,0,0,244,245,5,114,0,0,245,246,5,101,0,0,246,247, + 5,116,0,0,247,248,5,117,0,0,248,249,5,114,0,0,249,250,5,110,0,0,250,42, + 1,0,0,0,251,252,5,58,0,0,252,253,5,58,0,0,253,44,1,0,0,0,254,255,5,110, + 0,0,255,256,5,105,0,0,256,257,5,108,0,0,257,46,1,0,0,0,258,259,5,102,0, + 0,259,260,5,97,0,0,260,261,5,108,0,0,261,262,5,115,0,0,262,263,5,101,0, + 0,263,48,1,0,0,0,264,265,5,116,0,0,265,266,5,114,0,0,266,267,5,117,0,0, + 267,268,5,101,0,0,268,50,1,0,0,0,269,270,5,46,0,0,270,52,1,0,0,0,271,272, + 5,126,0,0,272,54,1,0,0,0,273,274,5,45,0,0,274,56,1,0,0,0,275,276,5,35,0, + 0,276,58,1,0,0,0,277,278,5,40,0,0,278,60,1,0,0,0,279,280,5,41,0,0,280,62, + 1,0,0,0,281,282,5,110,0,0,282,283,5,111,0,0,283,284,5,116,0,0,284,64,1, + 0,0,0,285,286,5,60,0,0,286,287,5,60,0,0,287,66,1,0,0,0,288,289,5,62,0,0, + 289,290,5,62,0,0,290,68,1,0,0,0,291,292,5,38,0,0,292,70,1,0,0,0,293,294, + 5,47,0,0,294,295,5,47,0,0,295,72,1,0,0,0,296,297,5,37,0,0,297,74,1,0,0, + 0,298,299,5,58,0,0,299,76,1,0,0,0,300,301,5,60,0,0,301,302,5,61,0,0,302, + 78,1,0,0,0,303,304,5,62,0,0,304,305,5,61,0,0,305,80,1,0,0,0,306,307,5,97, + 0,0,307,308,5,110,0,0,308,309,5,100,0,0,309,82,1,0,0,0,310,311,5,111,0, + 0,311,312,5,114,0,0,312,84,1,0,0,0,313,314,5,43,0,0,314,86,1,0,0,0,315, + 316,5,42,0,0,316,88,1,0,0,0,317,318,5,123,0,0,318,90,1,0,0,0,319,320,5, + 125,0,0,320,92,1,0,0,0,321,322,5,91,0,0,322,94,1,0,0,0,323,324,5,93,0,0, + 324,96,1,0,0,0,325,326,5,61,0,0,326,327,5,61,0,0,327,98,1,0,0,0,328,329, + 5,46,0,0,329,330,5,46,0,0,330,100,1,0,0,0,331,332,5,124,0,0,332,102,1,0, + 0,0,333,334,5,94,0,0,334,104,1,0,0,0,335,336,5,47,0,0,336,106,1,0,0,0,337, + 338,5,46,0,0,338,339,5,46,0,0,339,340,5,46,0,0,340,108,1,0,0,0,341,342, + 5,126,0,0,342,343,5,61,0,0,343,110,1,0,0,0,344,348,7,0,0,0,345,347,7,1, + 0,0,346,345,1,0,0,0,347,350,1,0,0,0,348,346,1,0,0,0,348,349,1,0,0,0,349, + 112,1,0,0,0,350,348,1,0,0,0,351,356,5,34,0,0,352,355,3,133,66,0,353,355, + 8,2,0,0,354,352,1,0,0,0,354,353,1,0,0,0,355,358,1,0,0,0,356,354,1,0,0,0, + 356,357,1,0,0,0,357,359,1,0,0,0,358,356,1,0,0,0,359,360,5,34,0,0,360,114, + 1,0,0,0,361,366,5,39,0,0,362,365,3,133,66,0,363,365,8,3,0,0,364,362,1,0, + 0,0,364,363,1,0,0,0,365,368,1,0,0,0,366,364,1,0,0,0,366,367,1,0,0,0,367, + 369,1,0,0,0,368,366,1,0,0,0,369,370,5,39,0,0,370,116,1,0,0,0,371,372,5, + 91,0,0,372,373,3,119,59,0,373,374,5,93,0,0,374,118,1,0,0,0,375,376,5,61, + 0,0,376,377,3,119,59,0,377,378,5,61,0,0,378,388,1,0,0,0,379,383,5,91,0, + 0,380,382,9,0,0,0,381,380,1,0,0,0,382,385,1,0,0,0,383,384,1,0,0,0,383,381, + 1,0,0,0,384,386,1,0,0,0,385,383,1,0,0,0,386,388,5,93,0,0,387,375,1,0,0, + 0,387,379,1,0,0,0,388,120,1,0,0,0,389,391,3,141,70,0,390,389,1,0,0,0,391, + 392,1,0,0,0,392,390,1,0,0,0,392,393,1,0,0,0,393,122,1,0,0,0,394,395,5,48, + 0,0,395,397,7,4,0,0,396,398,3,143,71,0,397,396,1,0,0,0,398,399,1,0,0,0, + 399,397,1,0,0,0,399,400,1,0,0,0,400,124,1,0,0,0,401,403,3,141,70,0,402, + 401,1,0,0,0,403,404,1,0,0,0,404,402,1,0,0,0,404,405,1,0,0,0,405,406,1,0, + 0,0,406,410,5,46,0,0,407,409,3,141,70,0,408,407,1,0,0,0,409,412,1,0,0,0, + 410,408,1,0,0,0,410,411,1,0,0,0,411,414,1,0,0,0,412,410,1,0,0,0,413,415, + 3,129,64,0,414,413,1,0,0,0,414,415,1,0,0,0,415,433,1,0,0,0,416,418,5,46, + 0,0,417,419,3,141,70,0,418,417,1,0,0,0,419,420,1,0,0,0,420,418,1,0,0,0, + 420,421,1,0,0,0,421,423,1,0,0,0,422,424,3,129,64,0,423,422,1,0,0,0,423, + 424,1,0,0,0,424,433,1,0,0,0,425,427,3,141,70,0,426,425,1,0,0,0,427,428, + 1,0,0,0,428,426,1,0,0,0,428,429,1,0,0,0,429,430,1,0,0,0,430,431,3,129,64, + 0,431,433,1,0,0,0,432,402,1,0,0,0,432,416,1,0,0,0,432,426,1,0,0,0,433,126, + 1,0,0,0,434,435,5,48,0,0,435,437,7,4,0,0,436,438,3,143,71,0,437,436,1,0, + 0,0,438,439,1,0,0,0,439,437,1,0,0,0,439,440,1,0,0,0,440,441,1,0,0,0,441, + 445,5,46,0,0,442,444,3,143,71,0,443,442,1,0,0,0,444,447,1,0,0,0,445,443, + 1,0,0,0,445,446,1,0,0,0,446,449,1,0,0,0,447,445,1,0,0,0,448,450,3,131,65, + 0,449,448,1,0,0,0,449,450,1,0,0,0,450,472,1,0,0,0,451,452,5,48,0,0,452, + 453,7,4,0,0,453,455,5,46,0,0,454,456,3,143,71,0,455,454,1,0,0,0,456,457, + 1,0,0,0,457,455,1,0,0,0,457,458,1,0,0,0,458,460,1,0,0,0,459,461,3,131,65, + 0,460,459,1,0,0,0,460,461,1,0,0,0,461,472,1,0,0,0,462,463,5,48,0,0,463, + 465,7,4,0,0,464,466,3,143,71,0,465,464,1,0,0,0,466,467,1,0,0,0,467,465, + 1,0,0,0,467,468,1,0,0,0,468,469,1,0,0,0,469,470,3,131,65,0,470,472,1,0, + 0,0,471,434,1,0,0,0,471,451,1,0,0,0,471,462,1,0,0,0,472,128,1,0,0,0,473, + 475,7,5,0,0,474,476,7,6,0,0,475,474,1,0,0,0,475,476,1,0,0,0,476,478,1,0, + 0,0,477,479,3,141,70,0,478,477,1,0,0,0,479,480,1,0,0,0,480,478,1,0,0,0, + 480,481,1,0,0,0,481,130,1,0,0,0,482,484,7,7,0,0,483,485,7,6,0,0,484,483, + 1,0,0,0,484,485,1,0,0,0,485,487,1,0,0,0,486,488,3,141,70,0,487,486,1,0, + 0,0,488,489,1,0,0,0,489,487,1,0,0,0,489,490,1,0,0,0,490,132,1,0,0,0,491, + 492,5,92,0,0,492,502,7,8,0,0,493,495,5,92,0,0,494,496,5,13,0,0,495,494, + 1,0,0,0,495,496,1,0,0,0,496,497,1,0,0,0,497,502,5,10,0,0,498,502,3,135, + 67,0,499,502,3,137,68,0,500,502,3,139,69,0,501,491,1,0,0,0,501,493,1,0, + 0,0,501,498,1,0,0,0,501,499,1,0,0,0,501,500,1,0,0,0,502,134,1,0,0,0,503, + 504,5,92,0,0,504,515,3,141,70,0,505,506,5,92,0,0,506,507,3,141,70,0,507, + 508,3,141,70,0,508,515,1,0,0,0,509,510,5,92,0,0,510,511,7,9,0,0,511,512, + 3,141,70,0,512,513,3,141,70,0,513,515,1,0,0,0,514,503,1,0,0,0,514,505,1, + 0,0,0,514,509,1,0,0,0,515,136,1,0,0,0,516,517,5,92,0,0,517,518,5,120,0, + 0,518,519,3,143,71,0,519,520,3,143,71,0,520,138,1,0,0,0,521,522,5,92,0, + 0,522,523,5,117,0,0,523,524,5,123,0,0,524,526,1,0,0,0,525,527,3,143,71, + 0,526,525,1,0,0,0,527,528,1,0,0,0,528,526,1,0,0,0,528,529,1,0,0,0,529,530, + 1,0,0,0,530,531,5,125,0,0,531,140,1,0,0,0,532,533,7,10,0,0,533,142,1,0, + 0,0,534,535,7,11,0,0,535,144,1,0,0,0,536,537,8,12,0,0,537,146,1,0,0,0,538, + 539,5,45,0,0,539,540,5,45,0,0,540,541,1,0,0,0,541,542,6,73,0,0,542,543, + 1,0,0,0,543,544,6,73,1,0,544,148,1,0,0,0,545,547,7,13,0,0,546,545,1,0,0, + 0,547,548,1,0,0,0,548,546,1,0,0,0,548,549,1,0,0,0,549,550,1,0,0,0,550,551, + 6,74,1,0,551,150,1,0,0,0,552,553,7,14,0,0,553,554,1,0,0,0,554,555,6,75, + 2,0,555,152,1,0,0,0,556,557,5,35,0,0,557,559,4,76,0,0,558,560,5,33,0,0, + 559,558,1,0,0,0,559,560,1,0,0,0,560,564,1,0,0,0,561,563,3,145,72,0,562, + 561,1,0,0,0,563,566,1,0,0,0,564,562,1,0,0,0,564,565,1,0,0,0,565,567,1,0, + 0,0,566,564,1,0,0,0,567,568,6,76,1,0,568,154,1,0,0,0,35,0,348,354,356,364, + 366,383,387,392,399,404,410,414,420,423,428,432,439,445,449,457,460,467, + 471,475,480,484,489,495,501,514,528,548,559,564,3,1,73,0,0,1,0,0,2,0]; private static __ATN: ATN; public static get _ATN(): ATN { @@ -423,4 +416,4 @@ export default class LuaLexer extends LuaLexerBase { static DecisionsToDFA = LuaLexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); -} \ No newline at end of file +} diff --git a/src/parser/LuaParser.g4 b/src/parser/LuaParser.g4 index 6bc069a..b6db269 100644 --- a/src/parser/LuaParser.g4 +++ b/src/parser/LuaParser.g4 @@ -56,7 +56,7 @@ attrib ; retstat - : ('return' explist? | 'break' | 'continue') ';'? + : 'return' explist? ';'? ; label @@ -177,4 +177,4 @@ string : NORMALSTRING # string_string | CHARSTRING # string_charstring | LONGSTRING # string_longstring - ; \ No newline at end of file + ; diff --git a/src/parser/LuaParser.interp b/src/parser/LuaParser.interp index 9cbeb0a..2b5dc64 100644 --- a/src/parser/LuaParser.interp +++ b/src/parser/LuaParser.interp @@ -21,7 +21,6 @@ null '<' '>' 'return' -'continue' '::' 'nil' 'false' @@ -92,7 +91,6 @@ LOCAL LT GT RETURN -CONTINUE CC NIL FALSE @@ -170,4 +168,4 @@ string atn: -[4, 1, 68, 479, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 5, 2, 59, 8, 2, 10, 2, 12, 2, 62, 9, 2, 1, 2, 3, 2, 65, 8, 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, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 101, 8, 3, 10, 3, 12, 3, 104, 9, 3, 1, 3, 1, 3, 3, 3, 108, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 120, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 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, 146, 8, 3, 3, 3, 148, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 155, 8, 4, 10, 4, 12, 4, 158, 9, 4, 1, 5, 1, 5, 1, 5, 3, 5, 163, 8, 5, 1, 6, 1, 6, 3, 6, 167, 8, 6, 1, 6, 1, 6, 3, 6, 171, 8, 6, 1, 6, 3, 6, 174, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 5, 8, 183, 8, 8, 10, 8, 12, 8, 186, 9, 8, 1, 8, 1, 8, 3, 8, 190, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 195, 8, 9, 10, 9, 12, 9, 198, 9, 9, 1, 10, 1, 10, 1, 10, 5, 10, 203, 8, 10, 10, 10, 12, 10, 206, 9, 10, 1, 11, 1, 11, 1, 11, 5, 11, 211, 8, 11, 10, 11, 12, 11, 214, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 228, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 254, 8, 12, 10, 12, 12, 12, 257, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 267, 8, 13, 3, 13, 269, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 278, 8, 14, 10, 14, 12, 14, 281, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 290, 8, 14, 10, 14, 12, 14, 293, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 304, 8, 14, 10, 14, 12, 14, 307, 9, 14, 3, 14, 309, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 319, 8, 15, 10, 15, 12, 15, 322, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 334, 8, 15, 10, 15, 12, 15, 337, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 348, 8, 15, 10, 15, 12, 15, 351, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 365, 8, 15, 10, 15, 12, 15, 368, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 374, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 383, 8, 15, 10, 15, 12, 15, 386, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 396, 8, 15, 10, 15, 12, 15, 399, 9, 15, 1, 15, 1, 15, 1, 15, 5, 15, 404, 8, 15, 10, 15, 12, 15, 407, 9, 15, 1, 16, 1, 16, 3, 16, 411, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 416, 8, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 3, 19, 430, 8, 19, 1, 19, 1, 19, 3, 19, 434, 8, 19, 1, 20, 1, 20, 3, 20, 438, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 446, 8, 21, 10, 21, 12, 21, 449, 9, 21, 1, 21, 3, 21, 452, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 464, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 472, 8, 24, 1, 25, 1, 25, 1, 25, 3, 25, 477, 8, 25, 1, 25, 0, 2, 24, 30, 26, 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, 0, 6, 2, 0, 28, 30, 33, 33, 3, 0, 37, 38, 45, 45, 54, 54, 2, 0, 29, 29, 44, 44, 4, 0, 19, 20, 40, 41, 50, 50, 56, 56, 3, 0, 28, 28, 34, 36, 52, 52, 2, 0, 1, 1, 15, 15, 543, 0, 52, 1, 0, 0, 0, 2, 55, 1, 0, 0, 0, 4, 60, 1, 0, 0, 0, 6, 147, 1, 0, 0, 0, 8, 149, 1, 0, 0, 0, 10, 162, 1, 0, 0, 0, 12, 170, 1, 0, 0, 0, 14, 175, 1, 0, 0, 0, 16, 179, 1, 0, 0, 0, 18, 191, 1, 0, 0, 0, 20, 199, 1, 0, 0, 0, 22, 207, 1, 0, 0, 0, 24, 227, 1, 0, 0, 0, 26, 268, 1, 0, 0, 0, 28, 308, 1, 0, 0, 0, 30, 373, 1, 0, 0, 0, 32, 415, 1, 0, 0, 0, 34, 417, 1, 0, 0, 0, 36, 420, 1, 0, 0, 0, 38, 433, 1, 0, 0, 0, 40, 435, 1, 0, 0, 0, 42, 441, 1, 0, 0, 0, 44, 463, 1, 0, 0, 0, 46, 465, 1, 0, 0, 0, 48, 471, 1, 0, 0, 0, 50, 476, 1, 0, 0, 0, 52, 53, 3, 2, 1, 0, 53, 54, 5, 0, 0, 1, 54, 1, 1, 0, 0, 0, 55, 56, 3, 4, 2, 0, 56, 3, 1, 0, 0, 0, 57, 59, 3, 6, 3, 0, 58, 57, 1, 0, 0, 0, 59, 62, 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 64, 1, 0, 0, 0, 62, 60, 1, 0, 0, 0, 63, 65, 3, 12, 6, 0, 64, 63, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 5, 1, 0, 0, 0, 66, 148, 5, 1, 0, 0, 67, 68, 3, 18, 9, 0, 68, 69, 5, 2, 0, 0, 69, 70, 3, 22, 11, 0, 70, 148, 1, 0, 0, 0, 71, 148, 3, 30, 15, 0, 72, 148, 3, 14, 7, 0, 73, 148, 5, 3, 0, 0, 74, 75, 5, 4, 0, 0, 75, 148, 5, 57, 0, 0, 76, 77, 5, 5, 0, 0, 77, 78, 3, 4, 2, 0, 78, 79, 5, 6, 0, 0, 79, 148, 1, 0, 0, 0, 80, 81, 5, 7, 0, 0, 81, 82, 3, 24, 12, 0, 82, 83, 5, 5, 0, 0, 83, 84, 3, 4, 2, 0, 84, 85, 5, 6, 0, 0, 85, 148, 1, 0, 0, 0, 86, 87, 5, 8, 0, 0, 87, 88, 3, 4, 2, 0, 88, 89, 5, 9, 0, 0, 89, 90, 3, 24, 12, 0, 90, 148, 1, 0, 0, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 24, 12, 0, 93, 94, 5, 11, 0, 0, 94, 102, 3, 4, 2, 0, 95, 96, 5, 12, 0, 0, 96, 97, 3, 24, 12, 0, 97, 98, 5, 11, 0, 0, 98, 99, 3, 4, 2, 0, 99, 101, 1, 0, 0, 0, 100, 95, 1, 0, 0, 0, 101, 104, 1, 0, 0, 0, 102, 100, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, 107, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 105, 106, 5, 13, 0, 0, 106, 108, 3, 4, 2, 0, 107, 105, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 5, 6, 0, 0, 110, 148, 1, 0, 0, 0, 111, 112, 5, 14, 0, 0, 112, 113, 5, 57, 0, 0, 113, 114, 5, 2, 0, 0, 114, 115, 3, 24, 12, 0, 115, 116, 5, 15, 0, 0, 116, 119, 3, 24, 12, 0, 117, 118, 5, 15, 0, 0, 118, 120, 3, 24, 12, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 5, 5, 0, 0, 122, 123, 3, 4, 2, 0, 123, 124, 5, 6, 0, 0, 124, 148, 1, 0, 0, 0, 125, 126, 5, 14, 0, 0, 126, 127, 3, 20, 10, 0, 127, 128, 5, 16, 0, 0, 128, 129, 3, 22, 11, 0, 129, 130, 5, 5, 0, 0, 130, 131, 3, 4, 2, 0, 131, 132, 5, 6, 0, 0, 132, 148, 1, 0, 0, 0, 133, 134, 5, 17, 0, 0, 134, 135, 3, 16, 8, 0, 135, 136, 3, 36, 18, 0, 136, 148, 1, 0, 0, 0, 137, 138, 5, 18, 0, 0, 138, 139, 5, 17, 0, 0, 139, 140, 5, 57, 0, 0, 140, 148, 3, 36, 18, 0, 141, 142, 5, 18, 0, 0, 142, 145, 3, 8, 4, 0, 143, 144, 5, 2, 0, 0, 144, 146, 3, 22, 11, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 148, 1, 0, 0, 0, 147, 66, 1, 0, 0, 0, 147, 67, 1, 0, 0, 0, 147, 71, 1, 0, 0, 0, 147, 72, 1, 0, 0, 0, 147, 73, 1, 0, 0, 0, 147, 74, 1, 0, 0, 0, 147, 76, 1, 0, 0, 0, 147, 80, 1, 0, 0, 0, 147, 86, 1, 0, 0, 0, 147, 91, 1, 0, 0, 0, 147, 111, 1, 0, 0, 0, 147, 125, 1, 0, 0, 0, 147, 133, 1, 0, 0, 0, 147, 137, 1, 0, 0, 0, 147, 141, 1, 0, 0, 0, 148, 7, 1, 0, 0, 0, 149, 150, 5, 57, 0, 0, 150, 156, 3, 10, 5, 0, 151, 152, 5, 15, 0, 0, 152, 153, 5, 57, 0, 0, 153, 155, 3, 10, 5, 0, 154, 151, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 9, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 19, 0, 0, 160, 161, 5, 57, 0, 0, 161, 163, 5, 20, 0, 0, 162, 159, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 11, 1, 0, 0, 0, 164, 166, 5, 21, 0, 0, 165, 167, 3, 22, 11, 0, 166, 165, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 171, 1, 0, 0, 0, 168, 171, 5, 3, 0, 0, 169, 171, 5, 22, 0, 0, 170, 164, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 173, 1, 0, 0, 0, 172, 174, 5, 1, 0, 0, 173, 172, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 13, 1, 0, 0, 0, 175, 176, 5, 23, 0, 0, 176, 177, 5, 57, 0, 0, 177, 178, 5, 23, 0, 0, 178, 15, 1, 0, 0, 0, 179, 184, 5, 57, 0, 0, 180, 181, 5, 27, 0, 0, 181, 183, 5, 57, 0, 0, 182, 180, 1, 0, 0, 0, 183, 186, 1, 0, 0, 0, 184, 182, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 189, 1, 0, 0, 0, 186, 184, 1, 0, 0, 0, 187, 188, 5, 39, 0, 0, 188, 190, 5, 57, 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 17, 1, 0, 0, 0, 191, 196, 3, 26, 13, 0, 192, 193, 5, 15, 0, 0, 193, 195, 3, 26, 13, 0, 194, 192, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 19, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 199, 204, 5, 57, 0, 0, 200, 201, 5, 15, 0, 0, 201, 203, 5, 57, 0, 0, 202, 200, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 21, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 212, 3, 24, 12, 0, 208, 209, 5, 15, 0, 0, 209, 211, 3, 24, 12, 0, 210, 208, 1, 0, 0, 0, 211, 214, 1, 0, 0, 0, 212, 210, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 23, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 215, 216, 6, 12, -1, 0, 216, 228, 5, 24, 0, 0, 217, 228, 5, 25, 0, 0, 218, 228, 5, 26, 0, 0, 219, 228, 3, 48, 24, 0, 220, 228, 3, 50, 25, 0, 221, 228, 5, 55, 0, 0, 222, 228, 3, 34, 17, 0, 223, 228, 3, 28, 14, 0, 224, 228, 3, 40, 20, 0, 225, 226, 7, 0, 0, 0, 226, 228, 3, 24, 12, 8, 227, 215, 1, 0, 0, 0, 227, 217, 1, 0, 0, 0, 227, 218, 1, 0, 0, 0, 227, 219, 1, 0, 0, 0, 227, 220, 1, 0, 0, 0, 227, 221, 1, 0, 0, 0, 227, 222, 1, 0, 0, 0, 227, 223, 1, 0, 0, 0, 227, 224, 1, 0, 0, 0, 227, 225, 1, 0, 0, 0, 228, 255, 1, 0, 0, 0, 229, 230, 10, 9, 0, 0, 230, 231, 5, 53, 0, 0, 231, 254, 3, 24, 12, 9, 232, 233, 10, 7, 0, 0, 233, 234, 7, 1, 0, 0, 234, 254, 3, 24, 12, 8, 235, 236, 10, 6, 0, 0, 236, 237, 7, 2, 0, 0, 237, 254, 3, 24, 12, 7, 238, 239, 10, 5, 0, 0, 239, 240, 5, 51, 0, 0, 240, 254, 3, 24, 12, 5, 241, 242, 10, 4, 0, 0, 242, 243, 7, 3, 0, 0, 243, 254, 3, 24, 12, 5, 244, 245, 10, 3, 0, 0, 245, 246, 5, 42, 0, 0, 246, 254, 3, 24, 12, 4, 247, 248, 10, 2, 0, 0, 248, 249, 5, 43, 0, 0, 249, 254, 3, 24, 12, 3, 250, 251, 10, 1, 0, 0, 251, 252, 7, 4, 0, 0, 252, 254, 3, 24, 12, 2, 253, 229, 1, 0, 0, 0, 253, 232, 1, 0, 0, 0, 253, 235, 1, 0, 0, 0, 253, 238, 1, 0, 0, 0, 253, 241, 1, 0, 0, 0, 253, 244, 1, 0, 0, 0, 253, 247, 1, 0, 0, 0, 253, 250, 1, 0, 0, 0, 254, 257, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 25, 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 258, 269, 5, 57, 0, 0, 259, 266, 3, 28, 14, 0, 260, 261, 5, 48, 0, 0, 261, 262, 3, 24, 12, 0, 262, 263, 5, 49, 0, 0, 263, 267, 1, 0, 0, 0, 264, 265, 5, 27, 0, 0, 265, 267, 5, 57, 0, 0, 266, 260, 1, 0, 0, 0, 266, 264, 1, 0, 0, 0, 267, 269, 1, 0, 0, 0, 268, 258, 1, 0, 0, 0, 268, 259, 1, 0, 0, 0, 269, 27, 1, 0, 0, 0, 270, 279, 5, 57, 0, 0, 271, 272, 5, 48, 0, 0, 272, 273, 3, 24, 12, 0, 273, 274, 5, 49, 0, 0, 274, 278, 1, 0, 0, 0, 275, 276, 5, 27, 0, 0, 276, 278, 5, 57, 0, 0, 277, 271, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 309, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 291, 3, 30, 15, 0, 283, 284, 5, 48, 0, 0, 284, 285, 3, 24, 12, 0, 285, 286, 5, 49, 0, 0, 286, 290, 1, 0, 0, 0, 287, 288, 5, 27, 0, 0, 288, 290, 5, 57, 0, 0, 289, 283, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 293, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 309, 1, 0, 0, 0, 293, 291, 1, 0, 0, 0, 294, 295, 5, 31, 0, 0, 295, 296, 3, 24, 12, 0, 296, 305, 5, 32, 0, 0, 297, 298, 5, 48, 0, 0, 298, 299, 3, 24, 12, 0, 299, 300, 5, 49, 0, 0, 300, 304, 1, 0, 0, 0, 301, 302, 5, 27, 0, 0, 302, 304, 5, 57, 0, 0, 303, 297, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 270, 1, 0, 0, 0, 308, 282, 1, 0, 0, 0, 308, 294, 1, 0, 0, 0, 309, 29, 1, 0, 0, 0, 310, 311, 6, 15, -1, 0, 311, 320, 5, 57, 0, 0, 312, 313, 5, 48, 0, 0, 313, 314, 3, 24, 12, 0, 314, 315, 5, 49, 0, 0, 315, 319, 1, 0, 0, 0, 316, 317, 5, 27, 0, 0, 317, 319, 5, 57, 0, 0, 318, 312, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 323, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 374, 3, 32, 16, 0, 324, 325, 5, 31, 0, 0, 325, 326, 3, 24, 12, 0, 326, 335, 5, 32, 0, 0, 327, 328, 5, 48, 0, 0, 328, 329, 3, 24, 12, 0, 329, 330, 5, 49, 0, 0, 330, 334, 1, 0, 0, 0, 331, 332, 5, 27, 0, 0, 332, 334, 5, 57, 0, 0, 333, 327, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 338, 1, 0, 0, 0, 337, 335, 1, 0, 0, 0, 338, 339, 3, 32, 16, 0, 339, 374, 1, 0, 0, 0, 340, 349, 5, 57, 0, 0, 341, 342, 5, 48, 0, 0, 342, 343, 3, 24, 12, 0, 343, 344, 5, 49, 0, 0, 344, 348, 1, 0, 0, 0, 345, 346, 5, 27, 0, 0, 346, 348, 5, 57, 0, 0, 347, 341, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 351, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 352, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 353, 5, 39, 0, 0, 353, 354, 5, 57, 0, 0, 354, 374, 3, 32, 16, 0, 355, 356, 5, 31, 0, 0, 356, 357, 3, 24, 12, 0, 357, 366, 5, 32, 0, 0, 358, 359, 5, 48, 0, 0, 359, 360, 3, 24, 12, 0, 360, 361, 5, 49, 0, 0, 361, 365, 1, 0, 0, 0, 362, 363, 5, 27, 0, 0, 363, 365, 5, 57, 0, 0, 364, 358, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 370, 5, 39, 0, 0, 370, 371, 5, 57, 0, 0, 371, 372, 3, 32, 16, 0, 372, 374, 1, 0, 0, 0, 373, 310, 1, 0, 0, 0, 373, 324, 1, 0, 0, 0, 373, 340, 1, 0, 0, 0, 373, 355, 1, 0, 0, 0, 374, 405, 1, 0, 0, 0, 375, 384, 10, 5, 0, 0, 376, 377, 5, 48, 0, 0, 377, 378, 3, 24, 12, 0, 378, 379, 5, 49, 0, 0, 379, 383, 1, 0, 0, 0, 380, 381, 5, 27, 0, 0, 381, 383, 5, 57, 0, 0, 382, 376, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 387, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 387, 404, 3, 32, 16, 0, 388, 397, 10, 2, 0, 0, 389, 390, 5, 48, 0, 0, 390, 391, 3, 24, 12, 0, 391, 392, 5, 49, 0, 0, 392, 396, 1, 0, 0, 0, 393, 394, 5, 27, 0, 0, 394, 396, 5, 57, 0, 0, 395, 389, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 396, 399, 1, 0, 0, 0, 397, 395, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 400, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 400, 401, 5, 39, 0, 0, 401, 402, 5, 57, 0, 0, 402, 404, 3, 32, 16, 0, 403, 375, 1, 0, 0, 0, 403, 388, 1, 0, 0, 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 31, 1, 0, 0, 0, 407, 405, 1, 0, 0, 0, 408, 410, 5, 31, 0, 0, 409, 411, 3, 22, 11, 0, 410, 409, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 416, 5, 32, 0, 0, 413, 416, 3, 40, 20, 0, 414, 416, 3, 50, 25, 0, 415, 408, 1, 0, 0, 0, 415, 413, 1, 0, 0, 0, 415, 414, 1, 0, 0, 0, 416, 33, 1, 0, 0, 0, 417, 418, 5, 17, 0, 0, 418, 419, 3, 36, 18, 0, 419, 35, 1, 0, 0, 0, 420, 421, 5, 31, 0, 0, 421, 422, 3, 38, 19, 0, 422, 423, 5, 32, 0, 0, 423, 424, 3, 4, 2, 0, 424, 425, 5, 6, 0, 0, 425, 37, 1, 0, 0, 0, 426, 429, 3, 20, 10, 0, 427, 428, 5, 15, 0, 0, 428, 430, 5, 55, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 434, 1, 0, 0, 0, 431, 434, 5, 55, 0, 0, 432, 434, 1, 0, 0, 0, 433, 426, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 433, 432, 1, 0, 0, 0, 434, 39, 1, 0, 0, 0, 435, 437, 5, 46, 0, 0, 436, 438, 3, 42, 21, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 439, 1, 0, 0, 0, 439, 440, 5, 47, 0, 0, 440, 41, 1, 0, 0, 0, 441, 447, 3, 44, 22, 0, 442, 443, 3, 46, 23, 0, 443, 444, 3, 44, 22, 0, 444, 446, 1, 0, 0, 0, 445, 442, 1, 0, 0, 0, 446, 449, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 451, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 450, 452, 3, 46, 23, 0, 451, 450, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 43, 1, 0, 0, 0, 453, 454, 5, 48, 0, 0, 454, 455, 3, 24, 12, 0, 455, 456, 5, 49, 0, 0, 456, 457, 5, 2, 0, 0, 457, 458, 3, 24, 12, 0, 458, 464, 1, 0, 0, 0, 459, 460, 5, 57, 0, 0, 460, 461, 5, 2, 0, 0, 461, 464, 3, 24, 12, 0, 462, 464, 3, 24, 12, 0, 463, 453, 1, 0, 0, 0, 463, 459, 1, 0, 0, 0, 463, 462, 1, 0, 0, 0, 464, 45, 1, 0, 0, 0, 465, 466, 7, 5, 0, 0, 466, 47, 1, 0, 0, 0, 467, 472, 5, 61, 0, 0, 468, 472, 5, 62, 0, 0, 469, 472, 5, 63, 0, 0, 470, 472, 5, 64, 0, 0, 471, 467, 1, 0, 0, 0, 471, 468, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 471, 470, 1, 0, 0, 0, 472, 49, 1, 0, 0, 0, 473, 477, 5, 58, 0, 0, 474, 477, 5, 59, 0, 0, 475, 477, 5, 60, 0, 0, 476, 473, 1, 0, 0, 0, 476, 474, 1, 0, 0, 0, 476, 475, 1, 0, 0, 0, 477, 51, 1, 0, 0, 0, 54, 60, 64, 102, 107, 119, 145, 147, 156, 162, 166, 170, 173, 184, 189, 196, 204, 212, 227, 253, 255, 266, 268, 277, 279, 289, 291, 303, 305, 308, 318, 320, 333, 335, 347, 349, 364, 366, 373, 382, 384, 395, 397, 403, 405, 410, 415, 429, 433, 437, 447, 451, 463, 471, 476] \ No newline at end of file +[4, 1, 67, 475, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 5, 2, 59, 8, 2, 10, 2, 12, 2, 62, 9, 2, 1, 2, 3, 2, 65, 8, 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, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 101, 8, 3, 10, 3, 12, 3, 104, 9, 3, 1, 3, 1, 3, 3, 3, 108, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 120, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 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, 146, 8, 3, 3, 3, 148, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 5, 4, 155, 8, 4, 10, 4, 12, 4, 158, 9, 4, 1, 5, 1, 5, 1, 5, 3, 5, 163, 8, 5, 1, 6, 1, 6, 3, 6, 167, 8, 6, 1, 6, 3, 6, 170, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 5, 8, 179, 8, 8, 10, 8, 12, 8, 182, 9, 8, 1, 8, 1, 8, 3, 8, 186, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 191, 8, 9, 10, 9, 12, 9, 194, 9, 9, 1, 10, 1, 10, 1, 10, 5, 10, 199, 8, 10, 10, 10, 12, 10, 202, 9, 10, 1, 11, 1, 11, 1, 11, 5, 11, 207, 8, 11, 10, 11, 12, 11, 210, 9, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 224, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 250, 8, 12, 10, 12, 12, 12, 253, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 263, 8, 13, 3, 13, 265, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 274, 8, 14, 10, 14, 12, 14, 277, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 286, 8, 14, 10, 14, 12, 14, 289, 9, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 300, 8, 14, 10, 14, 12, 14, 303, 9, 14, 3, 14, 305, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 315, 8, 15, 10, 15, 12, 15, 318, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 330, 8, 15, 10, 15, 12, 15, 333, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 344, 8, 15, 10, 15, 12, 15, 347, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 361, 8, 15, 10, 15, 12, 15, 364, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 370, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 379, 8, 15, 10, 15, 12, 15, 382, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 392, 8, 15, 10, 15, 12, 15, 395, 9, 15, 1, 15, 1, 15, 1, 15, 5, 15, 400, 8, 15, 10, 15, 12, 15, 403, 9, 15, 1, 16, 1, 16, 3, 16, 407, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 412, 8, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 3, 19, 426, 8, 19, 1, 19, 1, 19, 3, 19, 430, 8, 19, 1, 20, 1, 20, 3, 20, 434, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 442, 8, 21, 10, 21, 12, 21, 445, 9, 21, 1, 21, 3, 21, 448, 8, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 460, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 468, 8, 24, 1, 25, 1, 25, 1, 25, 3, 25, 473, 8, 25, 1, 25, 0, 2, 24, 30, 26, 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, 0, 6, 2, 0, 27, 29, 32, 32, 3, 0, 36, 37, 44, 44, 53, 53, 2, 0, 28, 28, 43, 43, 4, 0, 19, 20, 39, 40, 49, 49, 55, 55, 3, 0, 27, 27, 33, 35, 51, 51, 2, 0, 1, 1, 15, 15, 537, 0, 52, 1, 0, 0, 0, 2, 55, 1, 0, 0, 0, 4, 60, 1, 0, 0, 0, 6, 147, 1, 0, 0, 0, 8, 149, 1, 0, 0, 0, 10, 162, 1, 0, 0, 0, 12, 164, 1, 0, 0, 0, 14, 171, 1, 0, 0, 0, 16, 175, 1, 0, 0, 0, 18, 187, 1, 0, 0, 0, 20, 195, 1, 0, 0, 0, 22, 203, 1, 0, 0, 0, 24, 223, 1, 0, 0, 0, 26, 264, 1, 0, 0, 0, 28, 304, 1, 0, 0, 0, 30, 369, 1, 0, 0, 0, 32, 411, 1, 0, 0, 0, 34, 413, 1, 0, 0, 0, 36, 416, 1, 0, 0, 0, 38, 429, 1, 0, 0, 0, 40, 431, 1, 0, 0, 0, 42, 437, 1, 0, 0, 0, 44, 459, 1, 0, 0, 0, 46, 461, 1, 0, 0, 0, 48, 467, 1, 0, 0, 0, 50, 472, 1, 0, 0, 0, 52, 53, 3, 2, 1, 0, 53, 54, 5, 0, 0, 1, 54, 1, 1, 0, 0, 0, 55, 56, 3, 4, 2, 0, 56, 3, 1, 0, 0, 0, 57, 59, 3, 6, 3, 0, 58, 57, 1, 0, 0, 0, 59, 62, 1, 0, 0, 0, 60, 58, 1, 0, 0, 0, 60, 61, 1, 0, 0, 0, 61, 64, 1, 0, 0, 0, 62, 60, 1, 0, 0, 0, 63, 65, 3, 12, 6, 0, 64, 63, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 5, 1, 0, 0, 0, 66, 148, 5, 1, 0, 0, 67, 68, 3, 18, 9, 0, 68, 69, 5, 2, 0, 0, 69, 70, 3, 22, 11, 0, 70, 148, 1, 0, 0, 0, 71, 148, 3, 30, 15, 0, 72, 148, 3, 14, 7, 0, 73, 148, 5, 3, 0, 0, 74, 75, 5, 4, 0, 0, 75, 148, 5, 56, 0, 0, 76, 77, 5, 5, 0, 0, 77, 78, 3, 4, 2, 0, 78, 79, 5, 6, 0, 0, 79, 148, 1, 0, 0, 0, 80, 81, 5, 7, 0, 0, 81, 82, 3, 24, 12, 0, 82, 83, 5, 5, 0, 0, 83, 84, 3, 4, 2, 0, 84, 85, 5, 6, 0, 0, 85, 148, 1, 0, 0, 0, 86, 87, 5, 8, 0, 0, 87, 88, 3, 4, 2, 0, 88, 89, 5, 9, 0, 0, 89, 90, 3, 24, 12, 0, 90, 148, 1, 0, 0, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 24, 12, 0, 93, 94, 5, 11, 0, 0, 94, 102, 3, 4, 2, 0, 95, 96, 5, 12, 0, 0, 96, 97, 3, 24, 12, 0, 97, 98, 5, 11, 0, 0, 98, 99, 3, 4, 2, 0, 99, 101, 1, 0, 0, 0, 100, 95, 1, 0, 0, 0, 101, 104, 1, 0, 0, 0, 102, 100, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, 107, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 105, 106, 5, 13, 0, 0, 106, 108, 3, 4, 2, 0, 107, 105, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 109, 1, 0, 0, 0, 109, 110, 5, 6, 0, 0, 110, 148, 1, 0, 0, 0, 111, 112, 5, 14, 0, 0, 112, 113, 5, 56, 0, 0, 113, 114, 5, 2, 0, 0, 114, 115, 3, 24, 12, 0, 115, 116, 5, 15, 0, 0, 116, 119, 3, 24, 12, 0, 117, 118, 5, 15, 0, 0, 118, 120, 3, 24, 12, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 5, 5, 0, 0, 122, 123, 3, 4, 2, 0, 123, 124, 5, 6, 0, 0, 124, 148, 1, 0, 0, 0, 125, 126, 5, 14, 0, 0, 126, 127, 3, 20, 10, 0, 127, 128, 5, 16, 0, 0, 128, 129, 3, 22, 11, 0, 129, 130, 5, 5, 0, 0, 130, 131, 3, 4, 2, 0, 131, 132, 5, 6, 0, 0, 132, 148, 1, 0, 0, 0, 133, 134, 5, 17, 0, 0, 134, 135, 3, 16, 8, 0, 135, 136, 3, 36, 18, 0, 136, 148, 1, 0, 0, 0, 137, 138, 5, 18, 0, 0, 138, 139, 5, 17, 0, 0, 139, 140, 5, 56, 0, 0, 140, 148, 3, 36, 18, 0, 141, 142, 5, 18, 0, 0, 142, 145, 3, 8, 4, 0, 143, 144, 5, 2, 0, 0, 144, 146, 3, 22, 11, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 148, 1, 0, 0, 0, 147, 66, 1, 0, 0, 0, 147, 67, 1, 0, 0, 0, 147, 71, 1, 0, 0, 0, 147, 72, 1, 0, 0, 0, 147, 73, 1, 0, 0, 0, 147, 74, 1, 0, 0, 0, 147, 76, 1, 0, 0, 0, 147, 80, 1, 0, 0, 0, 147, 86, 1, 0, 0, 0, 147, 91, 1, 0, 0, 0, 147, 111, 1, 0, 0, 0, 147, 125, 1, 0, 0, 0, 147, 133, 1, 0, 0, 0, 147, 137, 1, 0, 0, 0, 147, 141, 1, 0, 0, 0, 148, 7, 1, 0, 0, 0, 149, 150, 5, 56, 0, 0, 150, 156, 3, 10, 5, 0, 151, 152, 5, 15, 0, 0, 152, 153, 5, 56, 0, 0, 153, 155, 3, 10, 5, 0, 154, 151, 1, 0, 0, 0, 155, 158, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 157, 1, 0, 0, 0, 157, 9, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 159, 160, 5, 19, 0, 0, 160, 161, 5, 56, 0, 0, 161, 163, 5, 20, 0, 0, 162, 159, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 11, 1, 0, 0, 0, 164, 166, 5, 21, 0, 0, 165, 167, 3, 22, 11, 0, 166, 165, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 169, 1, 0, 0, 0, 168, 170, 5, 1, 0, 0, 169, 168, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 13, 1, 0, 0, 0, 171, 172, 5, 22, 0, 0, 172, 173, 5, 56, 0, 0, 173, 174, 5, 22, 0, 0, 174, 15, 1, 0, 0, 0, 175, 180, 5, 56, 0, 0, 176, 177, 5, 26, 0, 0, 177, 179, 5, 56, 0, 0, 178, 176, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 185, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 184, 5, 38, 0, 0, 184, 186, 5, 56, 0, 0, 185, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 17, 1, 0, 0, 0, 187, 192, 3, 26, 13, 0, 188, 189, 5, 15, 0, 0, 189, 191, 3, 26, 13, 0, 190, 188, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 19, 1, 0, 0, 0, 194, 192, 1, 0, 0, 0, 195, 200, 5, 56, 0, 0, 196, 197, 5, 15, 0, 0, 197, 199, 5, 56, 0, 0, 198, 196, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 21, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 208, 3, 24, 12, 0, 204, 205, 5, 15, 0, 0, 205, 207, 3, 24, 12, 0, 206, 204, 1, 0, 0, 0, 207, 210, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 23, 1, 0, 0, 0, 210, 208, 1, 0, 0, 0, 211, 212, 6, 12, -1, 0, 212, 224, 5, 23, 0, 0, 213, 224, 5, 24, 0, 0, 214, 224, 5, 25, 0, 0, 215, 224, 3, 48, 24, 0, 216, 224, 3, 50, 25, 0, 217, 224, 5, 54, 0, 0, 218, 224, 3, 34, 17, 0, 219, 224, 3, 28, 14, 0, 220, 224, 3, 40, 20, 0, 221, 222, 7, 0, 0, 0, 222, 224, 3, 24, 12, 8, 223, 211, 1, 0, 0, 0, 223, 213, 1, 0, 0, 0, 223, 214, 1, 0, 0, 0, 223, 215, 1, 0, 0, 0, 223, 216, 1, 0, 0, 0, 223, 217, 1, 0, 0, 0, 223, 218, 1, 0, 0, 0, 223, 219, 1, 0, 0, 0, 223, 220, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 224, 251, 1, 0, 0, 0, 225, 226, 10, 9, 0, 0, 226, 227, 5, 52, 0, 0, 227, 250, 3, 24, 12, 9, 228, 229, 10, 7, 0, 0, 229, 230, 7, 1, 0, 0, 230, 250, 3, 24, 12, 8, 231, 232, 10, 6, 0, 0, 232, 233, 7, 2, 0, 0, 233, 250, 3, 24, 12, 7, 234, 235, 10, 5, 0, 0, 235, 236, 5, 50, 0, 0, 236, 250, 3, 24, 12, 5, 237, 238, 10, 4, 0, 0, 238, 239, 7, 3, 0, 0, 239, 250, 3, 24, 12, 5, 240, 241, 10, 3, 0, 0, 241, 242, 5, 41, 0, 0, 242, 250, 3, 24, 12, 4, 243, 244, 10, 2, 0, 0, 244, 245, 5, 42, 0, 0, 245, 250, 3, 24, 12, 3, 246, 247, 10, 1, 0, 0, 247, 248, 7, 4, 0, 0, 248, 250, 3, 24, 12, 2, 249, 225, 1, 0, 0, 0, 249, 228, 1, 0, 0, 0, 249, 231, 1, 0, 0, 0, 249, 234, 1, 0, 0, 0, 249, 237, 1, 0, 0, 0, 249, 240, 1, 0, 0, 0, 249, 243, 1, 0, 0, 0, 249, 246, 1, 0, 0, 0, 250, 253, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 25, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254, 265, 5, 56, 0, 0, 255, 262, 3, 28, 14, 0, 256, 257, 5, 47, 0, 0, 257, 258, 3, 24, 12, 0, 258, 259, 5, 48, 0, 0, 259, 263, 1, 0, 0, 0, 260, 261, 5, 26, 0, 0, 261, 263, 5, 56, 0, 0, 262, 256, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 254, 1, 0, 0, 0, 264, 255, 1, 0, 0, 0, 265, 27, 1, 0, 0, 0, 266, 275, 5, 56, 0, 0, 267, 268, 5, 47, 0, 0, 268, 269, 3, 24, 12, 0, 269, 270, 5, 48, 0, 0, 270, 274, 1, 0, 0, 0, 271, 272, 5, 26, 0, 0, 272, 274, 5, 56, 0, 0, 273, 267, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 305, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 287, 3, 30, 15, 0, 279, 280, 5, 47, 0, 0, 280, 281, 3, 24, 12, 0, 281, 282, 5, 48, 0, 0, 282, 286, 1, 0, 0, 0, 283, 284, 5, 26, 0, 0, 284, 286, 5, 56, 0, 0, 285, 279, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 305, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 291, 5, 30, 0, 0, 291, 292, 3, 24, 12, 0, 292, 301, 5, 31, 0, 0, 293, 294, 5, 47, 0, 0, 294, 295, 3, 24, 12, 0, 295, 296, 5, 48, 0, 0, 296, 300, 1, 0, 0, 0, 297, 298, 5, 26, 0, 0, 298, 300, 5, 56, 0, 0, 299, 293, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 305, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 266, 1, 0, 0, 0, 304, 278, 1, 0, 0, 0, 304, 290, 1, 0, 0, 0, 305, 29, 1, 0, 0, 0, 306, 307, 6, 15, -1, 0, 307, 316, 5, 56, 0, 0, 308, 309, 5, 47, 0, 0, 309, 310, 3, 24, 12, 0, 310, 311, 5, 48, 0, 0, 311, 315, 1, 0, 0, 0, 312, 313, 5, 26, 0, 0, 313, 315, 5, 56, 0, 0, 314, 308, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 319, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 370, 3, 32, 16, 0, 320, 321, 5, 30, 0, 0, 321, 322, 3, 24, 12, 0, 322, 331, 5, 31, 0, 0, 323, 324, 5, 47, 0, 0, 324, 325, 3, 24, 12, 0, 325, 326, 5, 48, 0, 0, 326, 330, 1, 0, 0, 0, 327, 328, 5, 26, 0, 0, 328, 330, 5, 56, 0, 0, 329, 323, 1, 0, 0, 0, 329, 327, 1, 0, 0, 0, 330, 333, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 334, 335, 3, 32, 16, 0, 335, 370, 1, 0, 0, 0, 336, 345, 5, 56, 0, 0, 337, 338, 5, 47, 0, 0, 338, 339, 3, 24, 12, 0, 339, 340, 5, 48, 0, 0, 340, 344, 1, 0, 0, 0, 341, 342, 5, 26, 0, 0, 342, 344, 5, 56, 0, 0, 343, 337, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 349, 5, 38, 0, 0, 349, 350, 5, 56, 0, 0, 350, 370, 3, 32, 16, 0, 351, 352, 5, 30, 0, 0, 352, 353, 3, 24, 12, 0, 353, 362, 5, 31, 0, 0, 354, 355, 5, 47, 0, 0, 355, 356, 3, 24, 12, 0, 356, 357, 5, 48, 0, 0, 357, 361, 1, 0, 0, 0, 358, 359, 5, 26, 0, 0, 359, 361, 5, 56, 0, 0, 360, 354, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 361, 364, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 365, 366, 5, 38, 0, 0, 366, 367, 5, 56, 0, 0, 367, 368, 3, 32, 16, 0, 368, 370, 1, 0, 0, 0, 369, 306, 1, 0, 0, 0, 369, 320, 1, 0, 0, 0, 369, 336, 1, 0, 0, 0, 369, 351, 1, 0, 0, 0, 370, 401, 1, 0, 0, 0, 371, 380, 10, 5, 0, 0, 372, 373, 5, 47, 0, 0, 373, 374, 3, 24, 12, 0, 374, 375, 5, 48, 0, 0, 375, 379, 1, 0, 0, 0, 376, 377, 5, 26, 0, 0, 377, 379, 5, 56, 0, 0, 378, 372, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 400, 3, 32, 16, 0, 384, 393, 10, 2, 0, 0, 385, 386, 5, 47, 0, 0, 386, 387, 3, 24, 12, 0, 387, 388, 5, 48, 0, 0, 388, 392, 1, 0, 0, 0, 389, 390, 5, 26, 0, 0, 390, 392, 5, 56, 0, 0, 391, 385, 1, 0, 0, 0, 391, 389, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 396, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 396, 397, 5, 38, 0, 0, 397, 398, 5, 56, 0, 0, 398, 400, 3, 32, 16, 0, 399, 371, 1, 0, 0, 0, 399, 384, 1, 0, 0, 0, 400, 403, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 31, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 404, 406, 5, 30, 0, 0, 405, 407, 3, 22, 11, 0, 406, 405, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 412, 5, 31, 0, 0, 409, 412, 3, 40, 20, 0, 410, 412, 3, 50, 25, 0, 411, 404, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 411, 410, 1, 0, 0, 0, 412, 33, 1, 0, 0, 0, 413, 414, 5, 17, 0, 0, 414, 415, 3, 36, 18, 0, 415, 35, 1, 0, 0, 0, 416, 417, 5, 30, 0, 0, 417, 418, 3, 38, 19, 0, 418, 419, 5, 31, 0, 0, 419, 420, 3, 4, 2, 0, 420, 421, 5, 6, 0, 0, 421, 37, 1, 0, 0, 0, 422, 425, 3, 20, 10, 0, 423, 424, 5, 15, 0, 0, 424, 426, 5, 54, 0, 0, 425, 423, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 430, 1, 0, 0, 0, 427, 430, 5, 54, 0, 0, 428, 430, 1, 0, 0, 0, 429, 422, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 428, 1, 0, 0, 0, 430, 39, 1, 0, 0, 0, 431, 433, 5, 45, 0, 0, 432, 434, 3, 42, 21, 0, 433, 432, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 436, 5, 46, 0, 0, 436, 41, 1, 0, 0, 0, 437, 443, 3, 44, 22, 0, 438, 439, 3, 46, 23, 0, 439, 440, 3, 44, 22, 0, 440, 442, 1, 0, 0, 0, 441, 438, 1, 0, 0, 0, 442, 445, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 447, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 446, 448, 3, 46, 23, 0, 447, 446, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 43, 1, 0, 0, 0, 449, 450, 5, 47, 0, 0, 450, 451, 3, 24, 12, 0, 451, 452, 5, 48, 0, 0, 452, 453, 5, 2, 0, 0, 453, 454, 3, 24, 12, 0, 454, 460, 1, 0, 0, 0, 455, 456, 5, 56, 0, 0, 456, 457, 5, 2, 0, 0, 457, 460, 3, 24, 12, 0, 458, 460, 3, 24, 12, 0, 459, 449, 1, 0, 0, 0, 459, 455, 1, 0, 0, 0, 459, 458, 1, 0, 0, 0, 460, 45, 1, 0, 0, 0, 461, 462, 7, 5, 0, 0, 462, 47, 1, 0, 0, 0, 463, 468, 5, 60, 0, 0, 464, 468, 5, 61, 0, 0, 465, 468, 5, 62, 0, 0, 466, 468, 5, 63, 0, 0, 467, 463, 1, 0, 0, 0, 467, 464, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467, 466, 1, 0, 0, 0, 468, 49, 1, 0, 0, 0, 469, 473, 5, 57, 0, 0, 470, 473, 5, 58, 0, 0, 471, 473, 5, 59, 0, 0, 472, 469, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, 471, 1, 0, 0, 0, 473, 51, 1, 0, 0, 0, 53, 60, 64, 102, 107, 119, 145, 147, 156, 162, 166, 169, 180, 185, 192, 200, 208, 223, 249, 251, 262, 264, 273, 275, 285, 287, 299, 301, 304, 314, 316, 329, 331, 343, 345, 360, 362, 369, 378, 380, 391, 393, 399, 401, 406, 411, 425, 429, 433, 443, 447, 459, 467, 472] \ No newline at end of file diff --git a/src/parser/LuaParser.tokens b/src/parser/LuaParser.tokens index 35d3fe6..f6a42c7 100644 --- a/src/parser/LuaParser.tokens +++ b/src/parser/LuaParser.tokens @@ -19,53 +19,52 @@ LOCAL=18 LT=19 GT=20 RETURN=21 -CONTINUE=22 -CC=23 -NIL=24 -FALSE=25 -TRUE=26 -DOT=27 -SQUIG=28 -MINUS=29 -POUND=30 -OP=31 -CP=32 -NOT=33 -LL=34 -GG=35 -AMP=36 -SS=37 -PER=38 -COL=39 -LE=40 -GE=41 -AND=42 -OR=43 -PLUS=44 -STAR=45 -OCU=46 -CCU=47 -OB=48 -CB=49 -EE=50 -DD=51 -PIPE=52 -CARET=53 -SLASH=54 -DDD=55 -SQEQ=56 -NAME=57 -NORMALSTRING=58 -CHARSTRING=59 -LONGSTRING=60 -INT=61 -HEX=62 -FLOAT=63 -HEX_FLOAT=64 -COMMENT=65 -WS=66 -NL=67 -SHEBANG=68 +CC=22 +NIL=23 +FALSE=24 +TRUE=25 +DOT=26 +SQUIG=27 +MINUS=28 +POUND=29 +OP=30 +CP=31 +NOT=32 +LL=33 +GG=34 +AMP=35 +SS=36 +PER=37 +COL=38 +LE=39 +GE=40 +AND=41 +OR=42 +PLUS=43 +STAR=44 +OCU=45 +CCU=46 +OB=47 +CB=48 +EE=49 +DD=50 +PIPE=51 +CARET=52 +SLASH=53 +DDD=54 +SQEQ=55 +NAME=56 +NORMALSTRING=57 +CHARSTRING=58 +LONGSTRING=59 +INT=60 +HEX=61 +FLOAT=62 +HEX_FLOAT=63 +COMMENT=64 +WS=65 +NL=66 +SHEBANG=67 ';'=1 '='=2 'break'=3 @@ -87,38 +86,37 @@ SHEBANG=68 '<'=19 '>'=20 'return'=21 -'continue'=22 -'::'=23 -'nil'=24 -'false'=25 -'true'=26 -'.'=27 -'~'=28 -'-'=29 -'#'=30 -'('=31 -')'=32 -'not'=33 -'<<'=34 -'>>'=35 -'&'=36 -'//'=37 -'%'=38 -':'=39 -'<='=40 -'>='=41 -'and'=42 -'or'=43 -'+'=44 -'*'=45 -'{'=46 -'}'=47 -'['=48 -']'=49 -'=='=50 -'..'=51 -'|'=52 -'^'=53 -'/'=54 -'...'=55 -'~='=56 +'::'=22 +'nil'=23 +'false'=24 +'true'=25 +'.'=26 +'~'=27 +'-'=28 +'#'=29 +'('=30 +')'=31 +'not'=32 +'<<'=33 +'>>'=34 +'&'=35 +'//'=36 +'%'=37 +':'=38 +'<='=39 +'>='=40 +'and'=41 +'or'=42 +'+'=43 +'*'=44 +'{'=45 +'}'=46 +'['=47 +']'=48 +'=='=49 +'..'=50 +'|'=51 +'^'=52 +'/'=53 +'...'=54 +'~='=55 diff --git a/src/parser/LuaParser.ts b/src/parser/LuaParser.ts index 94cfa68..c70777f 100644 --- a/src/parser/LuaParser.ts +++ b/src/parser/LuaParser.ts @@ -40,53 +40,52 @@ export default class LuaParser extends Parser { public static readonly LT = 19; public static readonly GT = 20; public static readonly RETURN = 21; - public static readonly CONTINUE = 22; - public static readonly CC = 23; - public static readonly NIL = 24; - public static readonly FALSE = 25; - public static readonly TRUE = 26; - public static readonly DOT = 27; - public static readonly SQUIG = 28; - public static readonly MINUS = 29; - public static readonly POUND = 30; - public static readonly OP = 31; - public static readonly CP = 32; - public static readonly NOT = 33; - public static readonly LL = 34; - public static readonly GG = 35; - public static readonly AMP = 36; - public static readonly SS = 37; - public static readonly PER = 38; - public static readonly COL = 39; - public static readonly LE = 40; - public static readonly GE = 41; - public static readonly AND = 42; - public static readonly OR = 43; - public static readonly PLUS = 44; - public static readonly STAR = 45; - public static readonly OCU = 46; - public static readonly CCU = 47; - public static readonly OB = 48; - public static readonly CB = 49; - public static readonly EE = 50; - public static readonly DD = 51; - public static readonly PIPE = 52; - public static readonly CARET = 53; - public static readonly SLASH = 54; - public static readonly DDD = 55; - public static readonly SQEQ = 56; - public static readonly NAME = 57; - public static readonly NORMALSTRING = 58; - public static readonly CHARSTRING = 59; - public static readonly LONGSTRING = 60; - public static readonly INT = 61; - public static readonly HEX = 62; - public static readonly FLOAT = 63; - public static readonly HEX_FLOAT = 64; - public static readonly COMMENT = 65; - public static readonly WS = 66; - public static readonly NL = 67; - public static readonly SHEBANG = 68; + public static readonly CC = 22; + public static readonly NIL = 23; + public static readonly FALSE = 24; + public static readonly TRUE = 25; + public static readonly DOT = 26; + public static readonly SQUIG = 27; + public static readonly MINUS = 28; + public static readonly POUND = 29; + public static readonly OP = 30; + public static readonly CP = 31; + public static readonly NOT = 32; + public static readonly LL = 33; + public static readonly GG = 34; + public static readonly AMP = 35; + public static readonly SS = 36; + public static readonly PER = 37; + public static readonly COL = 38; + public static readonly LE = 39; + public static readonly GE = 40; + public static readonly AND = 41; + public static readonly OR = 42; + public static readonly PLUS = 43; + public static readonly STAR = 44; + public static readonly OCU = 45; + public static readonly CCU = 46; + public static readonly OB = 47; + public static readonly CB = 48; + public static readonly EE = 49; + public static readonly DD = 50; + public static readonly PIPE = 51; + public static readonly CARET = 52; + public static readonly SLASH = 53; + public static readonly DDD = 54; + public static readonly SQEQ = 55; + public static readonly NAME = 56; + public static readonly NORMALSTRING = 57; + public static readonly CHARSTRING = 58; + public static readonly LONGSTRING = 59; + public static readonly INT = 60; + public static readonly HEX = 61; + public static readonly FLOAT = 62; + public static readonly HEX_FLOAT = 63; + public static readonly COMMENT = 64; + public static readonly WS = 65; + public static readonly NL = 66; + public static readonly SHEBANG = 67; public static override readonly EOF = Token.EOF; public static readonly RULE_start_ = 0; public static readonly RULE_chunk = 1; @@ -126,7 +125,6 @@ export default class LuaParser extends Parser { "'function'", "'local'", "'<'", "'>'", "'return'", - "'continue'", "'::'", "'nil'", "'false'", "'true'", "'.'", "'~'", @@ -155,7 +153,6 @@ export default class LuaParser extends Parser { "IN", "FUNCTION", "LOCAL", "LT", "GT", "RETURN", - "CONTINUE", "CC", "NIL", "FALSE", "TRUE", "DOT", "SQUIG", @@ -260,29 +257,26 @@ export default class LuaParser extends Parser { this.enterRule(localctx, 4, LuaParser.RULE_block); let _la: number; try { - let _alt: number; this.enterOuterAlt(localctx, 1); { this.state = 60; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 57; - this.stat(); - } - } + _la = this._input.LA(1); + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1078347194) !== 0) || _la===56) { + { + { + this.state = 57; + this.stat(); + } } this.state = 62; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); + _la = this._input.LA(1); } this.state = 64; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 6291464) !== 0)) { + if (_la===21) { { this.state = 63; this.retstat(); @@ -670,46 +664,24 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 170; + this.state = 164; + this.match(LuaParser.RETURN); + this.state = 166; this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 21: - { - this.state = 164; - this.match(LuaParser.RETURN); - this.state = 166; - this._errHandler.sync(this); - _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4144103424) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 4282392577) !== 0)) { - { - this.state = 165; - this.explist(); - } - } - - } - break; - case 3: - { - this.state = 168; - this.match(LuaParser.BREAK); - } - break; - case 22: + _la = this._input.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2072117248) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4282392577) !== 0)) { { - this.state = 169; - this.match(LuaParser.CONTINUE); + this.state = 165; + this.explist(); } - break; - default: - throw new NoViableAltException(this); } - this.state = 173; + + this.state = 169; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===1) { { - this.state = 172; + this.state = 168; this.match(LuaParser.SEMI); } } @@ -737,11 +709,11 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 175; + this.state = 171; this.match(LuaParser.CC); - this.state = 176; + this.state = 172; this.match(LuaParser.NAME); - this.state = 177; + this.state = 173; this.match(LuaParser.CC); } } @@ -767,32 +739,32 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 179; + this.state = 175; this.match(LuaParser.NAME); - this.state = 184; + this.state = 180; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===27) { + while (_la===26) { { { - this.state = 180; + this.state = 176; this.match(LuaParser.DOT); - this.state = 181; + this.state = 177; this.match(LuaParser.NAME); } } - this.state = 186; + this.state = 182; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 189; + this.state = 185; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===39) { + if (_la===38) { { - this.state = 187; + this.state = 183; this.match(LuaParser.COL); - this.state = 188; + this.state = 184; this.match(LuaParser.NAME); } } @@ -821,21 +793,21 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 191; + this.state = 187; this.var_(); - this.state = 196; + this.state = 192; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===15) { { { - this.state = 192; + this.state = 188; this.match(LuaParser.COMMA); - this.state = 193; + this.state = 189; this.var_(); } } - this.state = 198; + this.state = 194; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -863,25 +835,25 @@ export default class LuaParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 199; + this.state = 195; this.match(LuaParser.NAME); - this.state = 204; + this.state = 200; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 15, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 14, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 200; + this.state = 196; this.match(LuaParser.COMMA); - this.state = 201; + this.state = 197; this.match(LuaParser.NAME); } } } - this.state = 206; + this.state = 202; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 15, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 14, this._ctx); } } } @@ -907,21 +879,21 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 207; + this.state = 203; this.exp(0); - this.state = 212; + this.state = 208; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===15) { { { - this.state = 208; + this.state = 204; this.match(LuaParser.COMMA); - this.state = 209; + this.state = 205; this.exp(0); } } - this.state = 214; + this.state = 210; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -961,66 +933,66 @@ export default class LuaParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 227; + this.state = 223; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 24: + case 23: { localctx = new Exp_nilContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 216; + this.state = 212; this.match(LuaParser.NIL); } break; - case 25: + case 24: { localctx = new Exp_falseContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 217; + this.state = 213; this.match(LuaParser.FALSE); } break; - case 26: + case 25: { localctx = new Exp_trueContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 218; + this.state = 214; this.match(LuaParser.TRUE); } break; + case 60: case 61: case 62: case 63: - case 64: { localctx = new Exp_numberContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 219; + this.state = 215; this.number_(); } break; + case 57: case 58: case 59: - case 60: { localctx = new Exp_stringContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 220; + this.state = 216; this.string_(); } break; - case 55: + case 54: { localctx = new Exp_varargContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 221; + this.state = 217; this.match(LuaParser.DDD); } break; @@ -1029,47 +1001,47 @@ export default class LuaParser extends Parser { localctx = new Exp_function_defContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 222; + this.state = 218; this.functiondef(); } break; - case 31: - case 57: + case 30: + case 56: { localctx = new Stat_prefix_expContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 223; + this.state = 219; this.prefixexp(); } break; - case 46: + case 45: { localctx = new Stat_table_construnctorContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 224; + this.state = 220; this.tableconstructor(); } break; + case 27: case 28: case 29: - case 30: - case 33: + case 32: { localctx = new Exp_unaryContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 225; + this.state = 221; _la = this._input.LA(1); - if(!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 39) !== 0))) { + if(!(((((_la - 27)) & ~0x1F) === 0 && ((1 << (_la - 27)) & 39) !== 0))) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 226; + this.state = 222; this.exp(8); } break; @@ -1077,9 +1049,9 @@ export default class LuaParser extends Parser { throw new NoViableAltException(this); } this._ctx.stop = this._input.LT(-1); - this.state = 255; + this.state = 251; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 19, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -1087,22 +1059,22 @@ export default class LuaParser extends Parser { } _prevctx = localctx; { - this.state = 253; + this.state = 249; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 18, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 17, this._ctx) ) { case 1: { localctx = new Exp_exponentContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 229; + this.state = 225; if (!(this.precpred(this._ctx, 9))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 9)"); } { - this.state = 230; + this.state = 226; this.match(LuaParser.CARET); } - this.state = 231; + this.state = 227; this.exp(9); } break; @@ -1110,20 +1082,20 @@ export default class LuaParser extends Parser { { localctx = new Exp_arithmetic_highContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 232; + this.state = 228; if (!(this.precpred(this._ctx, 7))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 7)"); } - this.state = 233; + this.state = 229; _la = this._input.LA(1); - if(!(((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 131331) !== 0))) { + if(!(((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 131331) !== 0))) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 234; + this.state = 230; this.exp(8); } break; @@ -1131,20 +1103,20 @@ export default class LuaParser extends Parser { { localctx = new Exp_arithmetic_lowContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 235; + this.state = 231; if (!(this.precpred(this._ctx, 6))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 6)"); } - this.state = 236; + this.state = 232; _la = this._input.LA(1); - if(!(_la===29 || _la===44)) { + if(!(_la===28 || _la===43)) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 237; + this.state = 233; this.exp(7); } break; @@ -1152,15 +1124,15 @@ export default class LuaParser extends Parser { { localctx = new Exp_concatContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 238; + this.state = 234; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } { - this.state = 239; + this.state = 235; this.match(LuaParser.DD); } - this.state = 240; + this.state = 236; this.exp(5); } break; @@ -1168,20 +1140,20 @@ export default class LuaParser extends Parser { { localctx = new Exp_relContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 241; + this.state = 237; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 242; + this.state = 238; _la = this._input.LA(1); - if(!(_la===19 || _la===20 || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 66563) !== 0))) { + if(!(_la===19 || _la===20 || ((((_la - 39)) & ~0x1F) === 0 && ((1 << (_la - 39)) & 66563) !== 0))) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 243; + this.state = 239; this.exp(5); } break; @@ -1189,15 +1161,15 @@ export default class LuaParser extends Parser { { localctx = new Exp_andContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 244; + this.state = 240; if (!(this.precpred(this._ctx, 3))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); } { - this.state = 245; + this.state = 241; this.match(LuaParser.AND); } - this.state = 246; + this.state = 242; this.exp(4); } break; @@ -1205,15 +1177,15 @@ export default class LuaParser extends Parser { { localctx = new Exp_orContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 247; + this.state = 243; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } { - this.state = 248; + this.state = 244; this.match(LuaParser.OR); } - this.state = 249; + this.state = 245; this.exp(3); } break; @@ -1221,29 +1193,29 @@ export default class LuaParser extends Parser { { localctx = new Exp_bitsContext(this, new ExpContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_exp); - this.state = 250; + this.state = 246; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 251; + this.state = 247; _la = this._input.LA(1); - if(!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 16777665) !== 0))) { + if(!(((((_la - 27)) & ~0x1F) === 0 && ((1 << (_la - 27)) & 16777665) !== 0))) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 252; + this.state = 248; this.exp(2); } break; } } } - this.state = 257; + this.state = 253; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 19, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); } } } @@ -1266,14 +1238,14 @@ export default class LuaParser extends Parser { let localctx: VarContext = new VarContext(this, this._ctx, this.state); this.enterRule(localctx, 26, LuaParser.RULE_var); try { - this.state = 268; + this.state = 264; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 21, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 20, this._ctx) ) { case 1: localctx = new Var_nameContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 258; + this.state = 254; this.match(LuaParser.NAME); } break; @@ -1281,26 +1253,26 @@ export default class LuaParser extends Parser { localctx = new Var_expContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 259; + this.state = 255; this.prefixexp(); - this.state = 266; + this.state = 262; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 260; + this.state = 256; this.match(LuaParser.OB); - this.state = 261; + this.state = 257; this.exp(0); - this.state = 262; + this.state = 258; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 264; + this.state = 260; this.match(LuaParser.DOT); - this.state = 265; + this.state = 261; this.match(LuaParser.NAME); } break; @@ -1331,39 +1303,39 @@ export default class LuaParser extends Parser { this.enterRule(localctx, 28, LuaParser.RULE_prefixexp); try { let _alt: number; - this.state = 308; + this.state = 304; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 28, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 27, this._ctx) ) { case 1: localctx = new Prefixexp_nameContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 270; + this.state = 266; this.match(LuaParser.NAME); - this.state = 279; + this.state = 275; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 22, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { - this.state = 277; + this.state = 273; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 271; + this.state = 267; this.match(LuaParser.OB); - this.state = 272; + this.state = 268; this.exp(0); - this.state = 273; + this.state = 269; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 275; + this.state = 271; this.match(LuaParser.DOT); - this.state = 276; + this.state = 272; this.match(LuaParser.NAME); } break; @@ -1372,9 +1344,9 @@ export default class LuaParser extends Parser { } } } - this.state = 281; + this.state = 277; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 22, this._ctx); } } break; @@ -1382,32 +1354,32 @@ export default class LuaParser extends Parser { localctx = new Prefixexp_function_callContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 282; + this.state = 278; this.functioncall(0); - this.state = 291; + this.state = 287; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 25, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 24, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { - this.state = 289; + this.state = 285; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 283; + this.state = 279; this.match(LuaParser.OB); - this.state = 284; + this.state = 280; this.exp(0); - this.state = 285; + this.state = 281; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 287; + this.state = 283; this.match(LuaParser.DOT); - this.state = 288; + this.state = 284; this.match(LuaParser.NAME); } break; @@ -1416,9 +1388,9 @@ export default class LuaParser extends Parser { } } } - this.state = 293; + this.state = 289; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 25, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 24, this._ctx); } } break; @@ -1426,36 +1398,36 @@ export default class LuaParser extends Parser { localctx = new Prefixexp_expContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 294; + this.state = 290; this.match(LuaParser.OP); - this.state = 295; + this.state = 291; this.exp(0); - this.state = 296; + this.state = 292; this.match(LuaParser.CP); - this.state = 305; + this.state = 301; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 26, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { - this.state = 303; + this.state = 299; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 297; + this.state = 293; this.match(LuaParser.OB); - this.state = 298; + this.state = 294; this.exp(0); - this.state = 299; + this.state = 295; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 301; + this.state = 297; this.match(LuaParser.DOT); - this.state = 302; + this.state = 298; this.match(LuaParser.NAME); } break; @@ -1464,9 +1436,9 @@ export default class LuaParser extends Parser { } } } - this.state = 307; + this.state = 303; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 26, this._ctx); } } break; @@ -1506,40 +1478,40 @@ export default class LuaParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 373; + this.state = 369; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 37, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 36, this._ctx) ) { case 1: { localctx = new Fcall_nameContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 311; + this.state = 307; this.match(LuaParser.NAME); - this.state = 320; + this.state = 316; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===27 || _la===48) { + while (_la===26 || _la===47) { { - this.state = 318; + this.state = 314; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 312; + this.state = 308; this.match(LuaParser.OB); - this.state = 313; + this.state = 309; this.exp(0); - this.state = 314; + this.state = 310; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 316; + this.state = 312; this.match(LuaParser.DOT); - this.state = 317; + this.state = 313; this.match(LuaParser.NAME); } break; @@ -1547,11 +1519,11 @@ export default class LuaParser extends Parser { throw new NoViableAltException(this); } } - this.state = 322; + this.state = 318; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 323; + this.state = 319; this.args(); } break; @@ -1560,35 +1532,35 @@ export default class LuaParser extends Parser { localctx = new Fcall_expContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 324; + this.state = 320; this.match(LuaParser.OP); - this.state = 325; + this.state = 321; this.exp(0); - this.state = 326; + this.state = 322; this.match(LuaParser.CP); - this.state = 335; + this.state = 331; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===27 || _la===48) { + while (_la===26 || _la===47) { { - this.state = 333; + this.state = 329; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 327; + this.state = 323; this.match(LuaParser.OB); - this.state = 328; + this.state = 324; this.exp(0); - this.state = 329; + this.state = 325; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 331; + this.state = 327; this.match(LuaParser.DOT); - this.state = 332; + this.state = 328; this.match(LuaParser.NAME); } break; @@ -1596,11 +1568,11 @@ export default class LuaParser extends Parser { throw new NoViableAltException(this); } } - this.state = 337; + this.state = 333; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 338; + this.state = 334; this.args(); } break; @@ -1609,31 +1581,31 @@ export default class LuaParser extends Parser { localctx = new Fcall_name_extContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 340; + this.state = 336; this.match(LuaParser.NAME); - this.state = 349; + this.state = 345; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===27 || _la===48) { + while (_la===26 || _la===47) { { - this.state = 347; + this.state = 343; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 341; + this.state = 337; this.match(LuaParser.OB); - this.state = 342; + this.state = 338; this.exp(0); - this.state = 343; + this.state = 339; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 345; + this.state = 341; this.match(LuaParser.DOT); - this.state = 346; + this.state = 342; this.match(LuaParser.NAME); } break; @@ -1641,15 +1613,15 @@ export default class LuaParser extends Parser { throw new NoViableAltException(this); } } - this.state = 351; + this.state = 347; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 352; + this.state = 348; this.match(LuaParser.COL); - this.state = 353; + this.state = 349; this.match(LuaParser.NAME); - this.state = 354; + this.state = 350; this.args(); } break; @@ -1658,35 +1630,35 @@ export default class LuaParser extends Parser { localctx = new Fcall_exp_extContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 355; + this.state = 351; this.match(LuaParser.OP); - this.state = 356; + this.state = 352; this.exp(0); - this.state = 357; + this.state = 353; this.match(LuaParser.CP); - this.state = 366; + this.state = 362; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===27 || _la===48) { + while (_la===26 || _la===47) { { - this.state = 364; + this.state = 360; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 358; + this.state = 354; this.match(LuaParser.OB); - this.state = 359; + this.state = 355; this.exp(0); - this.state = 360; + this.state = 356; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 362; + this.state = 358; this.match(LuaParser.DOT); - this.state = 363; + this.state = 359; this.match(LuaParser.NAME); } break; @@ -1694,23 +1666,23 @@ export default class LuaParser extends Parser { throw new NoViableAltException(this); } } - this.state = 368; + this.state = 364; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 369; + this.state = 365; this.match(LuaParser.COL); - this.state = 370; + this.state = 366; this.match(LuaParser.NAME); - this.state = 371; + this.state = 367; this.args(); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 405; + this.state = 401; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 43, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 42, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { @@ -1718,40 +1690,40 @@ export default class LuaParser extends Parser { } _prevctx = localctx; { - this.state = 403; + this.state = 399; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 42, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 41, this._ctx) ) { case 1: { localctx = new Fcall_function_callContext(this, new FunctioncallContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_functioncall); - this.state = 375; + this.state = 371; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } - this.state = 384; + this.state = 380; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===27 || _la===48) { + while (_la===26 || _la===47) { { - this.state = 382; + this.state = 378; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 376; + this.state = 372; this.match(LuaParser.OB); - this.state = 377; + this.state = 373; this.exp(0); - this.state = 378; + this.state = 374; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 380; + this.state = 376; this.match(LuaParser.DOT); - this.state = 381; + this.state = 377; this.match(LuaParser.NAME); } break; @@ -1759,11 +1731,11 @@ export default class LuaParser extends Parser { throw new NoViableAltException(this); } } - this.state = 386; + this.state = 382; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 387; + this.state = 383; this.args(); } break; @@ -1771,33 +1743,33 @@ export default class LuaParser extends Parser { { localctx = new Fcall_function_call_extContext(this, new FunctioncallContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, LuaParser.RULE_functioncall); - this.state = 388; + this.state = 384; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 397; + this.state = 393; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===27 || _la===48) { + while (_la===26 || _la===47) { { - this.state = 395; + this.state = 391; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 48: + case 47: { - this.state = 389; + this.state = 385; this.match(LuaParser.OB); - this.state = 390; + this.state = 386; this.exp(0); - this.state = 391; + this.state = 387; this.match(LuaParser.CB); } break; - case 27: + case 26: { - this.state = 393; + this.state = 389; this.match(LuaParser.DOT); - this.state = 394; + this.state = 390; this.match(LuaParser.NAME); } break; @@ -1805,24 +1777,24 @@ export default class LuaParser extends Parser { throw new NoViableAltException(this); } } - this.state = 399; + this.state = 395; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 400; + this.state = 396; this.match(LuaParser.COL); - this.state = 401; + this.state = 397; this.match(LuaParser.NAME); - this.state = 402; + this.state = 398; this.args(); } break; } } } - this.state = 407; + this.state = 403; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 43, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 42, this._ctx); } } } @@ -1846,44 +1818,44 @@ export default class LuaParser extends Parser { this.enterRule(localctx, 32, LuaParser.RULE_args); let _la: number; try { - this.state = 415; + this.state = 411; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 31: + case 30: localctx = new Args_exp_listContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 408; + this.state = 404; this.match(LuaParser.OP); - this.state = 410; + this.state = 406; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4144103424) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 4282392577) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2072117248) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4282392577) !== 0)) { { - this.state = 409; + this.state = 405; this.explist(); } } - this.state = 412; + this.state = 408; this.match(LuaParser.CP); } break; - case 46: + case 45: localctx = new Args_table_constructorContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 413; + this.state = 409; this.tableconstructor(); } break; + case 57: case 58: case 59: - case 60: localctx = new Args_stringContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 414; + this.state = 410; this.string_(); } break; @@ -1912,9 +1884,9 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 417; + this.state = 413; this.match(LuaParser.FUNCTION); - this.state = 418; + this.state = 414; this.funcbody(); } } @@ -1939,15 +1911,15 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 420; + this.state = 416; this.match(LuaParser.OP); - this.state = 421; + this.state = 417; this.parlist(); - this.state = 422; + this.state = 418; this.match(LuaParser.CP); - this.state = 423; + this.state = 419; this.block(); - this.state = 424; + this.state = 420; this.match(LuaParser.END); } } @@ -1971,38 +1943,38 @@ export default class LuaParser extends Parser { this.enterRule(localctx, 38, LuaParser.RULE_parlist); let _la: number; try { - this.state = 433; + this.state = 429; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 57: + case 56: localctx = new Parlist_namellistContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 426; + this.state = 422; this.namelist(); - this.state = 429; + this.state = 425; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===15) { { - this.state = 427; + this.state = 423; this.match(LuaParser.COMMA); - this.state = 428; + this.state = 424; this.match(LuaParser.DDD); } } } break; - case 55: + case 54: localctx = new Parlist_varargContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 431; + this.state = 427; this.match(LuaParser.DDD); } break; - case 32: + case 31: localctx = new Parlist_noneContext(this, localctx); this.enterOuterAlt(localctx, 3); // tslint:disable-next-line:no-empty @@ -2035,19 +2007,19 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 435; + this.state = 431; this.match(LuaParser.OCU); - this.state = 437; + this.state = 433; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4144103424) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 4282425345) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2072117248) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4282425345) !== 0)) { { - this.state = 436; + this.state = 432; this.fieldlist(); } } - this.state = 439; + this.state = 435; this.match(LuaParser.CCU); } } @@ -2074,32 +2046,32 @@ export default class LuaParser extends Parser { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 441; + this.state = 437; this.field(); - this.state = 447; + this.state = 443; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 48, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 442; + this.state = 438; this.fieldsep(); - this.state = 443; + this.state = 439; this.field(); } } } - this.state = 449; + this.state = 445; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 48, this._ctx); } - this.state = 451; + this.state = 447; this._errHandler.sync(this); _la = this._input.LA(1); if (_la===1 || _la===15) { { - this.state = 450; + this.state = 446; this.fieldsep(); } } @@ -2125,22 +2097,22 @@ export default class LuaParser extends Parser { let localctx: FieldContext = new FieldContext(this, this._ctx, this.state); this.enterRule(localctx, 44, LuaParser.RULE_field); try { - this.state = 463; + this.state = 459; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 51, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 50, this._ctx) ) { case 1: localctx = new Field_exp_expContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 453; + this.state = 449; this.match(LuaParser.OB); - this.state = 454; + this.state = 450; this.exp(0); - this.state = 455; + this.state = 451; this.match(LuaParser.CB); - this.state = 456; + this.state = 452; this.match(LuaParser.EQ); - this.state = 457; + this.state = 453; this.exp(0); } break; @@ -2148,11 +2120,11 @@ export default class LuaParser extends Parser { localctx = new Field_name_expContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 459; + this.state = 455; this.match(LuaParser.NAME); - this.state = 460; + this.state = 456; this.match(LuaParser.EQ); - this.state = 461; + this.state = 457; this.exp(0); } break; @@ -2160,7 +2132,7 @@ export default class LuaParser extends Parser { localctx = new Field_expContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 462; + this.state = 458; this.exp(0); } break; @@ -2188,7 +2160,7 @@ export default class LuaParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 465; + this.state = 461; _la = this._input.LA(1); if(!(_la===1 || _la===15)) { this._errHandler.recoverInline(this); @@ -2218,38 +2190,38 @@ export default class LuaParser extends Parser { let localctx: NumberContext = new NumberContext(this, this._ctx, this.state); this.enterRule(localctx, 48, LuaParser.RULE_number); try { - this.state = 471; + this.state = 467; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 61: + case 60: localctx = new Number_intContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 467; + this.state = 463; this.match(LuaParser.INT); } break; - case 62: + case 61: localctx = new Number_hexContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 468; + this.state = 464; this.match(LuaParser.HEX); } break; - case 63: + case 62: localctx = new Number_floatContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 469; + this.state = 465; this.match(LuaParser.FLOAT); } break; - case 64: + case 63: localctx = new Number_hex_floatContext(this, localctx); this.enterOuterAlt(localctx, 4); { - this.state = 470; + this.state = 466; this.match(LuaParser.HEX_FLOAT); } break; @@ -2276,30 +2248,30 @@ export default class LuaParser extends Parser { let localctx: StringContext = new StringContext(this, this._ctx, this.state); this.enterRule(localctx, 50, LuaParser.RULE_string); try { - this.state = 476; + this.state = 472; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 58: + case 57: localctx = new String_stringContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 473; + this.state = 469; this.match(LuaParser.NORMALSTRING); } break; - case 59: + case 58: localctx = new String_charstringContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 474; + this.state = 470; this.match(LuaParser.CHARSTRING); } break; - case 60: + case 59: localctx = new String_longstringContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 475; + this.state = 471; this.match(LuaParser.LONGSTRING); } break; @@ -2362,7 +2334,7 @@ export default class LuaParser extends Parser { return true; } - public static readonly _serializedATN: number[] = [4,1,68,479,2,0,7,0,2, + public static readonly _serializedATN: number[] = [4,1,67,475,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, @@ -2373,160 +2345,158 @@ export default class LuaParser extends Parser { 1,3,1,3,1,3,1,3,1,3,3,3,120,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3, 1,3,1,3,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,146,8,3,3,3, 148,8,3,1,4,1,4,1,4,1,4,1,4,5,4,155,8,4,10,4,12,4,158,9,4,1,5,1,5,1,5,3, - 5,163,8,5,1,6,1,6,3,6,167,8,6,1,6,1,6,3,6,171,8,6,1,6,3,6,174,8,6,1,7,1, - 7,1,7,1,7,1,8,1,8,1,8,5,8,183,8,8,10,8,12,8,186,9,8,1,8,1,8,3,8,190,8,8, - 1,9,1,9,1,9,5,9,195,8,9,10,9,12,9,198,9,9,1,10,1,10,1,10,5,10,203,8,10, - 10,10,12,10,206,9,10,1,11,1,11,1,11,5,11,211,8,11,10,11,12,11,214,9,11, - 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,228,8, - 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12, - 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,5,12,254,8,12,10,12,12, - 12,257,9,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,3,13,267,8,13,3,13, - 269,8,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,5,14,278,8,14,10,14,12,14,281, - 9,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,5,14,290,8,14,10,14,12,14,293,9, - 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,5,14,304,8,14,10,14,12, - 14,307,9,14,3,14,309,8,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15, - 319,8,15,10,15,12,15,322,9,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1, - 15,1,15,5,15,334,8,15,10,15,12,15,337,9,15,1,15,1,15,1,15,1,15,1,15,1,15, - 1,15,1,15,1,15,5,15,348,8,15,10,15,12,15,351,9,15,1,15,1,15,1,15,1,15,1, - 15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15,365,8,15,10,15,12,15,368,9,15, - 1,15,1,15,1,15,1,15,3,15,374,8,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5, - 15,383,8,15,10,15,12,15,386,9,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15, - 5,15,396,8,15,10,15,12,15,399,9,15,1,15,1,15,1,15,5,15,404,8,15,10,15,12, - 15,407,9,15,1,16,1,16,3,16,411,8,16,1,16,1,16,1,16,3,16,416,8,16,1,17,1, - 17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,3,19,430,8,19,1,19, - 1,19,3,19,434,8,19,1,20,1,20,3,20,438,8,20,1,20,1,20,1,21,1,21,1,21,1,21, - 5,21,446,8,21,10,21,12,21,449,9,21,1,21,3,21,452,8,21,1,22,1,22,1,22,1, - 22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,464,8,22,1,23,1,23,1,24,1,24,1,24, - 1,24,3,24,472,8,24,1,25,1,25,1,25,3,25,477,8,25,1,25,0,2,24,30,26,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,0,6, - 2,0,28,30,33,33,3,0,37,38,45,45,54,54,2,0,29,29,44,44,4,0,19,20,40,41,50, - 50,56,56,3,0,28,28,34,36,52,52,2,0,1,1,15,15,543,0,52,1,0,0,0,2,55,1,0, - 0,0,4,60,1,0,0,0,6,147,1,0,0,0,8,149,1,0,0,0,10,162,1,0,0,0,12,170,1,0, - 0,0,14,175,1,0,0,0,16,179,1,0,0,0,18,191,1,0,0,0,20,199,1,0,0,0,22,207, - 1,0,0,0,24,227,1,0,0,0,26,268,1,0,0,0,28,308,1,0,0,0,30,373,1,0,0,0,32, - 415,1,0,0,0,34,417,1,0,0,0,36,420,1,0,0,0,38,433,1,0,0,0,40,435,1,0,0,0, - 42,441,1,0,0,0,44,463,1,0,0,0,46,465,1,0,0,0,48,471,1,0,0,0,50,476,1,0, - 0,0,52,53,3,2,1,0,53,54,5,0,0,1,54,1,1,0,0,0,55,56,3,4,2,0,56,3,1,0,0,0, - 57,59,3,6,3,0,58,57,1,0,0,0,59,62,1,0,0,0,60,58,1,0,0,0,60,61,1,0,0,0,61, - 64,1,0,0,0,62,60,1,0,0,0,63,65,3,12,6,0,64,63,1,0,0,0,64,65,1,0,0,0,65, - 5,1,0,0,0,66,148,5,1,0,0,67,68,3,18,9,0,68,69,5,2,0,0,69,70,3,22,11,0,70, - 148,1,0,0,0,71,148,3,30,15,0,72,148,3,14,7,0,73,148,5,3,0,0,74,75,5,4,0, - 0,75,148,5,57,0,0,76,77,5,5,0,0,77,78,3,4,2,0,78,79,5,6,0,0,79,148,1,0, - 0,0,80,81,5,7,0,0,81,82,3,24,12,0,82,83,5,5,0,0,83,84,3,4,2,0,84,85,5,6, - 0,0,85,148,1,0,0,0,86,87,5,8,0,0,87,88,3,4,2,0,88,89,5,9,0,0,89,90,3,24, - 12,0,90,148,1,0,0,0,91,92,5,10,0,0,92,93,3,24,12,0,93,94,5,11,0,0,94,102, - 3,4,2,0,95,96,5,12,0,0,96,97,3,24,12,0,97,98,5,11,0,0,98,99,3,4,2,0,99, - 101,1,0,0,0,100,95,1,0,0,0,101,104,1,0,0,0,102,100,1,0,0,0,102,103,1,0, - 0,0,103,107,1,0,0,0,104,102,1,0,0,0,105,106,5,13,0,0,106,108,3,4,2,0,107, - 105,1,0,0,0,107,108,1,0,0,0,108,109,1,0,0,0,109,110,5,6,0,0,110,148,1,0, - 0,0,111,112,5,14,0,0,112,113,5,57,0,0,113,114,5,2,0,0,114,115,3,24,12,0, - 115,116,5,15,0,0,116,119,3,24,12,0,117,118,5,15,0,0,118,120,3,24,12,0,119, - 117,1,0,0,0,119,120,1,0,0,0,120,121,1,0,0,0,121,122,5,5,0,0,122,123,3,4, - 2,0,123,124,5,6,0,0,124,148,1,0,0,0,125,126,5,14,0,0,126,127,3,20,10,0, - 127,128,5,16,0,0,128,129,3,22,11,0,129,130,5,5,0,0,130,131,3,4,2,0,131, - 132,5,6,0,0,132,148,1,0,0,0,133,134,5,17,0,0,134,135,3,16,8,0,135,136,3, - 36,18,0,136,148,1,0,0,0,137,138,5,18,0,0,138,139,5,17,0,0,139,140,5,57, - 0,0,140,148,3,36,18,0,141,142,5,18,0,0,142,145,3,8,4,0,143,144,5,2,0,0, - 144,146,3,22,11,0,145,143,1,0,0,0,145,146,1,0,0,0,146,148,1,0,0,0,147,66, - 1,0,0,0,147,67,1,0,0,0,147,71,1,0,0,0,147,72,1,0,0,0,147,73,1,0,0,0,147, - 74,1,0,0,0,147,76,1,0,0,0,147,80,1,0,0,0,147,86,1,0,0,0,147,91,1,0,0,0, - 147,111,1,0,0,0,147,125,1,0,0,0,147,133,1,0,0,0,147,137,1,0,0,0,147,141, - 1,0,0,0,148,7,1,0,0,0,149,150,5,57,0,0,150,156,3,10,5,0,151,152,5,15,0, - 0,152,153,5,57,0,0,153,155,3,10,5,0,154,151,1,0,0,0,155,158,1,0,0,0,156, - 154,1,0,0,0,156,157,1,0,0,0,157,9,1,0,0,0,158,156,1,0,0,0,159,160,5,19, - 0,0,160,161,5,57,0,0,161,163,5,20,0,0,162,159,1,0,0,0,162,163,1,0,0,0,163, - 11,1,0,0,0,164,166,5,21,0,0,165,167,3,22,11,0,166,165,1,0,0,0,166,167,1, - 0,0,0,167,171,1,0,0,0,168,171,5,3,0,0,169,171,5,22,0,0,170,164,1,0,0,0, - 170,168,1,0,0,0,170,169,1,0,0,0,171,173,1,0,0,0,172,174,5,1,0,0,173,172, - 1,0,0,0,173,174,1,0,0,0,174,13,1,0,0,0,175,176,5,23,0,0,176,177,5,57,0, - 0,177,178,5,23,0,0,178,15,1,0,0,0,179,184,5,57,0,0,180,181,5,27,0,0,181, - 183,5,57,0,0,182,180,1,0,0,0,183,186,1,0,0,0,184,182,1,0,0,0,184,185,1, - 0,0,0,185,189,1,0,0,0,186,184,1,0,0,0,187,188,5,39,0,0,188,190,5,57,0,0, - 189,187,1,0,0,0,189,190,1,0,0,0,190,17,1,0,0,0,191,196,3,26,13,0,192,193, - 5,15,0,0,193,195,3,26,13,0,194,192,1,0,0,0,195,198,1,0,0,0,196,194,1,0, - 0,0,196,197,1,0,0,0,197,19,1,0,0,0,198,196,1,0,0,0,199,204,5,57,0,0,200, - 201,5,15,0,0,201,203,5,57,0,0,202,200,1,0,0,0,203,206,1,0,0,0,204,202,1, - 0,0,0,204,205,1,0,0,0,205,21,1,0,0,0,206,204,1,0,0,0,207,212,3,24,12,0, - 208,209,5,15,0,0,209,211,3,24,12,0,210,208,1,0,0,0,211,214,1,0,0,0,212, - 210,1,0,0,0,212,213,1,0,0,0,213,23,1,0,0,0,214,212,1,0,0,0,215,216,6,12, - -1,0,216,228,5,24,0,0,217,228,5,25,0,0,218,228,5,26,0,0,219,228,3,48,24, - 0,220,228,3,50,25,0,221,228,5,55,0,0,222,228,3,34,17,0,223,228,3,28,14, - 0,224,228,3,40,20,0,225,226,7,0,0,0,226,228,3,24,12,8,227,215,1,0,0,0,227, - 217,1,0,0,0,227,218,1,0,0,0,227,219,1,0,0,0,227,220,1,0,0,0,227,221,1,0, - 0,0,227,222,1,0,0,0,227,223,1,0,0,0,227,224,1,0,0,0,227,225,1,0,0,0,228, - 255,1,0,0,0,229,230,10,9,0,0,230,231,5,53,0,0,231,254,3,24,12,9,232,233, - 10,7,0,0,233,234,7,1,0,0,234,254,3,24,12,8,235,236,10,6,0,0,236,237,7,2, - 0,0,237,254,3,24,12,7,238,239,10,5,0,0,239,240,5,51,0,0,240,254,3,24,12, - 5,241,242,10,4,0,0,242,243,7,3,0,0,243,254,3,24,12,5,244,245,10,3,0,0,245, - 246,5,42,0,0,246,254,3,24,12,4,247,248,10,2,0,0,248,249,5,43,0,0,249,254, - 3,24,12,3,250,251,10,1,0,0,251,252,7,4,0,0,252,254,3,24,12,2,253,229,1, - 0,0,0,253,232,1,0,0,0,253,235,1,0,0,0,253,238,1,0,0,0,253,241,1,0,0,0,253, - 244,1,0,0,0,253,247,1,0,0,0,253,250,1,0,0,0,254,257,1,0,0,0,255,253,1,0, - 0,0,255,256,1,0,0,0,256,25,1,0,0,0,257,255,1,0,0,0,258,269,5,57,0,0,259, - 266,3,28,14,0,260,261,5,48,0,0,261,262,3,24,12,0,262,263,5,49,0,0,263,267, - 1,0,0,0,264,265,5,27,0,0,265,267,5,57,0,0,266,260,1,0,0,0,266,264,1,0,0, - 0,267,269,1,0,0,0,268,258,1,0,0,0,268,259,1,0,0,0,269,27,1,0,0,0,270,279, - 5,57,0,0,271,272,5,48,0,0,272,273,3,24,12,0,273,274,5,49,0,0,274,278,1, - 0,0,0,275,276,5,27,0,0,276,278,5,57,0,0,277,271,1,0,0,0,277,275,1,0,0,0, - 278,281,1,0,0,0,279,277,1,0,0,0,279,280,1,0,0,0,280,309,1,0,0,0,281,279, - 1,0,0,0,282,291,3,30,15,0,283,284,5,48,0,0,284,285,3,24,12,0,285,286,5, - 49,0,0,286,290,1,0,0,0,287,288,5,27,0,0,288,290,5,57,0,0,289,283,1,0,0, - 0,289,287,1,0,0,0,290,293,1,0,0,0,291,289,1,0,0,0,291,292,1,0,0,0,292,309, - 1,0,0,0,293,291,1,0,0,0,294,295,5,31,0,0,295,296,3,24,12,0,296,305,5,32, - 0,0,297,298,5,48,0,0,298,299,3,24,12,0,299,300,5,49,0,0,300,304,1,0,0,0, - 301,302,5,27,0,0,302,304,5,57,0,0,303,297,1,0,0,0,303,301,1,0,0,0,304,307, - 1,0,0,0,305,303,1,0,0,0,305,306,1,0,0,0,306,309,1,0,0,0,307,305,1,0,0,0, - 308,270,1,0,0,0,308,282,1,0,0,0,308,294,1,0,0,0,309,29,1,0,0,0,310,311, - 6,15,-1,0,311,320,5,57,0,0,312,313,5,48,0,0,313,314,3,24,12,0,314,315,5, - 49,0,0,315,319,1,0,0,0,316,317,5,27,0,0,317,319,5,57,0,0,318,312,1,0,0, - 0,318,316,1,0,0,0,319,322,1,0,0,0,320,318,1,0,0,0,320,321,1,0,0,0,321,323, - 1,0,0,0,322,320,1,0,0,0,323,374,3,32,16,0,324,325,5,31,0,0,325,326,3,24, - 12,0,326,335,5,32,0,0,327,328,5,48,0,0,328,329,3,24,12,0,329,330,5,49,0, - 0,330,334,1,0,0,0,331,332,5,27,0,0,332,334,5,57,0,0,333,327,1,0,0,0,333, - 331,1,0,0,0,334,337,1,0,0,0,335,333,1,0,0,0,335,336,1,0,0,0,336,338,1,0, - 0,0,337,335,1,0,0,0,338,339,3,32,16,0,339,374,1,0,0,0,340,349,5,57,0,0, - 341,342,5,48,0,0,342,343,3,24,12,0,343,344,5,49,0,0,344,348,1,0,0,0,345, - 346,5,27,0,0,346,348,5,57,0,0,347,341,1,0,0,0,347,345,1,0,0,0,348,351,1, - 0,0,0,349,347,1,0,0,0,349,350,1,0,0,0,350,352,1,0,0,0,351,349,1,0,0,0,352, - 353,5,39,0,0,353,354,5,57,0,0,354,374,3,32,16,0,355,356,5,31,0,0,356,357, - 3,24,12,0,357,366,5,32,0,0,358,359,5,48,0,0,359,360,3,24,12,0,360,361,5, - 49,0,0,361,365,1,0,0,0,362,363,5,27,0,0,363,365,5,57,0,0,364,358,1,0,0, - 0,364,362,1,0,0,0,365,368,1,0,0,0,366,364,1,0,0,0,366,367,1,0,0,0,367,369, - 1,0,0,0,368,366,1,0,0,0,369,370,5,39,0,0,370,371,5,57,0,0,371,372,3,32, - 16,0,372,374,1,0,0,0,373,310,1,0,0,0,373,324,1,0,0,0,373,340,1,0,0,0,373, - 355,1,0,0,0,374,405,1,0,0,0,375,384,10,5,0,0,376,377,5,48,0,0,377,378,3, - 24,12,0,378,379,5,49,0,0,379,383,1,0,0,0,380,381,5,27,0,0,381,383,5,57, - 0,0,382,376,1,0,0,0,382,380,1,0,0,0,383,386,1,0,0,0,384,382,1,0,0,0,384, - 385,1,0,0,0,385,387,1,0,0,0,386,384,1,0,0,0,387,404,3,32,16,0,388,397,10, - 2,0,0,389,390,5,48,0,0,390,391,3,24,12,0,391,392,5,49,0,0,392,396,1,0,0, - 0,393,394,5,27,0,0,394,396,5,57,0,0,395,389,1,0,0,0,395,393,1,0,0,0,396, - 399,1,0,0,0,397,395,1,0,0,0,397,398,1,0,0,0,398,400,1,0,0,0,399,397,1,0, - 0,0,400,401,5,39,0,0,401,402,5,57,0,0,402,404,3,32,16,0,403,375,1,0,0,0, - 403,388,1,0,0,0,404,407,1,0,0,0,405,403,1,0,0,0,405,406,1,0,0,0,406,31, - 1,0,0,0,407,405,1,0,0,0,408,410,5,31,0,0,409,411,3,22,11,0,410,409,1,0, - 0,0,410,411,1,0,0,0,411,412,1,0,0,0,412,416,5,32,0,0,413,416,3,40,20,0, - 414,416,3,50,25,0,415,408,1,0,0,0,415,413,1,0,0,0,415,414,1,0,0,0,416,33, - 1,0,0,0,417,418,5,17,0,0,418,419,3,36,18,0,419,35,1,0,0,0,420,421,5,31, - 0,0,421,422,3,38,19,0,422,423,5,32,0,0,423,424,3,4,2,0,424,425,5,6,0,0, - 425,37,1,0,0,0,426,429,3,20,10,0,427,428,5,15,0,0,428,430,5,55,0,0,429, - 427,1,0,0,0,429,430,1,0,0,0,430,434,1,0,0,0,431,434,5,55,0,0,432,434,1, - 0,0,0,433,426,1,0,0,0,433,431,1,0,0,0,433,432,1,0,0,0,434,39,1,0,0,0,435, - 437,5,46,0,0,436,438,3,42,21,0,437,436,1,0,0,0,437,438,1,0,0,0,438,439, - 1,0,0,0,439,440,5,47,0,0,440,41,1,0,0,0,441,447,3,44,22,0,442,443,3,46, - 23,0,443,444,3,44,22,0,444,446,1,0,0,0,445,442,1,0,0,0,446,449,1,0,0,0, - 447,445,1,0,0,0,447,448,1,0,0,0,448,451,1,0,0,0,449,447,1,0,0,0,450,452, - 3,46,23,0,451,450,1,0,0,0,451,452,1,0,0,0,452,43,1,0,0,0,453,454,5,48,0, - 0,454,455,3,24,12,0,455,456,5,49,0,0,456,457,5,2,0,0,457,458,3,24,12,0, - 458,464,1,0,0,0,459,460,5,57,0,0,460,461,5,2,0,0,461,464,3,24,12,0,462, - 464,3,24,12,0,463,453,1,0,0,0,463,459,1,0,0,0,463,462,1,0,0,0,464,45,1, - 0,0,0,465,466,7,5,0,0,466,47,1,0,0,0,467,472,5,61,0,0,468,472,5,62,0,0, - 469,472,5,63,0,0,470,472,5,64,0,0,471,467,1,0,0,0,471,468,1,0,0,0,471,469, - 1,0,0,0,471,470,1,0,0,0,472,49,1,0,0,0,473,477,5,58,0,0,474,477,5,59,0, - 0,475,477,5,60,0,0,476,473,1,0,0,0,476,474,1,0,0,0,476,475,1,0,0,0,477, - 51,1,0,0,0,54,60,64,102,107,119,145,147,156,162,166,170,173,184,189,196, - 204,212,227,253,255,266,268,277,279,289,291,303,305,308,318,320,333,335, - 347,349,364,366,373,382,384,395,397,403,405,410,415,429,433,437,447,451, - 463,471,476]; + 5,163,8,5,1,6,1,6,3,6,167,8,6,1,6,3,6,170,8,6,1,7,1,7,1,7,1,7,1,8,1,8,1, + 8,5,8,179,8,8,10,8,12,8,182,9,8,1,8,1,8,3,8,186,8,8,1,9,1,9,1,9,5,9,191, + 8,9,10,9,12,9,194,9,9,1,10,1,10,1,10,5,10,199,8,10,10,10,12,10,202,9,10, + 1,11,1,11,1,11,5,11,207,8,11,10,11,12,11,210,9,11,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,224,8,12,1,12,1,12,1,12,1,12, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1, + 12,1,12,1,12,1,12,1,12,1,12,5,12,250,8,12,10,12,12,12,253,9,12,1,13,1,13, + 1,13,1,13,1,13,1,13,1,13,1,13,3,13,263,8,13,3,13,265,8,13,1,14,1,14,1,14, + 1,14,1,14,1,14,1,14,5,14,274,8,14,10,14,12,14,277,9,14,1,14,1,14,1,14,1, + 14,1,14,1,14,1,14,5,14,286,8,14,10,14,12,14,289,9,14,1,14,1,14,1,14,1,14, + 1,14,1,14,1,14,1,14,1,14,5,14,300,8,14,10,14,12,14,303,9,14,3,14,305,8, + 14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15,315,8,15,10,15,12,15,318, + 9,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15,330,8,15,10, + 15,12,15,333,9,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15,344, + 8,15,10,15,12,15,347,9,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15, + 1,15,1,15,1,15,5,15,361,8,15,10,15,12,15,364,9,15,1,15,1,15,1,15,1,15,3, + 15,370,8,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15,379,8,15,10,15,12,15, + 382,9,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,5,15,392,8,15,10,15,12, + 15,395,9,15,1,15,1,15,1,15,5,15,400,8,15,10,15,12,15,403,9,15,1,16,1,16, + 3,16,407,8,16,1,16,1,16,1,16,3,16,412,8,16,1,17,1,17,1,17,1,18,1,18,1,18, + 1,18,1,18,1,18,1,19,1,19,1,19,3,19,426,8,19,1,19,1,19,3,19,430,8,19,1,20, + 1,20,3,20,434,8,20,1,20,1,20,1,21,1,21,1,21,1,21,5,21,442,8,21,10,21,12, + 21,445,9,21,1,21,3,21,448,8,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22, + 1,22,1,22,3,22,460,8,22,1,23,1,23,1,24,1,24,1,24,1,24,3,24,468,8,24,1,25, + 1,25,1,25,3,25,473,8,25,1,25,0,2,24,30,26,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,0,6,2,0,27,29,32,32,3,0,36,37, + 44,44,53,53,2,0,28,28,43,43,4,0,19,20,39,40,49,49,55,55,3,0,27,27,33,35, + 51,51,2,0,1,1,15,15,537,0,52,1,0,0,0,2,55,1,0,0,0,4,60,1,0,0,0,6,147,1, + 0,0,0,8,149,1,0,0,0,10,162,1,0,0,0,12,164,1,0,0,0,14,171,1,0,0,0,16,175, + 1,0,0,0,18,187,1,0,0,0,20,195,1,0,0,0,22,203,1,0,0,0,24,223,1,0,0,0,26, + 264,1,0,0,0,28,304,1,0,0,0,30,369,1,0,0,0,32,411,1,0,0,0,34,413,1,0,0,0, + 36,416,1,0,0,0,38,429,1,0,0,0,40,431,1,0,0,0,42,437,1,0,0,0,44,459,1,0, + 0,0,46,461,1,0,0,0,48,467,1,0,0,0,50,472,1,0,0,0,52,53,3,2,1,0,53,54,5, + 0,0,1,54,1,1,0,0,0,55,56,3,4,2,0,56,3,1,0,0,0,57,59,3,6,3,0,58,57,1,0,0, + 0,59,62,1,0,0,0,60,58,1,0,0,0,60,61,1,0,0,0,61,64,1,0,0,0,62,60,1,0,0,0, + 63,65,3,12,6,0,64,63,1,0,0,0,64,65,1,0,0,0,65,5,1,0,0,0,66,148,5,1,0,0, + 67,68,3,18,9,0,68,69,5,2,0,0,69,70,3,22,11,0,70,148,1,0,0,0,71,148,3,30, + 15,0,72,148,3,14,7,0,73,148,5,3,0,0,74,75,5,4,0,0,75,148,5,56,0,0,76,77, + 5,5,0,0,77,78,3,4,2,0,78,79,5,6,0,0,79,148,1,0,0,0,80,81,5,7,0,0,81,82, + 3,24,12,0,82,83,5,5,0,0,83,84,3,4,2,0,84,85,5,6,0,0,85,148,1,0,0,0,86,87, + 5,8,0,0,87,88,3,4,2,0,88,89,5,9,0,0,89,90,3,24,12,0,90,148,1,0,0,0,91,92, + 5,10,0,0,92,93,3,24,12,0,93,94,5,11,0,0,94,102,3,4,2,0,95,96,5,12,0,0,96, + 97,3,24,12,0,97,98,5,11,0,0,98,99,3,4,2,0,99,101,1,0,0,0,100,95,1,0,0,0, + 101,104,1,0,0,0,102,100,1,0,0,0,102,103,1,0,0,0,103,107,1,0,0,0,104,102, + 1,0,0,0,105,106,5,13,0,0,106,108,3,4,2,0,107,105,1,0,0,0,107,108,1,0,0, + 0,108,109,1,0,0,0,109,110,5,6,0,0,110,148,1,0,0,0,111,112,5,14,0,0,112, + 113,5,56,0,0,113,114,5,2,0,0,114,115,3,24,12,0,115,116,5,15,0,0,116,119, + 3,24,12,0,117,118,5,15,0,0,118,120,3,24,12,0,119,117,1,0,0,0,119,120,1, + 0,0,0,120,121,1,0,0,0,121,122,5,5,0,0,122,123,3,4,2,0,123,124,5,6,0,0,124, + 148,1,0,0,0,125,126,5,14,0,0,126,127,3,20,10,0,127,128,5,16,0,0,128,129, + 3,22,11,0,129,130,5,5,0,0,130,131,3,4,2,0,131,132,5,6,0,0,132,148,1,0,0, + 0,133,134,5,17,0,0,134,135,3,16,8,0,135,136,3,36,18,0,136,148,1,0,0,0,137, + 138,5,18,0,0,138,139,5,17,0,0,139,140,5,56,0,0,140,148,3,36,18,0,141,142, + 5,18,0,0,142,145,3,8,4,0,143,144,5,2,0,0,144,146,3,22,11,0,145,143,1,0, + 0,0,145,146,1,0,0,0,146,148,1,0,0,0,147,66,1,0,0,0,147,67,1,0,0,0,147,71, + 1,0,0,0,147,72,1,0,0,0,147,73,1,0,0,0,147,74,1,0,0,0,147,76,1,0,0,0,147, + 80,1,0,0,0,147,86,1,0,0,0,147,91,1,0,0,0,147,111,1,0,0,0,147,125,1,0,0, + 0,147,133,1,0,0,0,147,137,1,0,0,0,147,141,1,0,0,0,148,7,1,0,0,0,149,150, + 5,56,0,0,150,156,3,10,5,0,151,152,5,15,0,0,152,153,5,56,0,0,153,155,3,10, + 5,0,154,151,1,0,0,0,155,158,1,0,0,0,156,154,1,0,0,0,156,157,1,0,0,0,157, + 9,1,0,0,0,158,156,1,0,0,0,159,160,5,19,0,0,160,161,5,56,0,0,161,163,5,20, + 0,0,162,159,1,0,0,0,162,163,1,0,0,0,163,11,1,0,0,0,164,166,5,21,0,0,165, + 167,3,22,11,0,166,165,1,0,0,0,166,167,1,0,0,0,167,169,1,0,0,0,168,170,5, + 1,0,0,169,168,1,0,0,0,169,170,1,0,0,0,170,13,1,0,0,0,171,172,5,22,0,0,172, + 173,5,56,0,0,173,174,5,22,0,0,174,15,1,0,0,0,175,180,5,56,0,0,176,177,5, + 26,0,0,177,179,5,56,0,0,178,176,1,0,0,0,179,182,1,0,0,0,180,178,1,0,0,0, + 180,181,1,0,0,0,181,185,1,0,0,0,182,180,1,0,0,0,183,184,5,38,0,0,184,186, + 5,56,0,0,185,183,1,0,0,0,185,186,1,0,0,0,186,17,1,0,0,0,187,192,3,26,13, + 0,188,189,5,15,0,0,189,191,3,26,13,0,190,188,1,0,0,0,191,194,1,0,0,0,192, + 190,1,0,0,0,192,193,1,0,0,0,193,19,1,0,0,0,194,192,1,0,0,0,195,200,5,56, + 0,0,196,197,5,15,0,0,197,199,5,56,0,0,198,196,1,0,0,0,199,202,1,0,0,0,200, + 198,1,0,0,0,200,201,1,0,0,0,201,21,1,0,0,0,202,200,1,0,0,0,203,208,3,24, + 12,0,204,205,5,15,0,0,205,207,3,24,12,0,206,204,1,0,0,0,207,210,1,0,0,0, + 208,206,1,0,0,0,208,209,1,0,0,0,209,23,1,0,0,0,210,208,1,0,0,0,211,212, + 6,12,-1,0,212,224,5,23,0,0,213,224,5,24,0,0,214,224,5,25,0,0,215,224,3, + 48,24,0,216,224,3,50,25,0,217,224,5,54,0,0,218,224,3,34,17,0,219,224,3, + 28,14,0,220,224,3,40,20,0,221,222,7,0,0,0,222,224,3,24,12,8,223,211,1,0, + 0,0,223,213,1,0,0,0,223,214,1,0,0,0,223,215,1,0,0,0,223,216,1,0,0,0,223, + 217,1,0,0,0,223,218,1,0,0,0,223,219,1,0,0,0,223,220,1,0,0,0,223,221,1,0, + 0,0,224,251,1,0,0,0,225,226,10,9,0,0,226,227,5,52,0,0,227,250,3,24,12,9, + 228,229,10,7,0,0,229,230,7,1,0,0,230,250,3,24,12,8,231,232,10,6,0,0,232, + 233,7,2,0,0,233,250,3,24,12,7,234,235,10,5,0,0,235,236,5,50,0,0,236,250, + 3,24,12,5,237,238,10,4,0,0,238,239,7,3,0,0,239,250,3,24,12,5,240,241,10, + 3,0,0,241,242,5,41,0,0,242,250,3,24,12,4,243,244,10,2,0,0,244,245,5,42, + 0,0,245,250,3,24,12,3,246,247,10,1,0,0,247,248,7,4,0,0,248,250,3,24,12, + 2,249,225,1,0,0,0,249,228,1,0,0,0,249,231,1,0,0,0,249,234,1,0,0,0,249,237, + 1,0,0,0,249,240,1,0,0,0,249,243,1,0,0,0,249,246,1,0,0,0,250,253,1,0,0,0, + 251,249,1,0,0,0,251,252,1,0,0,0,252,25,1,0,0,0,253,251,1,0,0,0,254,265, + 5,56,0,0,255,262,3,28,14,0,256,257,5,47,0,0,257,258,3,24,12,0,258,259,5, + 48,0,0,259,263,1,0,0,0,260,261,5,26,0,0,261,263,5,56,0,0,262,256,1,0,0, + 0,262,260,1,0,0,0,263,265,1,0,0,0,264,254,1,0,0,0,264,255,1,0,0,0,265,27, + 1,0,0,0,266,275,5,56,0,0,267,268,5,47,0,0,268,269,3,24,12,0,269,270,5,48, + 0,0,270,274,1,0,0,0,271,272,5,26,0,0,272,274,5,56,0,0,273,267,1,0,0,0,273, + 271,1,0,0,0,274,277,1,0,0,0,275,273,1,0,0,0,275,276,1,0,0,0,276,305,1,0, + 0,0,277,275,1,0,0,0,278,287,3,30,15,0,279,280,5,47,0,0,280,281,3,24,12, + 0,281,282,5,48,0,0,282,286,1,0,0,0,283,284,5,26,0,0,284,286,5,56,0,0,285, + 279,1,0,0,0,285,283,1,0,0,0,286,289,1,0,0,0,287,285,1,0,0,0,287,288,1,0, + 0,0,288,305,1,0,0,0,289,287,1,0,0,0,290,291,5,30,0,0,291,292,3,24,12,0, + 292,301,5,31,0,0,293,294,5,47,0,0,294,295,3,24,12,0,295,296,5,48,0,0,296, + 300,1,0,0,0,297,298,5,26,0,0,298,300,5,56,0,0,299,293,1,0,0,0,299,297,1, + 0,0,0,300,303,1,0,0,0,301,299,1,0,0,0,301,302,1,0,0,0,302,305,1,0,0,0,303, + 301,1,0,0,0,304,266,1,0,0,0,304,278,1,0,0,0,304,290,1,0,0,0,305,29,1,0, + 0,0,306,307,6,15,-1,0,307,316,5,56,0,0,308,309,5,47,0,0,309,310,3,24,12, + 0,310,311,5,48,0,0,311,315,1,0,0,0,312,313,5,26,0,0,313,315,5,56,0,0,314, + 308,1,0,0,0,314,312,1,0,0,0,315,318,1,0,0,0,316,314,1,0,0,0,316,317,1,0, + 0,0,317,319,1,0,0,0,318,316,1,0,0,0,319,370,3,32,16,0,320,321,5,30,0,0, + 321,322,3,24,12,0,322,331,5,31,0,0,323,324,5,47,0,0,324,325,3,24,12,0,325, + 326,5,48,0,0,326,330,1,0,0,0,327,328,5,26,0,0,328,330,5,56,0,0,329,323, + 1,0,0,0,329,327,1,0,0,0,330,333,1,0,0,0,331,329,1,0,0,0,331,332,1,0,0,0, + 332,334,1,0,0,0,333,331,1,0,0,0,334,335,3,32,16,0,335,370,1,0,0,0,336,345, + 5,56,0,0,337,338,5,47,0,0,338,339,3,24,12,0,339,340,5,48,0,0,340,344,1, + 0,0,0,341,342,5,26,0,0,342,344,5,56,0,0,343,337,1,0,0,0,343,341,1,0,0,0, + 344,347,1,0,0,0,345,343,1,0,0,0,345,346,1,0,0,0,346,348,1,0,0,0,347,345, + 1,0,0,0,348,349,5,38,0,0,349,350,5,56,0,0,350,370,3,32,16,0,351,352,5,30, + 0,0,352,353,3,24,12,0,353,362,5,31,0,0,354,355,5,47,0,0,355,356,3,24,12, + 0,356,357,5,48,0,0,357,361,1,0,0,0,358,359,5,26,0,0,359,361,5,56,0,0,360, + 354,1,0,0,0,360,358,1,0,0,0,361,364,1,0,0,0,362,360,1,0,0,0,362,363,1,0, + 0,0,363,365,1,0,0,0,364,362,1,0,0,0,365,366,5,38,0,0,366,367,5,56,0,0,367, + 368,3,32,16,0,368,370,1,0,0,0,369,306,1,0,0,0,369,320,1,0,0,0,369,336,1, + 0,0,0,369,351,1,0,0,0,370,401,1,0,0,0,371,380,10,5,0,0,372,373,5,47,0,0, + 373,374,3,24,12,0,374,375,5,48,0,0,375,379,1,0,0,0,376,377,5,26,0,0,377, + 379,5,56,0,0,378,372,1,0,0,0,378,376,1,0,0,0,379,382,1,0,0,0,380,378,1, + 0,0,0,380,381,1,0,0,0,381,383,1,0,0,0,382,380,1,0,0,0,383,400,3,32,16,0, + 384,393,10,2,0,0,385,386,5,47,0,0,386,387,3,24,12,0,387,388,5,48,0,0,388, + 392,1,0,0,0,389,390,5,26,0,0,390,392,5,56,0,0,391,385,1,0,0,0,391,389,1, + 0,0,0,392,395,1,0,0,0,393,391,1,0,0,0,393,394,1,0,0,0,394,396,1,0,0,0,395, + 393,1,0,0,0,396,397,5,38,0,0,397,398,5,56,0,0,398,400,3,32,16,0,399,371, + 1,0,0,0,399,384,1,0,0,0,400,403,1,0,0,0,401,399,1,0,0,0,401,402,1,0,0,0, + 402,31,1,0,0,0,403,401,1,0,0,0,404,406,5,30,0,0,405,407,3,22,11,0,406,405, + 1,0,0,0,406,407,1,0,0,0,407,408,1,0,0,0,408,412,5,31,0,0,409,412,3,40,20, + 0,410,412,3,50,25,0,411,404,1,0,0,0,411,409,1,0,0,0,411,410,1,0,0,0,412, + 33,1,0,0,0,413,414,5,17,0,0,414,415,3,36,18,0,415,35,1,0,0,0,416,417,5, + 30,0,0,417,418,3,38,19,0,418,419,5,31,0,0,419,420,3,4,2,0,420,421,5,6,0, + 0,421,37,1,0,0,0,422,425,3,20,10,0,423,424,5,15,0,0,424,426,5,54,0,0,425, + 423,1,0,0,0,425,426,1,0,0,0,426,430,1,0,0,0,427,430,5,54,0,0,428,430,1, + 0,0,0,429,422,1,0,0,0,429,427,1,0,0,0,429,428,1,0,0,0,430,39,1,0,0,0,431, + 433,5,45,0,0,432,434,3,42,21,0,433,432,1,0,0,0,433,434,1,0,0,0,434,435, + 1,0,0,0,435,436,5,46,0,0,436,41,1,0,0,0,437,443,3,44,22,0,438,439,3,46, + 23,0,439,440,3,44,22,0,440,442,1,0,0,0,441,438,1,0,0,0,442,445,1,0,0,0, + 443,441,1,0,0,0,443,444,1,0,0,0,444,447,1,0,0,0,445,443,1,0,0,0,446,448, + 3,46,23,0,447,446,1,0,0,0,447,448,1,0,0,0,448,43,1,0,0,0,449,450,5,47,0, + 0,450,451,3,24,12,0,451,452,5,48,0,0,452,453,5,2,0,0,453,454,3,24,12,0, + 454,460,1,0,0,0,455,456,5,56,0,0,456,457,5,2,0,0,457,460,3,24,12,0,458, + 460,3,24,12,0,459,449,1,0,0,0,459,455,1,0,0,0,459,458,1,0,0,0,460,45,1, + 0,0,0,461,462,7,5,0,0,462,47,1,0,0,0,463,468,5,60,0,0,464,468,5,61,0,0, + 465,468,5,62,0,0,466,468,5,63,0,0,467,463,1,0,0,0,467,464,1,0,0,0,467,465, + 1,0,0,0,467,466,1,0,0,0,468,49,1,0,0,0,469,473,5,57,0,0,470,473,5,58,0, + 0,471,473,5,59,0,0,472,469,1,0,0,0,472,470,1,0,0,0,472,471,1,0,0,0,473, + 51,1,0,0,0,53,60,64,102,107,119,145,147,156,162,166,169,180,185,192,200, + 208,223,249,251,262,264,273,275,285,287,299,301,304,314,316,329,331,343, + 345,360,362,369,378,380,391,393,399,401,406,411,425,429,433,443,447,459, + 467,472]; private static __ATN: ATN; public static get _ATN(): ATN { @@ -3297,18 +3267,12 @@ export class RetstatContext extends ParserRuleContext { public RETURN(): TerminalNode { return this.getToken(LuaParser.RETURN, 0); } - public BREAK(): TerminalNode { - return this.getToken(LuaParser.BREAK, 0); - } - public CONTINUE(): TerminalNode { - return this.getToken(LuaParser.CONTINUE, 0); + public explist(): ExplistContext { + return this.getTypedRuleContext(ExplistContext, 0) as ExplistContext; } public SEMI(): TerminalNode { return this.getToken(LuaParser.SEMI, 0); } - public explist(): ExplistContext { - return this.getTypedRuleContext(ExplistContext, 0) as ExplistContext; - } public get ruleIndex(): number { return LuaParser.RULE_retstat; } diff --git a/src/parser/LuaParserListener.ts b/src/parser/LuaParserListener.ts index 3e92593..1398b65 100644 --- a/src/parser/LuaParserListener.ts +++ b/src/parser/LuaParserListener.ts @@ -1,4 +1,4 @@ -// Generated from LuaParser.g4 by ANTLR 4.13.2 +// Generated from ./LuaParser.g4 by ANTLR 4.13.2 import {ParseTreeListener} from "antlr4"; diff --git a/src/parser/LuaParserVisitor.ts b/src/parser/LuaParserVisitor.ts index 87ef517..4e548e3 100644 --- a/src/parser/LuaParserVisitor.ts +++ b/src/parser/LuaParserVisitor.ts @@ -1,4 +1,4 @@ -// Generated from LuaParser.g4 by ANTLR 4.13.2 +// Generated from ./LuaParser.g4 by ANTLR 4.13.2 import {ParseTreeVisitor} from 'antlr4'; diff --git a/tests/interpreter/continue-keyword.test.ts b/tests/interpreter/continue-keyword.test.ts new file mode 100644 index 0000000..ffba1c4 --- /dev/null +++ b/tests/interpreter/continue-keyword.test.ts @@ -0,0 +1,15 @@ +import { BooleanValue } from '@src/interpreter/types'; +import { VMBuilder } from '@src/vm'; + +test('Grammar issue with continue', () => { + const lua = ` + storage = { } + storage.continue = true + return storage['continue'] + `; + + const result = new VMBuilder().build().executeOnce(lua); + expect(result.hasReturnValue()).toBeTruthy(); + const returnList = result.returnValueAsList(); + expect((returnList[0] as BooleanValue).boolean).toBe(true); +});