c-next 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +726 -0
  2. package/bin/cnext.js +5 -0
  3. package/grammar/C.g4 +1112 -0
  4. package/grammar/CNext.g4 +817 -0
  5. package/grammar/CPP14Lexer.g4 +282 -0
  6. package/grammar/CPP14Parser.g4 +1072 -0
  7. package/package.json +85 -0
  8. package/src/analysis/DivisionByZeroAnalyzer.ts +378 -0
  9. package/src/analysis/FunctionCallAnalyzer.ts +526 -0
  10. package/src/analysis/InitializationAnalyzer.ts +725 -0
  11. package/src/analysis/NullCheckAnalyzer.ts +427 -0
  12. package/src/analysis/types/IDivisionByZeroError.ts +25 -0
  13. package/src/analysis/types/IFunctionCallError.ts +17 -0
  14. package/src/analysis/types/IInitializationError.ts +55 -0
  15. package/src/analysis/types/INullCheckError.ts +25 -0
  16. package/src/codegen/CodeGenerator.ts +7945 -0
  17. package/src/codegen/CommentExtractor.ts +240 -0
  18. package/src/codegen/CommentFormatter.ts +155 -0
  19. package/src/codegen/HeaderGenerator.ts +265 -0
  20. package/src/codegen/TypeResolver.ts +365 -0
  21. package/src/codegen/types/ECommentType.ts +10 -0
  22. package/src/codegen/types/IComment.ts +21 -0
  23. package/src/codegen/types/ICommentError.ts +15 -0
  24. package/src/codegen/types/TOverflowBehavior.ts +6 -0
  25. package/src/codegen/types/TParameterInfo.ts +13 -0
  26. package/src/codegen/types/TTypeConstants.ts +94 -0
  27. package/src/codegen/types/TTypeInfo.ts +22 -0
  28. package/src/index.ts +518 -0
  29. package/src/lib/IncludeDiscovery.ts +131 -0
  30. package/src/lib/InputExpansion.ts +121 -0
  31. package/src/lib/PlatformIODetector.ts +162 -0
  32. package/src/lib/transpiler.ts +439 -0
  33. package/src/lib/types/ITranspileResult.ts +80 -0
  34. package/src/parser/c/grammar/C.interp +338 -0
  35. package/src/parser/c/grammar/C.tokens +229 -0
  36. package/src/parser/c/grammar/CLexer.interp +415 -0
  37. package/src/parser/c/grammar/CLexer.tokens +229 -0
  38. package/src/parser/c/grammar/CLexer.ts +750 -0
  39. package/src/parser/c/grammar/CListener.ts +976 -0
  40. package/src/parser/c/grammar/CParser.ts +9663 -0
  41. package/src/parser/c/grammar/CVisitor.ts +626 -0
  42. package/src/parser/cpp/grammar/CPP14Lexer.interp +478 -0
  43. package/src/parser/cpp/grammar/CPP14Lexer.tokens +264 -0
  44. package/src/parser/cpp/grammar/CPP14Lexer.ts +848 -0
  45. package/src/parser/cpp/grammar/CPP14Parser.interp +492 -0
  46. package/src/parser/cpp/grammar/CPP14Parser.tokens +264 -0
  47. package/src/parser/cpp/grammar/CPP14Parser.ts +19961 -0
  48. package/src/parser/cpp/grammar/CPP14ParserListener.ts +2120 -0
  49. package/src/parser/cpp/grammar/CPP14ParserVisitor.ts +1354 -0
  50. package/src/parser/grammar/CNext.interp +340 -0
  51. package/src/parser/grammar/CNext.tokens +214 -0
  52. package/src/parser/grammar/CNextLexer.interp +374 -0
  53. package/src/parser/grammar/CNextLexer.tokens +214 -0
  54. package/src/parser/grammar/CNextLexer.ts +668 -0
  55. package/src/parser/grammar/CNextListener.ts +1020 -0
  56. package/src/parser/grammar/CNextParser.ts +9239 -0
  57. package/src/parser/grammar/CNextVisitor.ts +654 -0
  58. package/src/preprocessor/Preprocessor.ts +301 -0
  59. package/src/preprocessor/ToolchainDetector.ts +225 -0
  60. package/src/preprocessor/types/IPreprocessResult.ts +39 -0
  61. package/src/preprocessor/types/IToolchain.ts +27 -0
  62. package/src/project/FileDiscovery.ts +236 -0
  63. package/src/project/Project.ts +425 -0
  64. package/src/project/types/IProjectConfig.ts +64 -0
  65. package/src/symbols/CNextSymbolCollector.ts +326 -0
  66. package/src/symbols/CSymbolCollector.ts +457 -0
  67. package/src/symbols/CppSymbolCollector.ts +362 -0
  68. package/src/symbols/SymbolTable.ts +312 -0
  69. package/src/symbols/types/IConflict.ts +20 -0
  70. package/src/types/ESourceLanguage.ts +10 -0
  71. package/src/types/ESymbolKind.ts +20 -0
  72. package/src/types/ISymbol.ts +45 -0
@@ -0,0 +1,668 @@
1
+ // Generated from grammar/CNext.g4 by ANTLR 4.13.1
2
+
3
+ import * as antlr from "antlr4ng";
4
+ import { Token } from "antlr4ng";
5
+
6
+
7
+ export class CNextLexer extends antlr.Lexer {
8
+ public static readonly T__0 = 1;
9
+ public static readonly INCLUDE_DIRECTIVE = 2;
10
+ public static readonly DEFINE_FUNCTION = 3;
11
+ public static readonly DEFINE_WITH_VALUE = 4;
12
+ public static readonly DEFINE_FLAG = 5;
13
+ public static readonly IFDEF_DIRECTIVE = 6;
14
+ public static readonly IFNDEF_DIRECTIVE = 7;
15
+ public static readonly ELSE_DIRECTIVE = 8;
16
+ public static readonly ENDIF_DIRECTIVE = 9;
17
+ public static readonly PRAGMA_TARGET = 10;
18
+ public static readonly SCOPE = 11;
19
+ public static readonly STRUCT = 12;
20
+ public static readonly ENUM = 13;
21
+ public static readonly THIS = 14;
22
+ public static readonly GLOBAL = 15;
23
+ public static readonly REGISTER = 16;
24
+ public static readonly PRIVATE = 17;
25
+ public static readonly PUBLIC = 18;
26
+ public static readonly CONST = 19;
27
+ public static readonly VOLATILE = 20;
28
+ public static readonly VOID = 21;
29
+ public static readonly IF = 22;
30
+ public static readonly ELSE = 23;
31
+ public static readonly WHILE = 24;
32
+ public static readonly DO = 25;
33
+ public static readonly FOR = 26;
34
+ public static readonly SWITCH = 27;
35
+ public static readonly CASE = 28;
36
+ public static readonly DEFAULT = 29;
37
+ public static readonly RETURN = 30;
38
+ public static readonly TRUE = 31;
39
+ public static readonly FALSE = 32;
40
+ public static readonly NULL = 33;
41
+ public static readonly C_NULL = 34;
42
+ public static readonly STRING = 35;
43
+ public static readonly SIZEOF = 36;
44
+ public static readonly BITMAP8 = 37;
45
+ public static readonly BITMAP16 = 38;
46
+ public static readonly BITMAP24 = 39;
47
+ public static readonly BITMAP32 = 40;
48
+ public static readonly RW = 41;
49
+ public static readonly RO = 42;
50
+ public static readonly WO = 43;
51
+ public static readonly W1C = 44;
52
+ public static readonly W1S = 45;
53
+ public static readonly CLAMP = 46;
54
+ public static readonly WRAP = 47;
55
+ public static readonly ATOMIC = 48;
56
+ public static readonly CRITICAL = 49;
57
+ public static readonly SUFFIXED_FLOAT = 50;
58
+ public static readonly SUFFIXED_HEX = 51;
59
+ public static readonly SUFFIXED_BINARY = 52;
60
+ public static readonly SUFFIXED_DECIMAL = 53;
61
+ public static readonly U8 = 54;
62
+ public static readonly U16 = 55;
63
+ public static readonly U32 = 56;
64
+ public static readonly U64 = 57;
65
+ public static readonly I8 = 58;
66
+ public static readonly I16 = 59;
67
+ public static readonly I32 = 60;
68
+ public static readonly I64 = 61;
69
+ public static readonly F32 = 62;
70
+ public static readonly F64 = 63;
71
+ public static readonly BOOL = 64;
72
+ public static readonly ISR_TYPE = 65;
73
+ public static readonly LSHIFT_ASSIGN = 66;
74
+ public static readonly RSHIFT_ASSIGN = 67;
75
+ public static readonly PLUS_ASSIGN = 68;
76
+ public static readonly MINUS_ASSIGN = 69;
77
+ public static readonly STAR_ASSIGN = 70;
78
+ public static readonly SLASH_ASSIGN = 71;
79
+ public static readonly PERCENT_ASSIGN = 72;
80
+ public static readonly BITAND_ASSIGN = 73;
81
+ public static readonly BITOR_ASSIGN = 74;
82
+ public static readonly BITXOR_ASSIGN = 75;
83
+ public static readonly ASSIGN = 76;
84
+ public static readonly EQ = 77;
85
+ public static readonly NEQ = 78;
86
+ public static readonly LT = 79;
87
+ public static readonly GT = 80;
88
+ public static readonly LTE = 81;
89
+ public static readonly GTE = 82;
90
+ public static readonly PLUS = 83;
91
+ public static readonly MINUS = 84;
92
+ public static readonly STAR = 85;
93
+ public static readonly SLASH = 86;
94
+ public static readonly PERCENT = 87;
95
+ public static readonly AND = 88;
96
+ public static readonly OR = 89;
97
+ public static readonly NOT = 90;
98
+ public static readonly BITAND = 91;
99
+ public static readonly BITOR = 92;
100
+ public static readonly BITXOR = 93;
101
+ public static readonly BITNOT = 94;
102
+ public static readonly LSHIFT = 95;
103
+ public static readonly RSHIFT = 96;
104
+ public static readonly LPAREN = 97;
105
+ public static readonly RPAREN = 98;
106
+ public static readonly LBRACE = 99;
107
+ public static readonly RBRACE = 100;
108
+ public static readonly LBRACKET = 101;
109
+ public static readonly RBRACKET = 102;
110
+ public static readonly SEMI = 103;
111
+ public static readonly COMMA = 104;
112
+ public static readonly DOT = 105;
113
+ public static readonly DOTDOT = 106;
114
+ public static readonly AT = 107;
115
+ public static readonly COLON = 108;
116
+ public static readonly HEX_LITERAL = 109;
117
+ public static readonly BINARY_LITERAL = 110;
118
+ public static readonly FLOAT_LITERAL = 111;
119
+ public static readonly INTEGER_LITERAL = 112;
120
+ public static readonly STRING_LITERAL = 113;
121
+ public static readonly CHAR_LITERAL = 114;
122
+ public static readonly IDENTIFIER = 115;
123
+ public static readonly DOC_COMMENT = 116;
124
+ public static readonly LINE_COMMENT = 117;
125
+ public static readonly BLOCK_COMMENT = 118;
126
+ public static readonly WS = 119;
127
+
128
+ public static readonly channelNames = [
129
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
130
+ ];
131
+
132
+ public static readonly literalNames = [
133
+ null, "'?'", null, null, null, null, null, null, null, null, null,
134
+ "'scope'", "'struct'", "'enum'", "'this'", "'global'", "'register'",
135
+ "'private'", "'public'", "'const'", "'volatile'", "'void'", "'if'",
136
+ "'else'", "'while'", "'do'", "'for'", "'switch'", "'case'", "'default'",
137
+ "'return'", "'true'", "'false'", "'null'", "'NULL'", "'string'",
138
+ "'sizeof'", "'bitmap8'", "'bitmap16'", "'bitmap24'", "'bitmap32'",
139
+ "'rw'", "'ro'", "'wo'", "'w1c'", "'w1s'", "'clamp'", "'wrap'", "'atomic'",
140
+ "'critical'", null, null, null, null, "'u8'", "'u16'", "'u32'",
141
+ "'u64'", "'i8'", "'i16'", "'i32'", "'i64'", "'f32'", "'f64'", "'bool'",
142
+ "'ISR'", "'<<<-'", "'>><-'", "'+<-'", "'-<-'", "'*<-'", "'/<-'",
143
+ "'%<-'", "'&<-'", "'|<-'", "'^<-'", "'<-'", "'='", "'!='", "'<'",
144
+ "'>'", "'<='", "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'&&'",
145
+ "'||'", "'!'", "'&'", "'|'", "'^'", "'~'", "'<<'", "'>>'", "'('",
146
+ "')'", "'{'", "'}'", "'['", "']'", "';'", "','", "'.'", "'..'",
147
+ "'@'", "':'"
148
+ ];
149
+
150
+ public static readonly symbolicNames = [
151
+ null, null, "INCLUDE_DIRECTIVE", "DEFINE_FUNCTION", "DEFINE_WITH_VALUE",
152
+ "DEFINE_FLAG", "IFDEF_DIRECTIVE", "IFNDEF_DIRECTIVE", "ELSE_DIRECTIVE",
153
+ "ENDIF_DIRECTIVE", "PRAGMA_TARGET", "SCOPE", "STRUCT", "ENUM", "THIS",
154
+ "GLOBAL", "REGISTER", "PRIVATE", "PUBLIC", "CONST", "VOLATILE",
155
+ "VOID", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "CASE", "DEFAULT",
156
+ "RETURN", "TRUE", "FALSE", "NULL", "C_NULL", "STRING", "SIZEOF",
157
+ "BITMAP8", "BITMAP16", "BITMAP24", "BITMAP32", "RW", "RO", "WO",
158
+ "W1C", "W1S", "CLAMP", "WRAP", "ATOMIC", "CRITICAL", "SUFFIXED_FLOAT",
159
+ "SUFFIXED_HEX", "SUFFIXED_BINARY", "SUFFIXED_DECIMAL", "U8", "U16",
160
+ "U32", "U64", "I8", "I16", "I32", "I64", "F32", "F64", "BOOL", "ISR_TYPE",
161
+ "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN",
162
+ "STAR_ASSIGN", "SLASH_ASSIGN", "PERCENT_ASSIGN", "BITAND_ASSIGN",
163
+ "BITOR_ASSIGN", "BITXOR_ASSIGN", "ASSIGN", "EQ", "NEQ", "LT", "GT",
164
+ "LTE", "GTE", "PLUS", "MINUS", "STAR", "SLASH", "PERCENT", "AND",
165
+ "OR", "NOT", "BITAND", "BITOR", "BITXOR", "BITNOT", "LSHIFT", "RSHIFT",
166
+ "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACKET", "RBRACKET",
167
+ "SEMI", "COMMA", "DOT", "DOTDOT", "AT", "COLON", "HEX_LITERAL",
168
+ "BINARY_LITERAL", "FLOAT_LITERAL", "INTEGER_LITERAL", "STRING_LITERAL",
169
+ "CHAR_LITERAL", "IDENTIFIER", "DOC_COMMENT", "LINE_COMMENT", "BLOCK_COMMENT",
170
+ "WS"
171
+ ];
172
+
173
+ public static readonly modeNames = [
174
+ "DEFAULT_MODE",
175
+ ];
176
+
177
+ public static readonly ruleNames = [
178
+ "T__0", "INCLUDE_DIRECTIVE", "DEFINE_FUNCTION", "DEFINE_WITH_VALUE",
179
+ "DEFINE_FLAG", "IFDEF_DIRECTIVE", "IFNDEF_DIRECTIVE", "ELSE_DIRECTIVE",
180
+ "ENDIF_DIRECTIVE", "PRAGMA_TARGET", "SCOPE", "STRUCT", "ENUM", "THIS",
181
+ "GLOBAL", "REGISTER", "PRIVATE", "PUBLIC", "CONST", "VOLATILE",
182
+ "VOID", "IF", "ELSE", "WHILE", "DO", "FOR", "SWITCH", "CASE", "DEFAULT",
183
+ "RETURN", "TRUE", "FALSE", "NULL", "C_NULL", "STRING", "SIZEOF",
184
+ "BITMAP8", "BITMAP16", "BITMAP24", "BITMAP32", "RW", "RO", "WO",
185
+ "W1C", "W1S", "CLAMP", "WRAP", "ATOMIC", "CRITICAL", "SUFFIXED_FLOAT",
186
+ "SUFFIXED_HEX", "SUFFIXED_BINARY", "SUFFIXED_DECIMAL", "U8", "U16",
187
+ "U32", "U64", "I8", "I16", "I32", "I64", "F32", "F64", "BOOL", "ISR_TYPE",
188
+ "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN",
189
+ "STAR_ASSIGN", "SLASH_ASSIGN", "PERCENT_ASSIGN", "BITAND_ASSIGN",
190
+ "BITOR_ASSIGN", "BITXOR_ASSIGN", "ASSIGN", "EQ", "NEQ", "LT", "GT",
191
+ "LTE", "GTE", "PLUS", "MINUS", "STAR", "SLASH", "PERCENT", "AND",
192
+ "OR", "NOT", "BITAND", "BITOR", "BITXOR", "BITNOT", "LSHIFT", "RSHIFT",
193
+ "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACKET", "RBRACKET",
194
+ "SEMI", "COMMA", "DOT", "DOTDOT", "AT", "COLON", "HEX_LITERAL",
195
+ "BINARY_LITERAL", "FLOAT_LITERAL", "INTEGER_LITERAL", "STRING_LITERAL",
196
+ "CHAR_LITERAL", "IDENTIFIER", "DOC_COMMENT", "LINE_COMMENT", "BLOCK_COMMENT",
197
+ "WS",
198
+ ];
199
+
200
+
201
+ public constructor(input: antlr.CharStream) {
202
+ super(input);
203
+ this.interpreter = new antlr.LexerATNSimulator(this, CNextLexer._ATN, CNextLexer.decisionsToDFA, new antlr.PredictionContextCache());
204
+ }
205
+
206
+ public get grammarFileName(): string { return "CNext.g4"; }
207
+
208
+ public get literalNames(): (string | null)[] { return CNextLexer.literalNames; }
209
+ public get symbolicNames(): (string | null)[] { return CNextLexer.symbolicNames; }
210
+ public get ruleNames(): string[] { return CNextLexer.ruleNames; }
211
+
212
+ public get serializedATN(): number[] { return CNextLexer._serializedATN; }
213
+
214
+ public get channelNames(): string[] { return CNextLexer.channelNames; }
215
+
216
+ public get modeNames(): string[] { return CNextLexer.modeNames; }
217
+
218
+ public static readonly _serializedATN: number[] = [
219
+ 4,0,119,1146,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,
220
+ 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,
221
+ 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,
222
+ 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,
223
+ 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,
224
+ 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,
225
+ 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,
226
+ 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,
227
+ 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,
228
+ 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,
229
+ 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,
230
+ 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,
231
+ 2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,
232
+ 7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,
233
+ 2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,
234
+ 7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,
235
+ 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,
236
+ 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,
237
+ 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,1,0,1,0,1,
238
+ 1,1,1,5,1,244,8,1,10,1,12,1,247,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
239
+ 1,1,1,1,5,1,258,8,1,10,1,12,1,261,9,1,1,1,1,1,5,1,265,8,1,10,1,12,
240
+ 1,268,9,1,1,1,1,1,1,1,5,1,273,8,1,10,1,12,1,276,9,1,1,1,3,1,279,
241
+ 8,1,1,2,1,2,5,2,283,8,2,10,2,12,2,286,9,2,1,2,1,2,1,2,1,2,1,2,1,
242
+ 2,1,2,1,2,4,2,296,8,2,11,2,12,2,297,1,2,1,2,5,2,302,8,2,10,2,12,
243
+ 2,305,9,2,1,2,5,2,308,8,2,10,2,12,2,311,9,2,1,2,1,2,5,2,315,8,2,
244
+ 10,2,12,2,318,9,2,1,3,1,3,5,3,322,8,3,10,3,12,3,325,9,3,1,3,1,3,
245
+ 1,3,1,3,1,3,1,3,1,3,1,3,4,3,335,8,3,11,3,12,3,336,1,3,1,3,5,3,341,
246
+ 8,3,10,3,12,3,344,9,3,1,3,4,3,347,8,3,11,3,12,3,348,1,3,4,3,352,
247
+ 8,3,11,3,12,3,353,1,4,1,4,5,4,358,8,4,10,4,12,4,361,9,4,1,4,1,4,
248
+ 1,4,1,4,1,4,1,4,1,4,1,4,4,4,371,8,4,11,4,12,4,372,1,4,1,4,5,4,377,
249
+ 8,4,10,4,12,4,380,9,4,1,4,5,4,383,8,4,10,4,12,4,386,9,4,1,5,1,5,
250
+ 5,5,390,8,5,10,5,12,5,393,9,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,4,5,402,
251
+ 8,5,11,5,12,5,403,1,5,1,5,5,5,408,8,5,10,5,12,5,411,9,5,1,5,5,5,
252
+ 414,8,5,10,5,12,5,417,9,5,1,6,1,6,5,6,421,8,6,10,6,12,6,424,9,6,
253
+ 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,4,6,434,8,6,11,6,12,6,435,1,6,1,
254
+ 6,5,6,440,8,6,10,6,12,6,443,9,6,1,6,5,6,446,8,6,10,6,12,6,449,9,
255
+ 6,1,7,1,7,5,7,453,8,7,10,7,12,7,456,9,7,1,7,1,7,1,7,1,7,1,7,1,7,
256
+ 5,7,464,8,7,10,7,12,7,467,9,7,1,8,1,8,5,8,471,8,8,10,8,12,8,474,
257
+ 9,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,483,8,8,10,8,12,8,486,9,8,1,
258
+ 9,1,9,5,9,490,8,9,10,9,12,9,493,9,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,
259
+ 1,9,4,9,503,8,9,11,9,12,9,504,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,4,
260
+ 9,515,8,9,11,9,12,9,516,1,9,1,9,5,9,521,8,9,10,9,12,9,524,9,9,1,
261
+ 10,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,
262
+ 12,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,
263
+ 14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,
264
+ 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,
265
+ 17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,
266
+ 19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,
267
+ 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,
268
+ 25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,
269
+ 27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,
270
+ 29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,
271
+ 31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,
272
+ 34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,
273
+ 35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,
274
+ 37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,
275
+ 38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,
276
+ 41,1,41,1,41,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,
277
+ 44,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,47,1,
278
+ 47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,
279
+ 48,1,48,1,49,4,49,763,8,49,11,49,12,49,764,1,49,1,49,4,49,769,8,
280
+ 49,11,49,12,49,770,1,49,1,49,3,49,775,8,49,1,49,4,49,778,8,49,11,
281
+ 49,12,49,779,3,49,782,8,49,1,49,4,49,785,8,49,11,49,12,49,786,1,
282
+ 49,1,49,3,49,791,8,49,1,49,4,49,794,8,49,11,49,12,49,795,3,49,798,
283
+ 8,49,1,49,1,49,1,49,1,49,1,49,3,49,805,8,49,1,50,1,50,1,50,4,50,
284
+ 810,8,50,11,50,12,50,811,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,
285
+ 3,50,822,8,50,1,51,1,51,1,51,4,51,827,8,51,11,51,12,51,828,1,51,
286
+ 1,51,1,51,1,51,1,51,1,51,1,51,1,51,3,51,839,8,51,1,52,4,52,842,8,
287
+ 52,11,52,12,52,843,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,
288
+ 854,8,52,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,
289
+ 1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,59,1,59,
290
+ 1,59,1,59,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,62,1,62,1,62,
291
+ 1,62,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,65,1,65,1,65,
292
+ 1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,68,1,68,
293
+ 1,68,1,68,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,
294
+ 1,71,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,
295
+ 1,75,1,75,1,75,1,76,1,76,1,77,1,77,1,77,1,78,1,78,1,79,1,79,1,80,
296
+ 1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,83,1,83,1,84,1,84,1,85,1,85,
297
+ 1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,1,89,1,89,1,90,1,90,1,91,
298
+ 1,91,1,92,1,92,1,93,1,93,1,94,1,94,1,94,1,95,1,95,1,95,1,96,1,96,
299
+ 1,97,1,97,1,98,1,98,1,99,1,99,1,100,1,100,1,101,1,101,1,102,1,102,
300
+ 1,103,1,103,1,104,1,104,1,105,1,105,1,105,1,106,1,106,1,107,1,107,
301
+ 1,108,1,108,1,108,4,108,1023,8,108,11,108,12,108,1024,1,109,1,109,
302
+ 1,109,4,109,1030,8,109,11,109,12,109,1031,1,110,4,110,1035,8,110,
303
+ 11,110,12,110,1036,1,110,1,110,4,110,1041,8,110,11,110,12,110,1042,
304
+ 1,110,1,110,3,110,1047,8,110,1,110,4,110,1050,8,110,11,110,12,110,
305
+ 1051,3,110,1054,8,110,1,110,4,110,1057,8,110,11,110,12,110,1058,
306
+ 1,110,1,110,3,110,1063,8,110,1,110,4,110,1066,8,110,11,110,12,110,
307
+ 1067,3,110,1070,8,110,1,111,4,111,1073,8,111,11,111,12,111,1074,
308
+ 1,112,1,112,1,112,1,112,5,112,1081,8,112,10,112,12,112,1084,9,112,
309
+ 1,112,1,112,1,113,1,113,1,113,1,113,3,113,1092,8,113,1,113,1,113,
310
+ 1,114,1,114,5,114,1098,8,114,10,114,12,114,1101,9,114,1,115,1,115,
311
+ 1,115,1,115,1,115,5,115,1108,8,115,10,115,12,115,1111,9,115,1,115,
312
+ 1,115,1,116,1,116,1,116,1,116,5,116,1119,8,116,10,116,12,116,1122,
313
+ 9,116,1,116,1,116,1,117,1,117,1,117,1,117,5,117,1130,8,117,10,117,
314
+ 12,117,1133,9,117,1,117,1,117,1,117,1,117,1,117,1,118,4,118,1141,
315
+ 8,118,11,118,12,118,1142,1,118,1,118,1,1131,0,119,1,1,3,2,5,3,7,
316
+ 4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,
317
+ 16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,
318
+ 27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,
319
+ 38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,
320
+ 49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,
321
+ 117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,
322
+ 68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,
323
+ 155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,
324
+ 87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,
325
+ 193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209,
326
+ 105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,
327
+ 113,227,114,229,115,231,116,233,117,235,118,237,119,1,0,19,2,0,9,
328
+ 9,32,32,3,0,10,10,13,13,62,62,3,0,10,10,13,13,34,34,3,0,65,90,95,
329
+ 95,97,122,4,0,48,57,65,90,95,95,97,122,2,0,10,10,13,13,5,0,45,45,
330
+ 48,57,65,90,95,95,97,122,1,0,48,57,2,0,69,69,101,101,2,0,43,43,45,
331
+ 45,2,0,70,70,102,102,2,0,88,88,120,120,3,0,48,57,65,70,97,102,4,
332
+ 0,73,73,85,85,105,105,117,117,2,0,66,66,98,98,1,0,48,49,4,0,10,10,
333
+ 13,13,34,34,92,92,4,0,10,10,13,13,39,39,92,92,3,0,9,10,13,13,32,
334
+ 32,1222,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,
335
+ 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,
336
+ 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,
337
+ 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,
338
+ 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,
339
+ 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,
340
+ 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,
341
+ 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,
342
+ 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,
343
+ 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,
344
+ 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,
345
+ 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,
346
+ 0,119,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,
347
+ 0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,
348
+ 137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,
349
+ 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,0,155,
350
+ 1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,
351
+ 0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,
352
+ 0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,
353
+ 183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,
354
+ 0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,
355
+ 1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,
356
+ 0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,
357
+ 0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,
358
+ 229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,
359
+ 0,0,1,239,1,0,0,0,3,241,1,0,0,0,5,280,1,0,0,0,7,319,1,0,0,0,9,355,
360
+ 1,0,0,0,11,387,1,0,0,0,13,418,1,0,0,0,15,450,1,0,0,0,17,468,1,0,
361
+ 0,0,19,487,1,0,0,0,21,525,1,0,0,0,23,531,1,0,0,0,25,538,1,0,0,0,
362
+ 27,543,1,0,0,0,29,548,1,0,0,0,31,555,1,0,0,0,33,564,1,0,0,0,35,572,
363
+ 1,0,0,0,37,579,1,0,0,0,39,585,1,0,0,0,41,594,1,0,0,0,43,599,1,0,
364
+ 0,0,45,602,1,0,0,0,47,607,1,0,0,0,49,613,1,0,0,0,51,616,1,0,0,0,
365
+ 53,620,1,0,0,0,55,627,1,0,0,0,57,632,1,0,0,0,59,640,1,0,0,0,61,647,
366
+ 1,0,0,0,63,652,1,0,0,0,65,658,1,0,0,0,67,663,1,0,0,0,69,668,1,0,
367
+ 0,0,71,675,1,0,0,0,73,682,1,0,0,0,75,690,1,0,0,0,77,699,1,0,0,0,
368
+ 79,708,1,0,0,0,81,717,1,0,0,0,83,720,1,0,0,0,85,723,1,0,0,0,87,726,
369
+ 1,0,0,0,89,730,1,0,0,0,91,734,1,0,0,0,93,740,1,0,0,0,95,745,1,0,
370
+ 0,0,97,752,1,0,0,0,99,797,1,0,0,0,101,806,1,0,0,0,103,823,1,0,0,
371
+ 0,105,841,1,0,0,0,107,855,1,0,0,0,109,858,1,0,0,0,111,862,1,0,0,
372
+ 0,113,866,1,0,0,0,115,870,1,0,0,0,117,873,1,0,0,0,119,877,1,0,0,
373
+ 0,121,881,1,0,0,0,123,885,1,0,0,0,125,889,1,0,0,0,127,893,1,0,0,
374
+ 0,129,898,1,0,0,0,131,902,1,0,0,0,133,907,1,0,0,0,135,912,1,0,0,
375
+ 0,137,916,1,0,0,0,139,920,1,0,0,0,141,924,1,0,0,0,143,928,1,0,0,
376
+ 0,145,932,1,0,0,0,147,936,1,0,0,0,149,940,1,0,0,0,151,944,1,0,0,
377
+ 0,153,947,1,0,0,0,155,949,1,0,0,0,157,952,1,0,0,0,159,954,1,0,0,
378
+ 0,161,956,1,0,0,0,163,959,1,0,0,0,165,962,1,0,0,0,167,964,1,0,0,
379
+ 0,169,966,1,0,0,0,171,968,1,0,0,0,173,970,1,0,0,0,175,972,1,0,0,
380
+ 0,177,975,1,0,0,0,179,978,1,0,0,0,181,980,1,0,0,0,183,982,1,0,0,
381
+ 0,185,984,1,0,0,0,187,986,1,0,0,0,189,988,1,0,0,0,191,991,1,0,0,
382
+ 0,193,994,1,0,0,0,195,996,1,0,0,0,197,998,1,0,0,0,199,1000,1,0,0,
383
+ 0,201,1002,1,0,0,0,203,1004,1,0,0,0,205,1006,1,0,0,0,207,1008,1,
384
+ 0,0,0,209,1010,1,0,0,0,211,1012,1,0,0,0,213,1015,1,0,0,0,215,1017,
385
+ 1,0,0,0,217,1019,1,0,0,0,219,1026,1,0,0,0,221,1069,1,0,0,0,223,1072,
386
+ 1,0,0,0,225,1076,1,0,0,0,227,1087,1,0,0,0,229,1095,1,0,0,0,231,1102,
387
+ 1,0,0,0,233,1114,1,0,0,0,235,1125,1,0,0,0,237,1140,1,0,0,0,239,240,
388
+ 5,63,0,0,240,2,1,0,0,0,241,245,5,35,0,0,242,244,7,0,0,0,243,242,
389
+ 1,0,0,0,244,247,1,0,0,0,245,243,1,0,0,0,245,246,1,0,0,0,246,248,
390
+ 1,0,0,0,247,245,1,0,0,0,248,249,5,105,0,0,249,250,5,110,0,0,250,
391
+ 251,5,99,0,0,251,252,5,108,0,0,252,253,5,117,0,0,253,254,5,100,0,
392
+ 0,254,255,5,101,0,0,255,259,1,0,0,0,256,258,7,0,0,0,257,256,1,0,
393
+ 0,0,258,261,1,0,0,0,259,257,1,0,0,0,259,260,1,0,0,0,260,278,1,0,
394
+ 0,0,261,259,1,0,0,0,262,266,5,60,0,0,263,265,8,1,0,0,264,263,1,0,
395
+ 0,0,265,268,1,0,0,0,266,264,1,0,0,0,266,267,1,0,0,0,267,269,1,0,
396
+ 0,0,268,266,1,0,0,0,269,279,5,62,0,0,270,274,5,34,0,0,271,273,8,
397
+ 2,0,0,272,271,1,0,0,0,273,276,1,0,0,0,274,272,1,0,0,0,274,275,1,
398
+ 0,0,0,275,277,1,0,0,0,276,274,1,0,0,0,277,279,5,34,0,0,278,262,1,
399
+ 0,0,0,278,270,1,0,0,0,279,4,1,0,0,0,280,284,5,35,0,0,281,283,7,0,
400
+ 0,0,282,281,1,0,0,0,283,286,1,0,0,0,284,282,1,0,0,0,284,285,1,0,
401
+ 0,0,285,287,1,0,0,0,286,284,1,0,0,0,287,288,5,100,0,0,288,289,5,
402
+ 101,0,0,289,290,5,102,0,0,290,291,5,105,0,0,291,292,5,110,0,0,292,
403
+ 293,5,101,0,0,293,295,1,0,0,0,294,296,7,0,0,0,295,294,1,0,0,0,296,
404
+ 297,1,0,0,0,297,295,1,0,0,0,297,298,1,0,0,0,298,299,1,0,0,0,299,
405
+ 303,7,3,0,0,300,302,7,4,0,0,301,300,1,0,0,0,302,305,1,0,0,0,303,
406
+ 301,1,0,0,0,303,304,1,0,0,0,304,309,1,0,0,0,305,303,1,0,0,0,306,
407
+ 308,7,0,0,0,307,306,1,0,0,0,308,311,1,0,0,0,309,307,1,0,0,0,309,
408
+ 310,1,0,0,0,310,312,1,0,0,0,311,309,1,0,0,0,312,316,5,40,0,0,313,
409
+ 315,8,5,0,0,314,313,1,0,0,0,315,318,1,0,0,0,316,314,1,0,0,0,316,
410
+ 317,1,0,0,0,317,6,1,0,0,0,318,316,1,0,0,0,319,323,5,35,0,0,320,322,
411
+ 7,0,0,0,321,320,1,0,0,0,322,325,1,0,0,0,323,321,1,0,0,0,323,324,
412
+ 1,0,0,0,324,326,1,0,0,0,325,323,1,0,0,0,326,327,5,100,0,0,327,328,
413
+ 5,101,0,0,328,329,5,102,0,0,329,330,5,105,0,0,330,331,5,110,0,0,
414
+ 331,332,5,101,0,0,332,334,1,0,0,0,333,335,7,0,0,0,334,333,1,0,0,
415
+ 0,335,336,1,0,0,0,336,334,1,0,0,0,336,337,1,0,0,0,337,338,1,0,0,
416
+ 0,338,342,7,3,0,0,339,341,7,4,0,0,340,339,1,0,0,0,341,344,1,0,0,
417
+ 0,342,340,1,0,0,0,342,343,1,0,0,0,343,346,1,0,0,0,344,342,1,0,0,
418
+ 0,345,347,7,0,0,0,346,345,1,0,0,0,347,348,1,0,0,0,348,346,1,0,0,
419
+ 0,348,349,1,0,0,0,349,351,1,0,0,0,350,352,8,5,0,0,351,350,1,0,0,
420
+ 0,352,353,1,0,0,0,353,351,1,0,0,0,353,354,1,0,0,0,354,8,1,0,0,0,
421
+ 355,359,5,35,0,0,356,358,7,0,0,0,357,356,1,0,0,0,358,361,1,0,0,0,
422
+ 359,357,1,0,0,0,359,360,1,0,0,0,360,362,1,0,0,0,361,359,1,0,0,0,
423
+ 362,363,5,100,0,0,363,364,5,101,0,0,364,365,5,102,0,0,365,366,5,
424
+ 105,0,0,366,367,5,110,0,0,367,368,5,101,0,0,368,370,1,0,0,0,369,
425
+ 371,7,0,0,0,370,369,1,0,0,0,371,372,1,0,0,0,372,370,1,0,0,0,372,
426
+ 373,1,0,0,0,373,374,1,0,0,0,374,378,7,3,0,0,375,377,7,4,0,0,376,
427
+ 375,1,0,0,0,377,380,1,0,0,0,378,376,1,0,0,0,378,379,1,0,0,0,379,
428
+ 384,1,0,0,0,380,378,1,0,0,0,381,383,7,0,0,0,382,381,1,0,0,0,383,
429
+ 386,1,0,0,0,384,382,1,0,0,0,384,385,1,0,0,0,385,10,1,0,0,0,386,384,
430
+ 1,0,0,0,387,391,5,35,0,0,388,390,7,0,0,0,389,388,1,0,0,0,390,393,
431
+ 1,0,0,0,391,389,1,0,0,0,391,392,1,0,0,0,392,394,1,0,0,0,393,391,
432
+ 1,0,0,0,394,395,5,105,0,0,395,396,5,102,0,0,396,397,5,100,0,0,397,
433
+ 398,5,101,0,0,398,399,5,102,0,0,399,401,1,0,0,0,400,402,7,0,0,0,
434
+ 401,400,1,0,0,0,402,403,1,0,0,0,403,401,1,0,0,0,403,404,1,0,0,0,
435
+ 404,405,1,0,0,0,405,409,7,3,0,0,406,408,7,4,0,0,407,406,1,0,0,0,
436
+ 408,411,1,0,0,0,409,407,1,0,0,0,409,410,1,0,0,0,410,415,1,0,0,0,
437
+ 411,409,1,0,0,0,412,414,7,0,0,0,413,412,1,0,0,0,414,417,1,0,0,0,
438
+ 415,413,1,0,0,0,415,416,1,0,0,0,416,12,1,0,0,0,417,415,1,0,0,0,418,
439
+ 422,5,35,0,0,419,421,7,0,0,0,420,419,1,0,0,0,421,424,1,0,0,0,422,
440
+ 420,1,0,0,0,422,423,1,0,0,0,423,425,1,0,0,0,424,422,1,0,0,0,425,
441
+ 426,5,105,0,0,426,427,5,102,0,0,427,428,5,110,0,0,428,429,5,100,
442
+ 0,0,429,430,5,101,0,0,430,431,5,102,0,0,431,433,1,0,0,0,432,434,
443
+ 7,0,0,0,433,432,1,0,0,0,434,435,1,0,0,0,435,433,1,0,0,0,435,436,
444
+ 1,0,0,0,436,437,1,0,0,0,437,441,7,3,0,0,438,440,7,4,0,0,439,438,
445
+ 1,0,0,0,440,443,1,0,0,0,441,439,1,0,0,0,441,442,1,0,0,0,442,447,
446
+ 1,0,0,0,443,441,1,0,0,0,444,446,7,0,0,0,445,444,1,0,0,0,446,449,
447
+ 1,0,0,0,447,445,1,0,0,0,447,448,1,0,0,0,448,14,1,0,0,0,449,447,1,
448
+ 0,0,0,450,454,5,35,0,0,451,453,7,0,0,0,452,451,1,0,0,0,453,456,1,
449
+ 0,0,0,454,452,1,0,0,0,454,455,1,0,0,0,455,457,1,0,0,0,456,454,1,
450
+ 0,0,0,457,458,5,101,0,0,458,459,5,108,0,0,459,460,5,115,0,0,460,
451
+ 461,5,101,0,0,461,465,1,0,0,0,462,464,7,0,0,0,463,462,1,0,0,0,464,
452
+ 467,1,0,0,0,465,463,1,0,0,0,465,466,1,0,0,0,466,16,1,0,0,0,467,465,
453
+ 1,0,0,0,468,472,5,35,0,0,469,471,7,0,0,0,470,469,1,0,0,0,471,474,
454
+ 1,0,0,0,472,470,1,0,0,0,472,473,1,0,0,0,473,475,1,0,0,0,474,472,
455
+ 1,0,0,0,475,476,5,101,0,0,476,477,5,110,0,0,477,478,5,100,0,0,478,
456
+ 479,5,105,0,0,479,480,5,102,0,0,480,484,1,0,0,0,481,483,7,0,0,0,
457
+ 482,481,1,0,0,0,483,486,1,0,0,0,484,482,1,0,0,0,484,485,1,0,0,0,
458
+ 485,18,1,0,0,0,486,484,1,0,0,0,487,491,5,35,0,0,488,490,7,0,0,0,
459
+ 489,488,1,0,0,0,490,493,1,0,0,0,491,489,1,0,0,0,491,492,1,0,0,0,
460
+ 492,494,1,0,0,0,493,491,1,0,0,0,494,495,5,112,0,0,495,496,5,114,
461
+ 0,0,496,497,5,97,0,0,497,498,5,103,0,0,498,499,5,109,0,0,499,500,
462
+ 5,97,0,0,500,502,1,0,0,0,501,503,7,0,0,0,502,501,1,0,0,0,503,504,
463
+ 1,0,0,0,504,502,1,0,0,0,504,505,1,0,0,0,505,506,1,0,0,0,506,507,
464
+ 5,116,0,0,507,508,5,97,0,0,508,509,5,114,0,0,509,510,5,103,0,0,510,
465
+ 511,5,101,0,0,511,512,5,116,0,0,512,514,1,0,0,0,513,515,7,0,0,0,
466
+ 514,513,1,0,0,0,515,516,1,0,0,0,516,514,1,0,0,0,516,517,1,0,0,0,
467
+ 517,518,1,0,0,0,518,522,7,3,0,0,519,521,7,6,0,0,520,519,1,0,0,0,
468
+ 521,524,1,0,0,0,522,520,1,0,0,0,522,523,1,0,0,0,523,20,1,0,0,0,524,
469
+ 522,1,0,0,0,525,526,5,115,0,0,526,527,5,99,0,0,527,528,5,111,0,0,
470
+ 528,529,5,112,0,0,529,530,5,101,0,0,530,22,1,0,0,0,531,532,5,115,
471
+ 0,0,532,533,5,116,0,0,533,534,5,114,0,0,534,535,5,117,0,0,535,536,
472
+ 5,99,0,0,536,537,5,116,0,0,537,24,1,0,0,0,538,539,5,101,0,0,539,
473
+ 540,5,110,0,0,540,541,5,117,0,0,541,542,5,109,0,0,542,26,1,0,0,0,
474
+ 543,544,5,116,0,0,544,545,5,104,0,0,545,546,5,105,0,0,546,547,5,
475
+ 115,0,0,547,28,1,0,0,0,548,549,5,103,0,0,549,550,5,108,0,0,550,551,
476
+ 5,111,0,0,551,552,5,98,0,0,552,553,5,97,0,0,553,554,5,108,0,0,554,
477
+ 30,1,0,0,0,555,556,5,114,0,0,556,557,5,101,0,0,557,558,5,103,0,0,
478
+ 558,559,5,105,0,0,559,560,5,115,0,0,560,561,5,116,0,0,561,562,5,
479
+ 101,0,0,562,563,5,114,0,0,563,32,1,0,0,0,564,565,5,112,0,0,565,566,
480
+ 5,114,0,0,566,567,5,105,0,0,567,568,5,118,0,0,568,569,5,97,0,0,569,
481
+ 570,5,116,0,0,570,571,5,101,0,0,571,34,1,0,0,0,572,573,5,112,0,0,
482
+ 573,574,5,117,0,0,574,575,5,98,0,0,575,576,5,108,0,0,576,577,5,105,
483
+ 0,0,577,578,5,99,0,0,578,36,1,0,0,0,579,580,5,99,0,0,580,581,5,111,
484
+ 0,0,581,582,5,110,0,0,582,583,5,115,0,0,583,584,5,116,0,0,584,38,
485
+ 1,0,0,0,585,586,5,118,0,0,586,587,5,111,0,0,587,588,5,108,0,0,588,
486
+ 589,5,97,0,0,589,590,5,116,0,0,590,591,5,105,0,0,591,592,5,108,0,
487
+ 0,592,593,5,101,0,0,593,40,1,0,0,0,594,595,5,118,0,0,595,596,5,111,
488
+ 0,0,596,597,5,105,0,0,597,598,5,100,0,0,598,42,1,0,0,0,599,600,5,
489
+ 105,0,0,600,601,5,102,0,0,601,44,1,0,0,0,602,603,5,101,0,0,603,604,
490
+ 5,108,0,0,604,605,5,115,0,0,605,606,5,101,0,0,606,46,1,0,0,0,607,
491
+ 608,5,119,0,0,608,609,5,104,0,0,609,610,5,105,0,0,610,611,5,108,
492
+ 0,0,611,612,5,101,0,0,612,48,1,0,0,0,613,614,5,100,0,0,614,615,5,
493
+ 111,0,0,615,50,1,0,0,0,616,617,5,102,0,0,617,618,5,111,0,0,618,619,
494
+ 5,114,0,0,619,52,1,0,0,0,620,621,5,115,0,0,621,622,5,119,0,0,622,
495
+ 623,5,105,0,0,623,624,5,116,0,0,624,625,5,99,0,0,625,626,5,104,0,
496
+ 0,626,54,1,0,0,0,627,628,5,99,0,0,628,629,5,97,0,0,629,630,5,115,
497
+ 0,0,630,631,5,101,0,0,631,56,1,0,0,0,632,633,5,100,0,0,633,634,5,
498
+ 101,0,0,634,635,5,102,0,0,635,636,5,97,0,0,636,637,5,117,0,0,637,
499
+ 638,5,108,0,0,638,639,5,116,0,0,639,58,1,0,0,0,640,641,5,114,0,0,
500
+ 641,642,5,101,0,0,642,643,5,116,0,0,643,644,5,117,0,0,644,645,5,
501
+ 114,0,0,645,646,5,110,0,0,646,60,1,0,0,0,647,648,5,116,0,0,648,649,
502
+ 5,114,0,0,649,650,5,117,0,0,650,651,5,101,0,0,651,62,1,0,0,0,652,
503
+ 653,5,102,0,0,653,654,5,97,0,0,654,655,5,108,0,0,655,656,5,115,0,
504
+ 0,656,657,5,101,0,0,657,64,1,0,0,0,658,659,5,110,0,0,659,660,5,117,
505
+ 0,0,660,661,5,108,0,0,661,662,5,108,0,0,662,66,1,0,0,0,663,664,5,
506
+ 78,0,0,664,665,5,85,0,0,665,666,5,76,0,0,666,667,5,76,0,0,667,68,
507
+ 1,0,0,0,668,669,5,115,0,0,669,670,5,116,0,0,670,671,5,114,0,0,671,
508
+ 672,5,105,0,0,672,673,5,110,0,0,673,674,5,103,0,0,674,70,1,0,0,0,
509
+ 675,676,5,115,0,0,676,677,5,105,0,0,677,678,5,122,0,0,678,679,5,
510
+ 101,0,0,679,680,5,111,0,0,680,681,5,102,0,0,681,72,1,0,0,0,682,683,
511
+ 5,98,0,0,683,684,5,105,0,0,684,685,5,116,0,0,685,686,5,109,0,0,686,
512
+ 687,5,97,0,0,687,688,5,112,0,0,688,689,5,56,0,0,689,74,1,0,0,0,690,
513
+ 691,5,98,0,0,691,692,5,105,0,0,692,693,5,116,0,0,693,694,5,109,0,
514
+ 0,694,695,5,97,0,0,695,696,5,112,0,0,696,697,5,49,0,0,697,698,5,
515
+ 54,0,0,698,76,1,0,0,0,699,700,5,98,0,0,700,701,5,105,0,0,701,702,
516
+ 5,116,0,0,702,703,5,109,0,0,703,704,5,97,0,0,704,705,5,112,0,0,705,
517
+ 706,5,50,0,0,706,707,5,52,0,0,707,78,1,0,0,0,708,709,5,98,0,0,709,
518
+ 710,5,105,0,0,710,711,5,116,0,0,711,712,5,109,0,0,712,713,5,97,0,
519
+ 0,713,714,5,112,0,0,714,715,5,51,0,0,715,716,5,50,0,0,716,80,1,0,
520
+ 0,0,717,718,5,114,0,0,718,719,5,119,0,0,719,82,1,0,0,0,720,721,5,
521
+ 114,0,0,721,722,5,111,0,0,722,84,1,0,0,0,723,724,5,119,0,0,724,725,
522
+ 5,111,0,0,725,86,1,0,0,0,726,727,5,119,0,0,727,728,5,49,0,0,728,
523
+ 729,5,99,0,0,729,88,1,0,0,0,730,731,5,119,0,0,731,732,5,49,0,0,732,
524
+ 733,5,115,0,0,733,90,1,0,0,0,734,735,5,99,0,0,735,736,5,108,0,0,
525
+ 736,737,5,97,0,0,737,738,5,109,0,0,738,739,5,112,0,0,739,92,1,0,
526
+ 0,0,740,741,5,119,0,0,741,742,5,114,0,0,742,743,5,97,0,0,743,744,
527
+ 5,112,0,0,744,94,1,0,0,0,745,746,5,97,0,0,746,747,5,116,0,0,747,
528
+ 748,5,111,0,0,748,749,5,109,0,0,749,750,5,105,0,0,750,751,5,99,0,
529
+ 0,751,96,1,0,0,0,752,753,5,99,0,0,753,754,5,114,0,0,754,755,5,105,
530
+ 0,0,755,756,5,116,0,0,756,757,5,105,0,0,757,758,5,99,0,0,758,759,
531
+ 5,97,0,0,759,760,5,108,0,0,760,98,1,0,0,0,761,763,7,7,0,0,762,761,
532
+ 1,0,0,0,763,764,1,0,0,0,764,762,1,0,0,0,764,765,1,0,0,0,765,766,
533
+ 1,0,0,0,766,768,5,46,0,0,767,769,7,7,0,0,768,767,1,0,0,0,769,770,
534
+ 1,0,0,0,770,768,1,0,0,0,770,771,1,0,0,0,771,781,1,0,0,0,772,774,
535
+ 7,8,0,0,773,775,7,9,0,0,774,773,1,0,0,0,774,775,1,0,0,0,775,777,
536
+ 1,0,0,0,776,778,7,7,0,0,777,776,1,0,0,0,778,779,1,0,0,0,779,777,
537
+ 1,0,0,0,779,780,1,0,0,0,780,782,1,0,0,0,781,772,1,0,0,0,781,782,
538
+ 1,0,0,0,782,798,1,0,0,0,783,785,7,7,0,0,784,783,1,0,0,0,785,786,
539
+ 1,0,0,0,786,784,1,0,0,0,786,787,1,0,0,0,787,788,1,0,0,0,788,790,
540
+ 7,8,0,0,789,791,7,9,0,0,790,789,1,0,0,0,790,791,1,0,0,0,791,793,
541
+ 1,0,0,0,792,794,7,7,0,0,793,792,1,0,0,0,794,795,1,0,0,0,795,793,
542
+ 1,0,0,0,795,796,1,0,0,0,796,798,1,0,0,0,797,762,1,0,0,0,797,784,
543
+ 1,0,0,0,798,799,1,0,0,0,799,804,7,10,0,0,800,801,5,51,0,0,801,805,
544
+ 5,50,0,0,802,803,5,54,0,0,803,805,5,52,0,0,804,800,1,0,0,0,804,802,
545
+ 1,0,0,0,805,100,1,0,0,0,806,807,5,48,0,0,807,809,7,11,0,0,808,810,
546
+ 7,12,0,0,809,808,1,0,0,0,810,811,1,0,0,0,811,809,1,0,0,0,811,812,
547
+ 1,0,0,0,812,813,1,0,0,0,813,821,7,13,0,0,814,822,5,56,0,0,815,816,
548
+ 5,49,0,0,816,822,5,54,0,0,817,818,5,51,0,0,818,822,5,50,0,0,819,
549
+ 820,5,54,0,0,820,822,5,52,0,0,821,814,1,0,0,0,821,815,1,0,0,0,821,
550
+ 817,1,0,0,0,821,819,1,0,0,0,822,102,1,0,0,0,823,824,5,48,0,0,824,
551
+ 826,7,14,0,0,825,827,7,15,0,0,826,825,1,0,0,0,827,828,1,0,0,0,828,
552
+ 826,1,0,0,0,828,829,1,0,0,0,829,830,1,0,0,0,830,838,7,13,0,0,831,
553
+ 839,5,56,0,0,832,833,5,49,0,0,833,839,5,54,0,0,834,835,5,51,0,0,
554
+ 835,839,5,50,0,0,836,837,5,54,0,0,837,839,5,52,0,0,838,831,1,0,0,
555
+ 0,838,832,1,0,0,0,838,834,1,0,0,0,838,836,1,0,0,0,839,104,1,0,0,
556
+ 0,840,842,7,7,0,0,841,840,1,0,0,0,842,843,1,0,0,0,843,841,1,0,0,
557
+ 0,843,844,1,0,0,0,844,845,1,0,0,0,845,853,7,13,0,0,846,854,5,56,
558
+ 0,0,847,848,5,49,0,0,848,854,5,54,0,0,849,850,5,51,0,0,850,854,5,
559
+ 50,0,0,851,852,5,54,0,0,852,854,5,52,0,0,853,846,1,0,0,0,853,847,
560
+ 1,0,0,0,853,849,1,0,0,0,853,851,1,0,0,0,854,106,1,0,0,0,855,856,
561
+ 5,117,0,0,856,857,5,56,0,0,857,108,1,0,0,0,858,859,5,117,0,0,859,
562
+ 860,5,49,0,0,860,861,5,54,0,0,861,110,1,0,0,0,862,863,5,117,0,0,
563
+ 863,864,5,51,0,0,864,865,5,50,0,0,865,112,1,0,0,0,866,867,5,117,
564
+ 0,0,867,868,5,54,0,0,868,869,5,52,0,0,869,114,1,0,0,0,870,871,5,
565
+ 105,0,0,871,872,5,56,0,0,872,116,1,0,0,0,873,874,5,105,0,0,874,875,
566
+ 5,49,0,0,875,876,5,54,0,0,876,118,1,0,0,0,877,878,5,105,0,0,878,
567
+ 879,5,51,0,0,879,880,5,50,0,0,880,120,1,0,0,0,881,882,5,105,0,0,
568
+ 882,883,5,54,0,0,883,884,5,52,0,0,884,122,1,0,0,0,885,886,5,102,
569
+ 0,0,886,887,5,51,0,0,887,888,5,50,0,0,888,124,1,0,0,0,889,890,5,
570
+ 102,0,0,890,891,5,54,0,0,891,892,5,52,0,0,892,126,1,0,0,0,893,894,
571
+ 5,98,0,0,894,895,5,111,0,0,895,896,5,111,0,0,896,897,5,108,0,0,897,
572
+ 128,1,0,0,0,898,899,5,73,0,0,899,900,5,83,0,0,900,901,5,82,0,0,901,
573
+ 130,1,0,0,0,902,903,5,60,0,0,903,904,5,60,0,0,904,905,5,60,0,0,905,
574
+ 906,5,45,0,0,906,132,1,0,0,0,907,908,5,62,0,0,908,909,5,62,0,0,909,
575
+ 910,5,60,0,0,910,911,5,45,0,0,911,134,1,0,0,0,912,913,5,43,0,0,913,
576
+ 914,5,60,0,0,914,915,5,45,0,0,915,136,1,0,0,0,916,917,5,45,0,0,917,
577
+ 918,5,60,0,0,918,919,5,45,0,0,919,138,1,0,0,0,920,921,5,42,0,0,921,
578
+ 922,5,60,0,0,922,923,5,45,0,0,923,140,1,0,0,0,924,925,5,47,0,0,925,
579
+ 926,5,60,0,0,926,927,5,45,0,0,927,142,1,0,0,0,928,929,5,37,0,0,929,
580
+ 930,5,60,0,0,930,931,5,45,0,0,931,144,1,0,0,0,932,933,5,38,0,0,933,
581
+ 934,5,60,0,0,934,935,5,45,0,0,935,146,1,0,0,0,936,937,5,124,0,0,
582
+ 937,938,5,60,0,0,938,939,5,45,0,0,939,148,1,0,0,0,940,941,5,94,0,
583
+ 0,941,942,5,60,0,0,942,943,5,45,0,0,943,150,1,0,0,0,944,945,5,60,
584
+ 0,0,945,946,5,45,0,0,946,152,1,0,0,0,947,948,5,61,0,0,948,154,1,
585
+ 0,0,0,949,950,5,33,0,0,950,951,5,61,0,0,951,156,1,0,0,0,952,953,
586
+ 5,60,0,0,953,158,1,0,0,0,954,955,5,62,0,0,955,160,1,0,0,0,956,957,
587
+ 5,60,0,0,957,958,5,61,0,0,958,162,1,0,0,0,959,960,5,62,0,0,960,961,
588
+ 5,61,0,0,961,164,1,0,0,0,962,963,5,43,0,0,963,166,1,0,0,0,964,965,
589
+ 5,45,0,0,965,168,1,0,0,0,966,967,5,42,0,0,967,170,1,0,0,0,968,969,
590
+ 5,47,0,0,969,172,1,0,0,0,970,971,5,37,0,0,971,174,1,0,0,0,972,973,
591
+ 5,38,0,0,973,974,5,38,0,0,974,176,1,0,0,0,975,976,5,124,0,0,976,
592
+ 977,5,124,0,0,977,178,1,0,0,0,978,979,5,33,0,0,979,180,1,0,0,0,980,
593
+ 981,5,38,0,0,981,182,1,0,0,0,982,983,5,124,0,0,983,184,1,0,0,0,984,
594
+ 985,5,94,0,0,985,186,1,0,0,0,986,987,5,126,0,0,987,188,1,0,0,0,988,
595
+ 989,5,60,0,0,989,990,5,60,0,0,990,190,1,0,0,0,991,992,5,62,0,0,992,
596
+ 993,5,62,0,0,993,192,1,0,0,0,994,995,5,40,0,0,995,194,1,0,0,0,996,
597
+ 997,5,41,0,0,997,196,1,0,0,0,998,999,5,123,0,0,999,198,1,0,0,0,1000,
598
+ 1001,5,125,0,0,1001,200,1,0,0,0,1002,1003,5,91,0,0,1003,202,1,0,
599
+ 0,0,1004,1005,5,93,0,0,1005,204,1,0,0,0,1006,1007,5,59,0,0,1007,
600
+ 206,1,0,0,0,1008,1009,5,44,0,0,1009,208,1,0,0,0,1010,1011,5,46,0,
601
+ 0,1011,210,1,0,0,0,1012,1013,5,46,0,0,1013,1014,5,46,0,0,1014,212,
602
+ 1,0,0,0,1015,1016,5,64,0,0,1016,214,1,0,0,0,1017,1018,5,58,0,0,1018,
603
+ 216,1,0,0,0,1019,1020,5,48,0,0,1020,1022,7,11,0,0,1021,1023,7,12,
604
+ 0,0,1022,1021,1,0,0,0,1023,1024,1,0,0,0,1024,1022,1,0,0,0,1024,1025,
605
+ 1,0,0,0,1025,218,1,0,0,0,1026,1027,5,48,0,0,1027,1029,7,14,0,0,1028,
606
+ 1030,7,15,0,0,1029,1028,1,0,0,0,1030,1031,1,0,0,0,1031,1029,1,0,
607
+ 0,0,1031,1032,1,0,0,0,1032,220,1,0,0,0,1033,1035,7,7,0,0,1034,1033,
608
+ 1,0,0,0,1035,1036,1,0,0,0,1036,1034,1,0,0,0,1036,1037,1,0,0,0,1037,
609
+ 1038,1,0,0,0,1038,1040,5,46,0,0,1039,1041,7,7,0,0,1040,1039,1,0,
610
+ 0,0,1041,1042,1,0,0,0,1042,1040,1,0,0,0,1042,1043,1,0,0,0,1043,1053,
611
+ 1,0,0,0,1044,1046,7,8,0,0,1045,1047,7,9,0,0,1046,1045,1,0,0,0,1046,
612
+ 1047,1,0,0,0,1047,1049,1,0,0,0,1048,1050,7,7,0,0,1049,1048,1,0,0,
613
+ 0,1050,1051,1,0,0,0,1051,1049,1,0,0,0,1051,1052,1,0,0,0,1052,1054,
614
+ 1,0,0,0,1053,1044,1,0,0,0,1053,1054,1,0,0,0,1054,1070,1,0,0,0,1055,
615
+ 1057,7,7,0,0,1056,1055,1,0,0,0,1057,1058,1,0,0,0,1058,1056,1,0,0,
616
+ 0,1058,1059,1,0,0,0,1059,1060,1,0,0,0,1060,1062,7,8,0,0,1061,1063,
617
+ 7,9,0,0,1062,1061,1,0,0,0,1062,1063,1,0,0,0,1063,1065,1,0,0,0,1064,
618
+ 1066,7,7,0,0,1065,1064,1,0,0,0,1066,1067,1,0,0,0,1067,1065,1,0,0,
619
+ 0,1067,1068,1,0,0,0,1068,1070,1,0,0,0,1069,1034,1,0,0,0,1069,1056,
620
+ 1,0,0,0,1070,222,1,0,0,0,1071,1073,7,7,0,0,1072,1071,1,0,0,0,1073,
621
+ 1074,1,0,0,0,1074,1072,1,0,0,0,1074,1075,1,0,0,0,1075,224,1,0,0,
622
+ 0,1076,1082,5,34,0,0,1077,1081,8,16,0,0,1078,1079,5,92,0,0,1079,
623
+ 1081,9,0,0,0,1080,1077,1,0,0,0,1080,1078,1,0,0,0,1081,1084,1,0,0,
624
+ 0,1082,1080,1,0,0,0,1082,1083,1,0,0,0,1083,1085,1,0,0,0,1084,1082,
625
+ 1,0,0,0,1085,1086,5,34,0,0,1086,226,1,0,0,0,1087,1091,5,39,0,0,1088,
626
+ 1092,8,17,0,0,1089,1090,5,92,0,0,1090,1092,9,0,0,0,1091,1088,1,0,
627
+ 0,0,1091,1089,1,0,0,0,1092,1093,1,0,0,0,1093,1094,5,39,0,0,1094,
628
+ 228,1,0,0,0,1095,1099,7,3,0,0,1096,1098,7,4,0,0,1097,1096,1,0,0,
629
+ 0,1098,1101,1,0,0,0,1099,1097,1,0,0,0,1099,1100,1,0,0,0,1100,230,
630
+ 1,0,0,0,1101,1099,1,0,0,0,1102,1103,5,47,0,0,1103,1104,5,47,0,0,
631
+ 1104,1105,5,47,0,0,1105,1109,1,0,0,0,1106,1108,8,5,0,0,1107,1106,
632
+ 1,0,0,0,1108,1111,1,0,0,0,1109,1107,1,0,0,0,1109,1110,1,0,0,0,1110,
633
+ 1112,1,0,0,0,1111,1109,1,0,0,0,1112,1113,6,115,0,0,1113,232,1,0,
634
+ 0,0,1114,1115,5,47,0,0,1115,1116,5,47,0,0,1116,1120,1,0,0,0,1117,
635
+ 1119,8,5,0,0,1118,1117,1,0,0,0,1119,1122,1,0,0,0,1120,1118,1,0,0,
636
+ 0,1120,1121,1,0,0,0,1121,1123,1,0,0,0,1122,1120,1,0,0,0,1123,1124,
637
+ 6,116,0,0,1124,234,1,0,0,0,1125,1126,5,47,0,0,1126,1127,5,42,0,0,
638
+ 1127,1131,1,0,0,0,1128,1130,9,0,0,0,1129,1128,1,0,0,0,1130,1133,
639
+ 1,0,0,0,1131,1132,1,0,0,0,1131,1129,1,0,0,0,1132,1134,1,0,0,0,1133,
640
+ 1131,1,0,0,0,1134,1135,5,42,0,0,1135,1136,5,47,0,0,1136,1137,1,0,
641
+ 0,0,1137,1138,6,117,0,0,1138,236,1,0,0,0,1139,1141,7,18,0,0,1140,
642
+ 1139,1,0,0,0,1141,1142,1,0,0,0,1142,1140,1,0,0,0,1142,1143,1,0,0,
643
+ 0,1143,1144,1,0,0,0,1144,1145,6,118,1,0,1145,238,1,0,0,0,72,0,245,
644
+ 259,266,274,278,284,297,303,309,316,323,336,342,348,353,359,372,
645
+ 378,384,391,403,409,415,422,435,441,447,454,465,472,484,491,504,
646
+ 516,522,764,770,774,779,781,786,790,795,797,804,811,821,828,838,
647
+ 843,853,1024,1031,1036,1042,1046,1051,1053,1058,1062,1067,1069,1074,
648
+ 1080,1082,1091,1099,1109,1120,1131,1142,2,0,1,0,6,0,0
649
+ ];
650
+
651
+ private static __ATN: antlr.ATN;
652
+ public static get _ATN(): antlr.ATN {
653
+ if (!CNextLexer.__ATN) {
654
+ CNextLexer.__ATN = new antlr.ATNDeserializer().deserialize(CNextLexer._serializedATN);
655
+ }
656
+
657
+ return CNextLexer.__ATN;
658
+ }
659
+
660
+
661
+ private static readonly vocabulary = new antlr.Vocabulary(CNextLexer.literalNames, CNextLexer.symbolicNames, []);
662
+
663
+ public override get vocabulary(): antlr.Vocabulary {
664
+ return CNextLexer.vocabulary;
665
+ }
666
+
667
+ private static readonly decisionsToDFA = CNextLexer._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) );
668
+ }