circuitscript 0.1.20 → 0.1.23

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 (45) hide show
  1. package/dist/cjs/BaseVisitor.js +22 -0
  2. package/dist/cjs/ComponentAnnotater.js +88 -0
  3. package/dist/cjs/RefdesAnnotationVisitor.js +197 -0
  4. package/dist/cjs/antlr/CircuitScriptLexer.js +202 -197
  5. package/dist/cjs/antlr/CircuitScriptParser.js +975 -833
  6. package/dist/cjs/environment.js +15 -1
  7. package/dist/cjs/execute.js +45 -2
  8. package/dist/cjs/helpers.js +20 -2
  9. package/dist/cjs/lexer.js +21 -9
  10. package/dist/cjs/main.js +13 -0
  11. package/dist/cjs/objects/ClassComponent.js +4 -1
  12. package/dist/cjs/objects/ExecutionScope.js +1 -0
  13. package/dist/cjs/parser.js +1 -0
  14. package/dist/cjs/visitor.js +122 -71
  15. package/dist/esm/BaseVisitor.js +22 -0
  16. package/dist/esm/ComponentAnnotater.js +84 -0
  17. package/dist/esm/RefdesAnnotationVisitor.js +196 -0
  18. package/dist/esm/antlr/CircuitScriptLexer.js +202 -197
  19. package/dist/esm/antlr/CircuitScriptParser.js +971 -831
  20. package/dist/esm/antlr/CircuitScriptVisitor.js +2 -0
  21. package/dist/esm/environment.js +15 -1
  22. package/dist/esm/execute.js +45 -2
  23. package/dist/esm/helpers.js +20 -2
  24. package/dist/esm/lexer.js +21 -9
  25. package/dist/esm/main.js +13 -0
  26. package/dist/esm/objects/ClassComponent.js +4 -1
  27. package/dist/esm/objects/ExecutionScope.js +1 -0
  28. package/dist/esm/parser.js +1 -0
  29. package/dist/esm/visitor.js +120 -69
  30. package/dist/types/BaseVisitor.d.ts +3 -0
  31. package/dist/types/ComponentAnnotater.d.ts +16 -0
  32. package/dist/types/RefdesAnnotationVisitor.d.ts +35 -0
  33. package/dist/types/antlr/CircuitScriptLexer.d.ts +15 -14
  34. package/dist/types/antlr/CircuitScriptParser.d.ts +81 -60
  35. package/dist/types/antlr/CircuitScriptVisitor.d.ts +4 -0
  36. package/dist/types/environment.d.ts +1 -0
  37. package/dist/types/execute.d.ts +8 -1
  38. package/dist/types/helpers.d.ts +4 -1
  39. package/dist/types/lexer.d.ts +1 -1
  40. package/dist/types/objects/ClassComponent.d.ts +9 -0
  41. package/dist/types/objects/ExecutionScope.d.ts +2 -1
  42. package/dist/types/objects/types.d.ts +1 -0
  43. package/dist/types/parser.d.ts +2 -1
  44. package/dist/types/visitor.d.ts +8 -1
  45. package/package.json +1 -1
@@ -51,22 +51,23 @@ export class CircuitScriptParser extends antlr.Parser {
51
51
  static DivideAssign = 49;
52
52
  static MultiplyAssign = 50;
53
53
  static ModulusAssign = 51;
54
- static OPEN_PAREN = 52;
55
- static CLOSE_PAREN = 53;
56
- static NOT_CONNECTED = 54;
57
- static BOOLEAN_VALUE = 55;
58
- static ID = 56;
59
- static INTEGER_VALUE = 57;
60
- static DECIMAL_VALUE = 58;
61
- static NUMERIC_VALUE = 59;
62
- static STRING_VALUE = 60;
63
- static PERCENTAGE_VALUE = 61;
64
- static ALPHA_NUMERIC = 62;
65
- static WS = 63;
66
- static NEWLINE = 64;
67
- static COMMENT = 65;
68
- static INDENT = 66;
69
- static DEDENT = 67;
54
+ static ANNOTATION_START = 52;
55
+ static OPEN_PAREN = 53;
56
+ static CLOSE_PAREN = 54;
57
+ static NOT_CONNECTED = 55;
58
+ static BOOLEAN_VALUE = 56;
59
+ static ID = 57;
60
+ static INTEGER_VALUE = 58;
61
+ static DECIMAL_VALUE = 59;
62
+ static NUMERIC_VALUE = 60;
63
+ static STRING_VALUE = 61;
64
+ static PERCENTAGE_VALUE = 62;
65
+ static ALPHA_NUMERIC = 63;
66
+ static WS = 64;
67
+ static NEWLINE = 65;
68
+ static COMMENT = 66;
69
+ static INDENT = 67;
70
+ static DEDENT = 68;
70
71
  static RULE_script = 0;
71
72
  static RULE_expression = 1;
72
73
  static RULE_flow_expressions = 2;
@@ -89,49 +90,51 @@ export class CircuitScriptParser extends antlr.Parser {
89
90
  static RULE_at_to_multiple_line_expr_to_pin = 19;
90
91
  static RULE_at_block = 20;
91
92
  static RULE_at_block_expressions = 21;
92
- static RULE_at_block_pin_expr = 22;
93
- static RULE_at_block_pin_expression_simple = 23;
94
- static RULE_at_block_pin_expression_complex = 24;
95
- static RULE_assignment_expr = 25;
96
- static RULE_operator_assignment_expr = 26;
97
- static RULE_keyword_assignment_expr = 27;
98
- static RULE_parameters = 28;
99
- static RULE_property_set_expr = 29;
100
- static RULE_double_dot_property_set_expr = 30;
101
- static RULE_data_expr = 31;
102
- static RULE_binary_operator = 32;
103
- static RULE_unary_operator = 33;
104
- static RULE_value_expr = 34;
105
- static RULE_function_def_expr = 35;
106
- static RULE_function_expr = 36;
107
- static RULE_function_args_expr = 37;
108
- static RULE_atom_expr = 38;
109
- static RULE_trailer_expr = 39;
110
- static RULE_trailer_expr2 = 40;
111
- static RULE_function_call_expr = 41;
112
- static RULE_net_namespace_expr = 42;
113
- static RULE_function_return_expr = 43;
114
- static RULE_property_block_expr = 44;
115
- static RULE_create_component_expr = 45;
116
- static RULE_graphic_expressions_block = 46;
117
- static RULE_create_graphic_expr = 47;
118
- static RULE_create_module_expr = 48;
119
- static RULE_nested_properties_inner = 49;
120
- static RULE_graphic_expr = 50;
121
- static RULE_property_expr = 51;
122
- static RULE_property_key_expr = 52;
123
- static RULE_property_value_expr = 53;
124
- static RULE_wire_atom_expr = 54;
125
- static RULE_wire_expr = 55;
126
- static RULE_array_expr = 56;
127
- static RULE_point_expr = 57;
128
- static RULE_import_expr = 58;
129
- static RULE_frame_expr = 59;
130
- static RULE_if_expr = 60;
131
- static RULE_if_inner_expr = 61;
132
- static RULE_else_expr = 62;
133
- static RULE_while_expr = 63;
134
- static RULE_for_expr = 64;
93
+ static RULE_at_block_header = 22;
94
+ static RULE_at_block_pin_expr = 23;
95
+ static RULE_at_block_pin_expression_simple = 24;
96
+ static RULE_at_block_pin_expression_complex = 25;
97
+ static RULE_assignment_expr = 26;
98
+ static RULE_operator_assignment_expr = 27;
99
+ static RULE_keyword_assignment_expr = 28;
100
+ static RULE_parameters = 29;
101
+ static RULE_property_set_expr = 30;
102
+ static RULE_double_dot_property_set_expr = 31;
103
+ static RULE_data_expr = 32;
104
+ static RULE_binary_operator = 33;
105
+ static RULE_unary_operator = 34;
106
+ static RULE_value_expr = 35;
107
+ static RULE_function_def_expr = 36;
108
+ static RULE_function_expr = 37;
109
+ static RULE_function_args_expr = 38;
110
+ static RULE_atom_expr = 39;
111
+ static RULE_trailer_expr = 40;
112
+ static RULE_trailer_expr2 = 41;
113
+ static RULE_function_call_expr = 42;
114
+ static RULE_net_namespace_expr = 43;
115
+ static RULE_function_return_expr = 44;
116
+ static RULE_property_block_expr = 45;
117
+ static RULE_create_component_expr = 46;
118
+ static RULE_graphic_expressions_block = 47;
119
+ static RULE_create_graphic_expr = 48;
120
+ static RULE_create_module_expr = 49;
121
+ static RULE_nested_properties_inner = 50;
122
+ static RULE_graphic_expr = 51;
123
+ static RULE_property_expr = 52;
124
+ static RULE_property_key_expr = 53;
125
+ static RULE_property_value_expr = 54;
126
+ static RULE_wire_atom_expr = 55;
127
+ static RULE_wire_expr = 56;
128
+ static RULE_array_expr = 57;
129
+ static RULE_point_expr = 58;
130
+ static RULE_import_expr = 59;
131
+ static RULE_frame_expr = 60;
132
+ static RULE_if_expr = 61;
133
+ static RULE_if_inner_expr = 62;
134
+ static RULE_else_expr = 63;
135
+ static RULE_while_expr = 64;
136
+ static RULE_for_expr = 65;
137
+ static RULE_annotation_comment_expr = 66;
135
138
  static literalNames = [
136
139
  null, "':'", "','", "'='", "'..'", "'['", "']'", "'.'", "'break'",
137
140
  "'branch'", "'create'", "'component'", "'graphic'", "'module'",
@@ -140,7 +143,7 @@ export class CircuitScriptParser extends antlr.Parser {
140
143
  "'while'", "'continue'", "'if'", "'else'", null, "'frame'", "'sheet'",
141
144
  "'=='", "'!='", "'>'", "'>='", "'<'", "'<='", null, null, "'+'",
142
145
  "'-'", "'/'", "'*'", "'%'", "'+='", "'-='", "'/='", "'*='", "'%='",
143
- "'('", "')'"
146
+ "'#='", "'('", "')'"
144
147
  ];
145
148
  static symbolicNames = [
146
149
  null, null, null, null, null, null, null, null, "Break", "Branch",
@@ -150,10 +153,11 @@ export class CircuitScriptParser extends antlr.Parser {
150
153
  "Sheet", "Equals", "NotEquals", "GreaterThan", "GreatOrEqualThan",
151
154
  "LessThan", "LessOrEqualThan", "LogicalAnd", "LogicalOr", "Addition",
152
155
  "Minus", "Divide", "Multiply", "Modulus", "AdditionAssign", "MinusAssign",
153
- "DivideAssign", "MultiplyAssign", "ModulusAssign", "OPEN_PAREN",
154
- "CLOSE_PAREN", "NOT_CONNECTED", "BOOLEAN_VALUE", "ID", "INTEGER_VALUE",
155
- "DECIMAL_VALUE", "NUMERIC_VALUE", "STRING_VALUE", "PERCENTAGE_VALUE",
156
- "ALPHA_NUMERIC", "WS", "NEWLINE", "COMMENT", "INDENT", "DEDENT"
156
+ "DivideAssign", "MultiplyAssign", "ModulusAssign", "ANNOTATION_START",
157
+ "OPEN_PAREN", "CLOSE_PAREN", "NOT_CONNECTED", "BOOLEAN_VALUE", "ID",
158
+ "INTEGER_VALUE", "DECIMAL_VALUE", "NUMERIC_VALUE", "STRING_VALUE",
159
+ "PERCENTAGE_VALUE", "ALPHA_NUMERIC", "WS", "NEWLINE", "COMMENT",
160
+ "INDENT", "DEDENT"
157
161
  ];
158
162
  static ruleNames = [
159
163
  "script", "expression", "flow_expressions", "graph_expressions",
@@ -162,9 +166,10 @@ export class CircuitScriptParser extends antlr.Parser {
162
166
  "data_expr_with_assignment", "add_component_expr", "component_select_expr",
163
167
  "pin_select_expr2", "at_component_expr", "to_component_expr", "at_to_multiple_expr",
164
168
  "at_to_multiple_line_expr", "at_to_multiple_line_expr_to_pin", "at_block",
165
- "at_block_expressions", "at_block_pin_expr", "at_block_pin_expression_simple",
166
- "at_block_pin_expression_complex", "assignment_expr", "operator_assignment_expr",
167
- "keyword_assignment_expr", "parameters", "property_set_expr", "double_dot_property_set_expr",
169
+ "at_block_expressions", "at_block_header", "at_block_pin_expr",
170
+ "at_block_pin_expression_simple", "at_block_pin_expression_complex",
171
+ "assignment_expr", "operator_assignment_expr", "keyword_assignment_expr",
172
+ "parameters", "property_set_expr", "double_dot_property_set_expr",
168
173
  "data_expr", "binary_operator", "unary_operator", "value_expr",
169
174
  "function_def_expr", "function_expr", "function_args_expr", "atom_expr",
170
175
  "trailer_expr", "trailer_expr2", "function_call_expr", "net_namespace_expr",
@@ -173,7 +178,7 @@ export class CircuitScriptParser extends antlr.Parser {
173
178
  "nested_properties_inner", "graphic_expr", "property_expr", "property_key_expr",
174
179
  "property_value_expr", "wire_atom_expr", "wire_expr", "array_expr",
175
180
  "point_expr", "import_expr", "frame_expr", "if_expr", "if_inner_expr",
176
- "else_expr", "while_expr", "for_expr",
181
+ "else_expr", "while_expr", "for_expr", "annotation_comment_expr",
177
182
  ];
178
183
  get grammarFileName() { return "CircuitScript.g4"; }
179
184
  get literalNames() { return CircuitScriptParser.literalNames; }
@@ -195,24 +200,24 @@ export class CircuitScriptParser extends antlr.Parser {
195
200
  let alternative;
196
201
  this.enterOuterAlt(localContext, 1);
197
202
  {
198
- this.state = 134;
203
+ this.state = 138;
199
204
  this.errorHandler.sync(this);
200
205
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
201
206
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
202
207
  if (alternative === 1) {
203
208
  {
204
- this.state = 132;
209
+ this.state = 136;
205
210
  this.errorHandler.sync(this);
206
211
  switch (this.tokenStream.LA(1)) {
207
212
  case CircuitScriptParser.Import:
208
213
  {
209
- this.state = 130;
214
+ this.state = 134;
210
215
  this.import_expr();
211
216
  }
212
217
  break;
213
218
  case CircuitScriptParser.NEWLINE:
214
219
  {
215
- this.state = 131;
220
+ this.state = 135;
216
221
  this.match(CircuitScriptParser.NEWLINE);
217
222
  }
218
223
  break;
@@ -221,16 +226,16 @@ export class CircuitScriptParser extends antlr.Parser {
221
226
  }
222
227
  }
223
228
  }
224
- this.state = 136;
229
+ this.state = 140;
225
230
  this.errorHandler.sync(this);
226
231
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 1, this.context);
227
232
  }
228
- this.state = 139;
233
+ this.state = 143;
229
234
  this.errorHandler.sync(this);
230
235
  _la = this.tokenStream.LA(1);
231
236
  do {
232
237
  {
233
- this.state = 139;
238
+ this.state = 143;
234
239
  this.errorHandler.sync(this);
235
240
  switch (this.tokenStream.LA(1)) {
236
241
  case CircuitScriptParser.T__3:
@@ -253,15 +258,16 @@ export class CircuitScriptParser extends antlr.Parser {
253
258
  case CircuitScriptParser.Sheet:
254
259
  case CircuitScriptParser.Addition:
255
260
  case CircuitScriptParser.Divide:
261
+ case CircuitScriptParser.ANNOTATION_START:
256
262
  case CircuitScriptParser.ID:
257
263
  {
258
- this.state = 137;
264
+ this.state = 141;
259
265
  this.expression();
260
266
  }
261
267
  break;
262
268
  case CircuitScriptParser.NEWLINE:
263
269
  {
264
- this.state = 138;
270
+ this.state = 142;
265
271
  this.match(CircuitScriptParser.NEWLINE);
266
272
  }
267
273
  break;
@@ -269,11 +275,11 @@ export class CircuitScriptParser extends antlr.Parser {
269
275
  throw new antlr.NoViableAltException(this);
270
276
  }
271
277
  }
272
- this.state = 141;
278
+ this.state = 145;
273
279
  this.errorHandler.sync(this);
274
280
  _la = this.tokenStream.LA(1);
275
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
276
- this.state = 143;
281
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
282
+ this.state = 147;
277
283
  this.match(CircuitScriptParser.EOF);
278
284
  }
279
285
  }
@@ -295,93 +301,100 @@ export class CircuitScriptParser extends antlr.Parser {
295
301
  let localContext = new ExpressionContext(this.context, this.state);
296
302
  this.enterRule(localContext, 2, CircuitScriptParser.RULE_expression);
297
303
  try {
298
- this.state = 157;
304
+ this.state = 162;
299
305
  this.errorHandler.sync(this);
300
306
  switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context)) {
301
307
  case 1:
302
308
  this.enterOuterAlt(localContext, 1);
303
309
  {
304
- this.state = 145;
310
+ this.state = 149;
305
311
  this.graph_expressions();
306
312
  }
307
313
  break;
308
314
  case 2:
309
315
  this.enterOuterAlt(localContext, 2);
310
316
  {
311
- this.state = 146;
317
+ this.state = 150;
312
318
  this.assignment_expr();
313
319
  }
314
320
  break;
315
321
  case 3:
316
322
  this.enterOuterAlt(localContext, 3);
317
323
  {
318
- this.state = 147;
324
+ this.state = 151;
319
325
  this.operator_assignment_expr();
320
326
  }
321
327
  break;
322
328
  case 4:
323
329
  this.enterOuterAlt(localContext, 4);
324
330
  {
325
- this.state = 148;
331
+ this.state = 152;
326
332
  this.property_set_expr();
327
333
  }
328
334
  break;
329
335
  case 5:
330
336
  this.enterOuterAlt(localContext, 5);
331
337
  {
332
- this.state = 149;
338
+ this.state = 153;
333
339
  this.property_set_expr2();
334
340
  }
335
341
  break;
336
342
  case 6:
337
343
  this.enterOuterAlt(localContext, 6);
338
344
  {
339
- this.state = 150;
345
+ this.state = 154;
340
346
  this.double_dot_property_set_expr();
341
347
  }
342
348
  break;
343
349
  case 7:
344
350
  this.enterOuterAlt(localContext, 7);
345
351
  {
346
- this.state = 151;
352
+ this.state = 155;
347
353
  this.function_def_expr();
348
354
  }
349
355
  break;
350
356
  case 8:
351
357
  this.enterOuterAlt(localContext, 8);
352
358
  {
353
- this.state = 152;
359
+ this.state = 156;
354
360
  this.function_call_expr();
355
361
  }
356
362
  break;
357
363
  case 9:
358
364
  this.enterOuterAlt(localContext, 9);
359
365
  {
360
- this.state = 153;
366
+ this.state = 157;
361
367
  this.import_expr();
362
368
  }
363
369
  break;
364
370
  case 10:
365
371
  this.enterOuterAlt(localContext, 10);
366
372
  {
367
- this.state = 154;
373
+ this.state = 158;
368
374
  this.atom_expr();
369
375
  }
370
376
  break;
371
377
  case 11:
372
378
  this.enterOuterAlt(localContext, 11);
373
379
  {
374
- this.state = 155;
380
+ this.state = 159;
375
381
  this.frame_expr();
376
382
  }
377
383
  break;
378
384
  case 12:
379
385
  this.enterOuterAlt(localContext, 12);
380
386
  {
381
- this.state = 156;
387
+ this.state = 160;
382
388
  this.flow_expressions();
383
389
  }
384
390
  break;
391
+ case 13:
392
+ this.enterOuterAlt(localContext, 13);
393
+ {
394
+ this.state = 161;
395
+ this.annotation_comment_expr();
396
+ }
397
+ break;
385
398
  }
386
399
  }
387
400
  catch (re) {
@@ -402,41 +415,41 @@ export class CircuitScriptParser extends antlr.Parser {
402
415
  let localContext = new Flow_expressionsContext(this.context, this.state);
403
416
  this.enterRule(localContext, 4, CircuitScriptParser.RULE_flow_expressions);
404
417
  try {
405
- this.state = 164;
418
+ this.state = 169;
406
419
  this.errorHandler.sync(this);
407
420
  switch (this.tokenStream.LA(1)) {
408
421
  case CircuitScriptParser.If:
409
422
  this.enterOuterAlt(localContext, 1);
410
423
  {
411
- this.state = 159;
424
+ this.state = 164;
412
425
  this.if_expr();
413
426
  }
414
427
  break;
415
428
  case CircuitScriptParser.While:
416
429
  this.enterOuterAlt(localContext, 2);
417
430
  {
418
- this.state = 160;
431
+ this.state = 165;
419
432
  this.while_expr();
420
433
  }
421
434
  break;
422
435
  case CircuitScriptParser.For:
423
436
  this.enterOuterAlt(localContext, 3);
424
437
  {
425
- this.state = 161;
438
+ this.state = 166;
426
439
  this.for_expr();
427
440
  }
428
441
  break;
429
442
  case CircuitScriptParser.Break:
430
443
  this.enterOuterAlt(localContext, 4);
431
444
  {
432
- this.state = 162;
445
+ this.state = 167;
433
446
  this.match(CircuitScriptParser.Break);
434
447
  }
435
448
  break;
436
449
  case CircuitScriptParser.Continue:
437
450
  this.enterOuterAlt(localContext, 5);
438
451
  {
439
- this.state = 163;
452
+ this.state = 168;
440
453
  this.match(CircuitScriptParser.Continue);
441
454
  }
442
455
  break;
@@ -462,20 +475,20 @@ export class CircuitScriptParser extends antlr.Parser {
462
475
  let localContext = new Graph_expressionsContext(this.context, this.state);
463
476
  this.enterRule(localContext, 6, CircuitScriptParser.RULE_graph_expressions);
464
477
  try {
465
- this.state = 168;
478
+ this.state = 173;
466
479
  this.errorHandler.sync(this);
467
480
  switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context)) {
468
481
  case 1:
469
482
  this.enterOuterAlt(localContext, 1);
470
483
  {
471
- this.state = 166;
484
+ this.state = 171;
472
485
  this.graph_linear_expression();
473
486
  }
474
487
  break;
475
488
  case 2:
476
489
  this.enterOuterAlt(localContext, 2);
477
490
  {
478
- this.state = 167;
491
+ this.state = 172;
479
492
  this.path_block();
480
493
  }
481
494
  break;
@@ -499,48 +512,48 @@ export class CircuitScriptParser extends antlr.Parser {
499
512
  let localContext = new Graph_linear_expressionContext(this.context, this.state);
500
513
  this.enterRule(localContext, 8, CircuitScriptParser.RULE_graph_linear_expression);
501
514
  try {
502
- this.state = 176;
515
+ this.state = 181;
503
516
  this.errorHandler.sync(this);
504
517
  switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context)) {
505
518
  case 1:
506
519
  this.enterOuterAlt(localContext, 1);
507
520
  {
508
- this.state = 170;
521
+ this.state = 175;
509
522
  this.add_component_expr();
510
523
  }
511
524
  break;
512
525
  case 2:
513
526
  this.enterOuterAlt(localContext, 2);
514
527
  {
515
- this.state = 171;
528
+ this.state = 176;
516
529
  this.to_component_expr();
517
530
  }
518
531
  break;
519
532
  case 3:
520
533
  this.enterOuterAlt(localContext, 3);
521
534
  {
522
- this.state = 172;
535
+ this.state = 177;
523
536
  this.at_component_expr();
524
537
  }
525
538
  break;
526
539
  case 4:
527
540
  this.enterOuterAlt(localContext, 4);
528
541
  {
529
- this.state = 173;
542
+ this.state = 178;
530
543
  this.at_block();
531
544
  }
532
545
  break;
533
546
  case 5:
534
547
  this.enterOuterAlt(localContext, 5);
535
548
  {
536
- this.state = 174;
549
+ this.state = 179;
537
550
  this.wire_expr();
538
551
  }
539
552
  break;
540
553
  case 6:
541
554
  this.enterOuterAlt(localContext, 6);
542
555
  {
543
- this.state = 175;
556
+ this.state = 180;
544
557
  this.point_expr();
545
558
  }
546
559
  break;
@@ -567,21 +580,21 @@ export class CircuitScriptParser extends antlr.Parser {
567
580
  try {
568
581
  this.enterOuterAlt(localContext, 1);
569
582
  {
570
- this.state = 178;
583
+ this.state = 183;
571
584
  this.match(CircuitScriptParser.NEWLINE);
572
- this.state = 179;
585
+ this.state = 184;
573
586
  this.match(CircuitScriptParser.INDENT);
574
- this.state = 182;
587
+ this.state = 187;
575
588
  this.errorHandler.sync(this);
576
589
  _la = this.tokenStream.LA(1);
577
590
  do {
578
591
  {
579
- this.state = 182;
592
+ this.state = 187;
580
593
  this.errorHandler.sync(this);
581
594
  switch (this.tokenStream.LA(1)) {
582
595
  case CircuitScriptParser.NEWLINE:
583
596
  {
584
- this.state = 180;
597
+ this.state = 185;
585
598
  this.match(CircuitScriptParser.NEWLINE);
586
599
  }
587
600
  break;
@@ -605,9 +618,10 @@ export class CircuitScriptParser extends antlr.Parser {
605
618
  case CircuitScriptParser.Sheet:
606
619
  case CircuitScriptParser.Addition:
607
620
  case CircuitScriptParser.Divide:
621
+ case CircuitScriptParser.ANNOTATION_START:
608
622
  case CircuitScriptParser.ID:
609
623
  {
610
- this.state = 181;
624
+ this.state = 186;
611
625
  this.expression();
612
626
  }
613
627
  break;
@@ -615,11 +629,11 @@ export class CircuitScriptParser extends antlr.Parser {
615
629
  throw new antlr.NoViableAltException(this);
616
630
  }
617
631
  }
618
- this.state = 184;
632
+ this.state = 189;
619
633
  this.errorHandler.sync(this);
620
634
  _la = this.tokenStream.LA(1);
621
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
622
- this.state = 186;
635
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
636
+ this.state = 191;
623
637
  this.match(CircuitScriptParser.DEDENT);
624
638
  }
625
639
  }
@@ -644,7 +658,7 @@ export class CircuitScriptParser extends antlr.Parser {
644
658
  try {
645
659
  this.enterOuterAlt(localContext, 1);
646
660
  {
647
- this.state = 188;
661
+ this.state = 193;
648
662
  _la = this.tokenStream.LA(1);
649
663
  if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3670528) !== 0))) {
650
664
  this.errorHandler.recoverInline(this);
@@ -653,9 +667,9 @@ export class CircuitScriptParser extends antlr.Parser {
653
667
  this.errorHandler.reportMatch(this);
654
668
  this.consume();
655
669
  }
656
- this.state = 189;
670
+ this.state = 194;
657
671
  this.match(CircuitScriptParser.T__0);
658
- this.state = 190;
672
+ this.state = 195;
659
673
  this.expressions_block();
660
674
  }
661
675
  }
@@ -680,32 +694,32 @@ export class CircuitScriptParser extends antlr.Parser {
680
694
  try {
681
695
  this.enterOuterAlt(localContext, 1);
682
696
  {
683
- this.state = 192;
697
+ this.state = 197;
684
698
  this.atom_expr();
685
- this.state = 193;
699
+ this.state = 198;
686
700
  this.match(CircuitScriptParser.T__0);
687
- this.state = 194;
701
+ this.state = 199;
688
702
  this.match(CircuitScriptParser.NEWLINE);
689
- this.state = 195;
703
+ this.state = 200;
690
704
  this.match(CircuitScriptParser.INDENT);
691
- this.state = 198;
705
+ this.state = 203;
692
706
  this.errorHandler.sync(this);
693
707
  _la = this.tokenStream.LA(1);
694
708
  do {
695
709
  {
696
- this.state = 198;
710
+ this.state = 203;
697
711
  this.errorHandler.sync(this);
698
712
  switch (this.tokenStream.LA(1)) {
699
713
  case CircuitScriptParser.NEWLINE:
700
714
  {
701
- this.state = 196;
715
+ this.state = 201;
702
716
  this.match(CircuitScriptParser.NEWLINE);
703
717
  }
704
718
  break;
705
719
  case CircuitScriptParser.ID:
706
720
  case CircuitScriptParser.INTEGER_VALUE:
707
721
  {
708
- this.state = 197;
722
+ this.state = 202;
709
723
  this.assignment_expr2();
710
724
  }
711
725
  break;
@@ -713,11 +727,11 @@ export class CircuitScriptParser extends antlr.Parser {
713
727
  throw new antlr.NoViableAltException(this);
714
728
  }
715
729
  }
716
- this.state = 200;
730
+ this.state = 205;
717
731
  this.errorHandler.sync(this);
718
732
  _la = this.tokenStream.LA(1);
719
- } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 259) !== 0));
720
- this.state = 202;
733
+ } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 259) !== 0));
734
+ this.state = 207;
721
735
  this.match(CircuitScriptParser.DEDENT);
722
736
  }
723
737
  }
@@ -742,18 +756,18 @@ export class CircuitScriptParser extends antlr.Parser {
742
756
  try {
743
757
  this.enterOuterAlt(localContext, 1);
744
758
  {
745
- this.state = 204;
759
+ this.state = 209;
746
760
  _la = this.tokenStream.LA(1);
747
- if (!(_la === 56 || _la === 57)) {
761
+ if (!(_la === 57 || _la === 58)) {
748
762
  this.errorHandler.recoverInline(this);
749
763
  }
750
764
  else {
751
765
  this.errorHandler.reportMatch(this);
752
766
  this.consume();
753
767
  }
754
- this.state = 205;
768
+ this.state = 210;
755
769
  this.match(CircuitScriptParser.T__0);
756
- this.state = 206;
770
+ this.state = 211;
757
771
  this.value_expr();
758
772
  }
759
773
  }
@@ -777,9 +791,9 @@ export class CircuitScriptParser extends antlr.Parser {
777
791
  try {
778
792
  this.enterOuterAlt(localContext, 1);
779
793
  {
780
- this.state = 208;
794
+ this.state = 213;
781
795
  this.match(CircuitScriptParser.Pin);
782
- this.state = 209;
796
+ this.state = 214;
783
797
  this.data_expr(0);
784
798
  }
785
799
  }
@@ -803,11 +817,11 @@ export class CircuitScriptParser extends antlr.Parser {
803
817
  try {
804
818
  this.enterOuterAlt(localContext, 1);
805
819
  {
806
- this.state = 211;
820
+ this.state = 216;
807
821
  this.match(CircuitScriptParser.ID);
808
- this.state = 212;
822
+ this.state = 217;
809
823
  this.match(CircuitScriptParser.T__0);
810
- this.state = 215;
824
+ this.state = 220;
811
825
  this.errorHandler.sync(this);
812
826
  switch (this.tokenStream.LA(1)) {
813
827
  case CircuitScriptParser.Minus:
@@ -818,13 +832,13 @@ export class CircuitScriptParser extends antlr.Parser {
818
832
  case CircuitScriptParser.STRING_VALUE:
819
833
  case CircuitScriptParser.PERCENTAGE_VALUE:
820
834
  {
821
- this.state = 213;
835
+ this.state = 218;
822
836
  this.value_expr();
823
837
  }
824
838
  break;
825
839
  case CircuitScriptParser.ID:
826
840
  {
827
- this.state = 214;
841
+ this.state = 219;
828
842
  this.match(CircuitScriptParser.ID);
829
843
  }
830
844
  break;
@@ -855,44 +869,44 @@ export class CircuitScriptParser extends antlr.Parser {
855
869
  let alternative;
856
870
  this.enterOuterAlt(localContext, 1);
857
871
  {
858
- this.state = 219;
872
+ this.state = 224;
859
873
  this.errorHandler.sync(this);
860
874
  switch (this.interpreter.adaptivePredict(this.tokenStream, 13, this.context)) {
861
875
  case 1:
862
876
  {
863
- this.state = 217;
877
+ this.state = 222;
864
878
  this.data_expr(0);
865
879
  }
866
880
  break;
867
881
  case 2:
868
882
  {
869
- this.state = 218;
883
+ this.state = 223;
870
884
  this.assignment_expr();
871
885
  }
872
886
  break;
873
887
  }
874
- this.state = 224;
888
+ this.state = 229;
875
889
  this.errorHandler.sync(this);
876
890
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
877
891
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
878
892
  if (alternative === 1) {
879
893
  {
880
894
  {
881
- this.state = 221;
895
+ this.state = 226;
882
896
  this.component_modifier_expr();
883
897
  }
884
898
  }
885
899
  }
886
- this.state = 226;
900
+ this.state = 231;
887
901
  this.errorHandler.sync(this);
888
902
  alternative = this.interpreter.adaptivePredict(this.tokenStream, 14, this.context);
889
903
  }
890
- this.state = 228;
904
+ this.state = 233;
891
905
  this.errorHandler.sync(this);
892
906
  _la = this.tokenStream.LA(1);
893
907
  if (_la === 15) {
894
908
  {
895
- this.state = 227;
909
+ this.state = 232;
896
910
  this.pin_select_expr();
897
911
  }
898
912
  }
@@ -918,9 +932,9 @@ export class CircuitScriptParser extends antlr.Parser {
918
932
  try {
919
933
  this.enterOuterAlt(localContext, 1);
920
934
  {
921
- this.state = 230;
935
+ this.state = 235;
922
936
  this.match(CircuitScriptParser.Add);
923
- this.state = 231;
937
+ this.state = 236;
924
938
  this.data_expr_with_assignment();
925
939
  }
926
940
  }
@@ -942,7 +956,7 @@ export class CircuitScriptParser extends antlr.Parser {
942
956
  let localContext = new Component_select_exprContext(this.context, this.state);
943
957
  this.enterRule(localContext, 26, CircuitScriptParser.RULE_component_select_expr);
944
958
  try {
945
- this.state = 236;
959
+ this.state = 241;
946
960
  this.errorHandler.sync(this);
947
961
  switch (this.tokenStream.LA(1)) {
948
962
  case CircuitScriptParser.T__4:
@@ -961,21 +975,21 @@ export class CircuitScriptParser extends antlr.Parser {
961
975
  case CircuitScriptParser.PERCENTAGE_VALUE:
962
976
  this.enterOuterAlt(localContext, 1);
963
977
  {
964
- this.state = 233;
978
+ this.state = 238;
965
979
  this.data_expr_with_assignment();
966
980
  }
967
981
  break;
968
982
  case CircuitScriptParser.Pin:
969
983
  this.enterOuterAlt(localContext, 2);
970
984
  {
971
- this.state = 234;
985
+ this.state = 239;
972
986
  this.pin_select_expr();
973
987
  }
974
988
  break;
975
989
  case CircuitScriptParser.Point:
976
990
  this.enterOuterAlt(localContext, 3);
977
991
  {
978
- this.state = 235;
992
+ this.state = 240;
979
993
  this.match(CircuitScriptParser.Point);
980
994
  }
981
995
  break;
@@ -1004,9 +1018,9 @@ export class CircuitScriptParser extends antlr.Parser {
1004
1018
  try {
1005
1019
  this.enterOuterAlt(localContext, 1);
1006
1020
  {
1007
- this.state = 238;
1021
+ this.state = 243;
1008
1022
  _la = this.tokenStream.LA(1);
1009
- if (!(_la === 57 || _la === 60)) {
1023
+ if (!(_la === 58 || _la === 61)) {
1010
1024
  this.errorHandler.recoverInline(this);
1011
1025
  }
1012
1026
  else {
@@ -1035,9 +1049,9 @@ export class CircuitScriptParser extends antlr.Parser {
1035
1049
  try {
1036
1050
  this.enterOuterAlt(localContext, 1);
1037
1051
  {
1038
- this.state = 240;
1052
+ this.state = 245;
1039
1053
  this.match(CircuitScriptParser.At);
1040
- this.state = 241;
1054
+ this.state = 246;
1041
1055
  this.component_select_expr();
1042
1056
  }
1043
1057
  }
@@ -1062,24 +1076,24 @@ export class CircuitScriptParser extends antlr.Parser {
1062
1076
  try {
1063
1077
  this.enterOuterAlt(localContext, 1);
1064
1078
  {
1065
- this.state = 243;
1079
+ this.state = 248;
1066
1080
  this.match(CircuitScriptParser.To);
1067
1081
  {
1068
- this.state = 244;
1069
- this.component_select_expr();
1070
1082
  this.state = 249;
1083
+ this.component_select_expr();
1084
+ this.state = 254;
1071
1085
  this.errorHandler.sync(this);
1072
1086
  _la = this.tokenStream.LA(1);
1073
1087
  while (_la === 2) {
1074
1088
  {
1075
1089
  {
1076
- this.state = 245;
1090
+ this.state = 250;
1077
1091
  this.match(CircuitScriptParser.T__1);
1078
- this.state = 246;
1092
+ this.state = 251;
1079
1093
  this.component_select_expr();
1080
1094
  }
1081
1095
  }
1082
- this.state = 251;
1096
+ this.state = 256;
1083
1097
  this.errorHandler.sync(this);
1084
1098
  _la = this.tokenStream.LA(1);
1085
1099
  }
@@ -1107,54 +1121,54 @@ export class CircuitScriptParser extends antlr.Parser {
1107
1121
  try {
1108
1122
  this.enterOuterAlt(localContext, 1);
1109
1123
  {
1110
- this.state = 252;
1124
+ this.state = 257;
1111
1125
  this.match(CircuitScriptParser.At);
1112
- this.state = 253;
1126
+ this.state = 258;
1113
1127
  this.component_select_expr();
1114
- this.state = 254;
1128
+ this.state = 259;
1115
1129
  this.match(CircuitScriptParser.To);
1116
- this.state = 255;
1117
- this.component_select_expr();
1118
1130
  this.state = 260;
1131
+ this.component_select_expr();
1132
+ this.state = 265;
1119
1133
  this.errorHandler.sync(this);
1120
1134
  _la = this.tokenStream.LA(1);
1121
1135
  while (_la === 2) {
1122
1136
  {
1123
1137
  {
1124
- this.state = 256;
1138
+ this.state = 261;
1125
1139
  this.match(CircuitScriptParser.T__1);
1126
- this.state = 257;
1140
+ this.state = 262;
1127
1141
  this.component_select_expr();
1128
1142
  }
1129
1143
  }
1130
- this.state = 262;
1144
+ this.state = 267;
1131
1145
  this.errorHandler.sync(this);
1132
1146
  _la = this.tokenStream.LA(1);
1133
1147
  }
1134
- this.state = 263;
1148
+ this.state = 268;
1135
1149
  this.match(CircuitScriptParser.T__0);
1136
- this.state = 264;
1150
+ this.state = 269;
1137
1151
  this.match(CircuitScriptParser.NEWLINE);
1138
- this.state = 265;
1152
+ this.state = 270;
1139
1153
  this.match(CircuitScriptParser.INDENT);
1140
- this.state = 268;
1154
+ this.state = 273;
1141
1155
  this.errorHandler.sync(this);
1142
1156
  _la = this.tokenStream.LA(1);
1143
1157
  do {
1144
1158
  {
1145
- this.state = 268;
1159
+ this.state = 273;
1146
1160
  this.errorHandler.sync(this);
1147
1161
  switch (this.tokenStream.LA(1)) {
1148
1162
  case CircuitScriptParser.NEWLINE:
1149
1163
  {
1150
- this.state = 266;
1164
+ this.state = 271;
1151
1165
  this.match(CircuitScriptParser.NEWLINE);
1152
1166
  }
1153
1167
  break;
1154
1168
  case CircuitScriptParser.INTEGER_VALUE:
1155
1169
  case CircuitScriptParser.STRING_VALUE:
1156
1170
  {
1157
- this.state = 267;
1171
+ this.state = 272;
1158
1172
  this.at_to_multiple_line_expr();
1159
1173
  }
1160
1174
  break;
@@ -1162,11 +1176,11 @@ export class CircuitScriptParser extends antlr.Parser {
1162
1176
  throw new antlr.NoViableAltException(this);
1163
1177
  }
1164
1178
  }
1165
- this.state = 270;
1179
+ this.state = 275;
1166
1180
  this.errorHandler.sync(this);
1167
1181
  _la = this.tokenStream.LA(1);
1168
- } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 137) !== 0));
1169
- this.state = 272;
1182
+ } while (((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 137) !== 0));
1183
+ this.state = 277;
1170
1184
  this.match(CircuitScriptParser.DEDENT);
1171
1185
  }
1172
1186
  }
@@ -1191,25 +1205,25 @@ export class CircuitScriptParser extends antlr.Parser {
1191
1205
  try {
1192
1206
  this.enterOuterAlt(localContext, 1);
1193
1207
  {
1194
- this.state = 274;
1208
+ this.state = 279;
1195
1209
  this.pin_select_expr2();
1196
- this.state = 275;
1210
+ this.state = 280;
1197
1211
  this.match(CircuitScriptParser.T__0);
1198
- this.state = 276;
1199
- this.at_to_multiple_line_expr_to_pin();
1200
1212
  this.state = 281;
1213
+ this.at_to_multiple_line_expr_to_pin();
1214
+ this.state = 286;
1201
1215
  this.errorHandler.sync(this);
1202
1216
  _la = this.tokenStream.LA(1);
1203
1217
  while (_la === 2) {
1204
1218
  {
1205
1219
  {
1206
- this.state = 277;
1220
+ this.state = 282;
1207
1221
  this.match(CircuitScriptParser.T__1);
1208
- this.state = 278;
1222
+ this.state = 283;
1209
1223
  this.at_to_multiple_line_expr_to_pin();
1210
1224
  }
1211
1225
  }
1212
- this.state = 283;
1226
+ this.state = 288;
1213
1227
  this.errorHandler.sync(this);
1214
1228
  _la = this.tokenStream.LA(1);
1215
1229
  }
@@ -1236,9 +1250,9 @@ export class CircuitScriptParser extends antlr.Parser {
1236
1250
  try {
1237
1251
  this.enterOuterAlt(localContext, 1);
1238
1252
  {
1239
- this.state = 284;
1253
+ this.state = 289;
1240
1254
  _la = this.tokenStream.LA(1);
1241
- if (!(_la === 54 || _la === 57)) {
1255
+ if (!(_la === 55 || _la === 58)) {
1242
1256
  this.errorHandler.recoverInline(this);
1243
1257
  }
1244
1258
  else {
@@ -1268,25 +1282,23 @@ export class CircuitScriptParser extends antlr.Parser {
1268
1282
  try {
1269
1283
  this.enterOuterAlt(localContext, 1);
1270
1284
  {
1271
- this.state = 286;
1272
- this.at_component_expr();
1273
- this.state = 287;
1274
- this.match(CircuitScriptParser.T__0);
1275
- this.state = 288;
1285
+ this.state = 291;
1286
+ this.at_block_header();
1287
+ this.state = 292;
1276
1288
  this.match(CircuitScriptParser.NEWLINE);
1277
- this.state = 289;
1289
+ this.state = 293;
1278
1290
  this.match(CircuitScriptParser.INDENT);
1279
- this.state = 292;
1291
+ this.state = 296;
1280
1292
  this.errorHandler.sync(this);
1281
1293
  _la = this.tokenStream.LA(1);
1282
1294
  do {
1283
1295
  {
1284
- this.state = 292;
1296
+ this.state = 296;
1285
1297
  this.errorHandler.sync(this);
1286
1298
  switch (this.tokenStream.LA(1)) {
1287
1299
  case CircuitScriptParser.NEWLINE:
1288
1300
  {
1289
- this.state = 290;
1301
+ this.state = 294;
1290
1302
  this.match(CircuitScriptParser.NEWLINE);
1291
1303
  }
1292
1304
  break;
@@ -1310,11 +1322,12 @@ export class CircuitScriptParser extends antlr.Parser {
1310
1322
  case CircuitScriptParser.Sheet:
1311
1323
  case CircuitScriptParser.Addition:
1312
1324
  case CircuitScriptParser.Divide:
1325
+ case CircuitScriptParser.ANNOTATION_START:
1313
1326
  case CircuitScriptParser.ID:
1314
1327
  case CircuitScriptParser.INTEGER_VALUE:
1315
1328
  case CircuitScriptParser.STRING_VALUE:
1316
1329
  {
1317
- this.state = 291;
1330
+ this.state = 295;
1318
1331
  this.at_block_expressions();
1319
1332
  }
1320
1333
  break;
@@ -1322,11 +1335,11 @@ export class CircuitScriptParser extends antlr.Parser {
1322
1335
  throw new antlr.NoViableAltException(this);
1323
1336
  }
1324
1337
  }
1325
- this.state = 294;
1338
+ this.state = 298;
1326
1339
  this.errorHandler.sync(this);
1327
1340
  _la = this.tokenStream.LA(1);
1328
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4505605) !== 0));
1329
- this.state = 296;
1341
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 867955761) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 9012229) !== 0));
1342
+ this.state = 300;
1330
1343
  this.match(CircuitScriptParser.DEDENT);
1331
1344
  }
1332
1345
  }
@@ -1348,7 +1361,7 @@ export class CircuitScriptParser extends antlr.Parser {
1348
1361
  let localContext = new At_block_expressionsContext(this.context, this.state);
1349
1362
  this.enterRule(localContext, 42, CircuitScriptParser.RULE_at_block_expressions);
1350
1363
  try {
1351
- this.state = 300;
1364
+ this.state = 304;
1352
1365
  this.errorHandler.sync(this);
1353
1366
  switch (this.tokenStream.LA(1)) {
1354
1367
  case CircuitScriptParser.T__3:
@@ -1371,10 +1384,11 @@ export class CircuitScriptParser extends antlr.Parser {
1371
1384
  case CircuitScriptParser.Sheet:
1372
1385
  case CircuitScriptParser.Addition:
1373
1386
  case CircuitScriptParser.Divide:
1387
+ case CircuitScriptParser.ANNOTATION_START:
1374
1388
  case CircuitScriptParser.ID:
1375
1389
  this.enterOuterAlt(localContext, 1);
1376
1390
  {
1377
- this.state = 298;
1391
+ this.state = 302;
1378
1392
  this.expression();
1379
1393
  }
1380
1394
  break;
@@ -1382,7 +1396,7 @@ export class CircuitScriptParser extends antlr.Parser {
1382
1396
  case CircuitScriptParser.STRING_VALUE:
1383
1397
  this.enterOuterAlt(localContext, 2);
1384
1398
  {
1385
- this.state = 299;
1399
+ this.state = 303;
1386
1400
  this.at_block_pin_expr();
1387
1401
  }
1388
1402
  break;
@@ -1404,17 +1418,58 @@ export class CircuitScriptParser extends antlr.Parser {
1404
1418
  }
1405
1419
  return localContext;
1406
1420
  }
1421
+ at_block_header() {
1422
+ let localContext = new At_block_headerContext(this.context, this.state);
1423
+ this.enterRule(localContext, 44, CircuitScriptParser.RULE_at_block_header);
1424
+ let _la;
1425
+ try {
1426
+ this.enterOuterAlt(localContext, 1);
1427
+ {
1428
+ this.state = 306;
1429
+ this.at_component_expr();
1430
+ this.state = 307;
1431
+ this.match(CircuitScriptParser.T__0);
1432
+ this.state = 311;
1433
+ this.errorHandler.sync(this);
1434
+ _la = this.tokenStream.LA(1);
1435
+ while (_la === 52) {
1436
+ {
1437
+ {
1438
+ this.state = 308;
1439
+ this.annotation_comment_expr();
1440
+ }
1441
+ }
1442
+ this.state = 313;
1443
+ this.errorHandler.sync(this);
1444
+ _la = this.tokenStream.LA(1);
1445
+ }
1446
+ }
1447
+ }
1448
+ catch (re) {
1449
+ if (re instanceof antlr.RecognitionException) {
1450
+ this.errorHandler.reportError(this, re);
1451
+ this.errorHandler.recover(this, re);
1452
+ }
1453
+ else {
1454
+ throw re;
1455
+ }
1456
+ }
1457
+ finally {
1458
+ this.exitRule();
1459
+ }
1460
+ return localContext;
1461
+ }
1407
1462
  at_block_pin_expr() {
1408
1463
  let localContext = new At_block_pin_exprContext(this.context, this.state);
1409
- this.enterRule(localContext, 44, CircuitScriptParser.RULE_at_block_pin_expr);
1464
+ this.enterRule(localContext, 46, CircuitScriptParser.RULE_at_block_pin_expr);
1410
1465
  try {
1411
1466
  this.enterOuterAlt(localContext, 1);
1412
1467
  {
1413
- this.state = 302;
1468
+ this.state = 314;
1414
1469
  this.pin_select_expr2();
1415
- this.state = 303;
1470
+ this.state = 315;
1416
1471
  this.match(CircuitScriptParser.T__0);
1417
- this.state = 306;
1472
+ this.state = 318;
1418
1473
  this.errorHandler.sync(this);
1419
1474
  switch (this.tokenStream.LA(1)) {
1420
1475
  case CircuitScriptParser.T__3:
@@ -1437,16 +1492,17 @@ export class CircuitScriptParser extends antlr.Parser {
1437
1492
  case CircuitScriptParser.Sheet:
1438
1493
  case CircuitScriptParser.Addition:
1439
1494
  case CircuitScriptParser.Divide:
1495
+ case CircuitScriptParser.ANNOTATION_START:
1440
1496
  case CircuitScriptParser.NOT_CONNECTED:
1441
1497
  case CircuitScriptParser.ID:
1442
1498
  {
1443
- this.state = 304;
1499
+ this.state = 316;
1444
1500
  this.at_block_pin_expression_simple();
1445
1501
  }
1446
1502
  break;
1447
1503
  case CircuitScriptParser.NEWLINE:
1448
1504
  {
1449
- this.state = 305;
1505
+ this.state = 317;
1450
1506
  this.at_block_pin_expression_complex();
1451
1507
  }
1452
1508
  break;
@@ -1471,11 +1527,11 @@ export class CircuitScriptParser extends antlr.Parser {
1471
1527
  }
1472
1528
  at_block_pin_expression_simple() {
1473
1529
  let localContext = new At_block_pin_expression_simpleContext(this.context, this.state);
1474
- this.enterRule(localContext, 46, CircuitScriptParser.RULE_at_block_pin_expression_simple);
1530
+ this.enterRule(localContext, 48, CircuitScriptParser.RULE_at_block_pin_expression_simple);
1475
1531
  try {
1476
1532
  this.enterOuterAlt(localContext, 1);
1477
1533
  {
1478
- this.state = 310;
1534
+ this.state = 322;
1479
1535
  this.errorHandler.sync(this);
1480
1536
  switch (this.tokenStream.LA(1)) {
1481
1537
  case CircuitScriptParser.T__3:
@@ -1498,15 +1554,16 @@ export class CircuitScriptParser extends antlr.Parser {
1498
1554
  case CircuitScriptParser.Sheet:
1499
1555
  case CircuitScriptParser.Addition:
1500
1556
  case CircuitScriptParser.Divide:
1557
+ case CircuitScriptParser.ANNOTATION_START:
1501
1558
  case CircuitScriptParser.ID:
1502
1559
  {
1503
- this.state = 308;
1560
+ this.state = 320;
1504
1561
  this.expression();
1505
1562
  }
1506
1563
  break;
1507
1564
  case CircuitScriptParser.NOT_CONNECTED:
1508
1565
  {
1509
- this.state = 309;
1566
+ this.state = 321;
1510
1567
  this.match(CircuitScriptParser.NOT_CONNECTED);
1511
1568
  }
1512
1569
  break;
@@ -1531,11 +1588,11 @@ export class CircuitScriptParser extends antlr.Parser {
1531
1588
  }
1532
1589
  at_block_pin_expression_complex() {
1533
1590
  let localContext = new At_block_pin_expression_complexContext(this.context, this.state);
1534
- this.enterRule(localContext, 48, CircuitScriptParser.RULE_at_block_pin_expression_complex);
1591
+ this.enterRule(localContext, 50, CircuitScriptParser.RULE_at_block_pin_expression_complex);
1535
1592
  try {
1536
1593
  this.enterOuterAlt(localContext, 1);
1537
1594
  {
1538
- this.state = 312;
1595
+ this.state = 324;
1539
1596
  this.expressions_block();
1540
1597
  }
1541
1598
  }
@@ -1555,29 +1612,29 @@ export class CircuitScriptParser extends antlr.Parser {
1555
1612
  }
1556
1613
  assignment_expr() {
1557
1614
  let localContext = new Assignment_exprContext(this.context, this.state);
1558
- this.enterRule(localContext, 50, CircuitScriptParser.RULE_assignment_expr);
1615
+ this.enterRule(localContext, 52, CircuitScriptParser.RULE_assignment_expr);
1559
1616
  try {
1560
1617
  this.enterOuterAlt(localContext, 1);
1561
1618
  {
1562
- this.state = 316;
1619
+ this.state = 328;
1563
1620
  this.errorHandler.sync(this);
1564
- switch (this.interpreter.adaptivePredict(this.tokenStream, 27, this.context)) {
1621
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context)) {
1565
1622
  case 1:
1566
1623
  {
1567
- this.state = 314;
1624
+ this.state = 326;
1568
1625
  this.atom_expr();
1569
1626
  }
1570
1627
  break;
1571
1628
  case 2:
1572
1629
  {
1573
- this.state = 315;
1630
+ this.state = 327;
1574
1631
  this.function_call_expr();
1575
1632
  }
1576
1633
  break;
1577
1634
  }
1578
- this.state = 318;
1635
+ this.state = 330;
1579
1636
  this.match(CircuitScriptParser.T__2);
1580
- this.state = 319;
1637
+ this.state = 331;
1581
1638
  this.data_expr(0);
1582
1639
  }
1583
1640
  }
@@ -1597,14 +1654,14 @@ export class CircuitScriptParser extends antlr.Parser {
1597
1654
  }
1598
1655
  operator_assignment_expr() {
1599
1656
  let localContext = new Operator_assignment_exprContext(this.context, this.state);
1600
- this.enterRule(localContext, 52, CircuitScriptParser.RULE_operator_assignment_expr);
1657
+ this.enterRule(localContext, 54, CircuitScriptParser.RULE_operator_assignment_expr);
1601
1658
  let _la;
1602
1659
  try {
1603
1660
  this.enterOuterAlt(localContext, 1);
1604
1661
  {
1605
- this.state = 321;
1662
+ this.state = 333;
1606
1663
  this.atom_expr();
1607
- this.state = 322;
1664
+ this.state = 334;
1608
1665
  _la = this.tokenStream.LA(1);
1609
1666
  if (!(((((_la - 47)) & ~0x1F) === 0 && ((1 << (_la - 47)) & 31) !== 0))) {
1610
1667
  this.errorHandler.recoverInline(this);
@@ -1613,7 +1670,7 @@ export class CircuitScriptParser extends antlr.Parser {
1613
1670
  this.errorHandler.reportMatch(this);
1614
1671
  this.consume();
1615
1672
  }
1616
- this.state = 323;
1673
+ this.state = 335;
1617
1674
  this.data_expr(0);
1618
1675
  }
1619
1676
  }
@@ -1633,15 +1690,15 @@ export class CircuitScriptParser extends antlr.Parser {
1633
1690
  }
1634
1691
  keyword_assignment_expr() {
1635
1692
  let localContext = new Keyword_assignment_exprContext(this.context, this.state);
1636
- this.enterRule(localContext, 54, CircuitScriptParser.RULE_keyword_assignment_expr);
1693
+ this.enterRule(localContext, 56, CircuitScriptParser.RULE_keyword_assignment_expr);
1637
1694
  try {
1638
1695
  this.enterOuterAlt(localContext, 1);
1639
1696
  {
1640
- this.state = 325;
1697
+ this.state = 337;
1641
1698
  this.match(CircuitScriptParser.ID);
1642
- this.state = 326;
1699
+ this.state = 338;
1643
1700
  this.match(CircuitScriptParser.T__2);
1644
- this.state = 327;
1701
+ this.state = 339;
1645
1702
  this.data_expr(0);
1646
1703
  }
1647
1704
  }
@@ -1661,50 +1718,50 @@ export class CircuitScriptParser extends antlr.Parser {
1661
1718
  }
1662
1719
  parameters() {
1663
1720
  let localContext = new ParametersContext(this.context, this.state);
1664
- this.enterRule(localContext, 56, CircuitScriptParser.RULE_parameters);
1721
+ this.enterRule(localContext, 58, CircuitScriptParser.RULE_parameters);
1665
1722
  let _la;
1666
1723
  try {
1667
1724
  let alternative;
1668
- this.state = 352;
1725
+ this.state = 364;
1669
1726
  this.errorHandler.sync(this);
1670
- switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context)) {
1727
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context)) {
1671
1728
  case 1:
1672
1729
  this.enterOuterAlt(localContext, 1);
1673
1730
  {
1674
1731
  {
1675
- this.state = 329;
1732
+ this.state = 341;
1676
1733
  this.data_expr(0);
1677
- this.state = 334;
1734
+ this.state = 346;
1678
1735
  this.errorHandler.sync(this);
1679
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 28, this.context);
1736
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1680
1737
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1681
1738
  if (alternative === 1) {
1682
1739
  {
1683
1740
  {
1684
- this.state = 330;
1741
+ this.state = 342;
1685
1742
  this.match(CircuitScriptParser.T__1);
1686
- this.state = 331;
1743
+ this.state = 343;
1687
1744
  this.data_expr(0);
1688
1745
  }
1689
1746
  }
1690
1747
  }
1691
- this.state = 336;
1748
+ this.state = 348;
1692
1749
  this.errorHandler.sync(this);
1693
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 28, this.context);
1750
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 29, this.context);
1694
1751
  }
1695
- this.state = 341;
1752
+ this.state = 353;
1696
1753
  this.errorHandler.sync(this);
1697
1754
  _la = this.tokenStream.LA(1);
1698
1755
  while (_la === 2) {
1699
1756
  {
1700
1757
  {
1701
- this.state = 337;
1758
+ this.state = 349;
1702
1759
  this.match(CircuitScriptParser.T__1);
1703
- this.state = 338;
1760
+ this.state = 350;
1704
1761
  this.keyword_assignment_expr();
1705
1762
  }
1706
1763
  }
1707
- this.state = 343;
1764
+ this.state = 355;
1708
1765
  this.errorHandler.sync(this);
1709
1766
  _la = this.tokenStream.LA(1);
1710
1767
  }
@@ -1715,21 +1772,21 @@ export class CircuitScriptParser extends antlr.Parser {
1715
1772
  this.enterOuterAlt(localContext, 2);
1716
1773
  {
1717
1774
  {
1718
- this.state = 344;
1775
+ this.state = 356;
1719
1776
  this.keyword_assignment_expr();
1720
- this.state = 349;
1777
+ this.state = 361;
1721
1778
  this.errorHandler.sync(this);
1722
1779
  _la = this.tokenStream.LA(1);
1723
1780
  while (_la === 2) {
1724
1781
  {
1725
1782
  {
1726
- this.state = 345;
1783
+ this.state = 357;
1727
1784
  this.match(CircuitScriptParser.T__1);
1728
- this.state = 346;
1785
+ this.state = 358;
1729
1786
  this.keyword_assignment_expr();
1730
1787
  }
1731
1788
  }
1732
- this.state = 351;
1789
+ this.state = 363;
1733
1790
  this.errorHandler.sync(this);
1734
1791
  _la = this.tokenStream.LA(1);
1735
1792
  }
@@ -1754,15 +1811,15 @@ export class CircuitScriptParser extends antlr.Parser {
1754
1811
  }
1755
1812
  property_set_expr() {
1756
1813
  let localContext = new Property_set_exprContext(this.context, this.state);
1757
- this.enterRule(localContext, 58, CircuitScriptParser.RULE_property_set_expr);
1814
+ this.enterRule(localContext, 60, CircuitScriptParser.RULE_property_set_expr);
1758
1815
  try {
1759
1816
  this.enterOuterAlt(localContext, 1);
1760
1817
  {
1761
- this.state = 354;
1818
+ this.state = 366;
1762
1819
  this.atom_expr();
1763
- this.state = 355;
1820
+ this.state = 367;
1764
1821
  this.match(CircuitScriptParser.T__2);
1765
- this.state = 356;
1822
+ this.state = 368;
1766
1823
  this.data_expr(0);
1767
1824
  }
1768
1825
  }
@@ -1782,17 +1839,17 @@ export class CircuitScriptParser extends antlr.Parser {
1782
1839
  }
1783
1840
  double_dot_property_set_expr() {
1784
1841
  let localContext = new Double_dot_property_set_exprContext(this.context, this.state);
1785
- this.enterRule(localContext, 60, CircuitScriptParser.RULE_double_dot_property_set_expr);
1842
+ this.enterRule(localContext, 62, CircuitScriptParser.RULE_double_dot_property_set_expr);
1786
1843
  try {
1787
1844
  this.enterOuterAlt(localContext, 1);
1788
1845
  {
1789
- this.state = 358;
1846
+ this.state = 370;
1790
1847
  this.match(CircuitScriptParser.T__3);
1791
- this.state = 359;
1848
+ this.state = 371;
1792
1849
  this.match(CircuitScriptParser.ID);
1793
- this.state = 360;
1850
+ this.state = 372;
1794
1851
  this.match(CircuitScriptParser.T__2);
1795
- this.state = 361;
1852
+ this.state = 373;
1796
1853
  this.data_expr(0);
1797
1854
  }
1798
1855
  }
@@ -1818,26 +1875,26 @@ export class CircuitScriptParser extends antlr.Parser {
1818
1875
  let parentState = this.state;
1819
1876
  let localContext = new Data_exprContext(this.context, parentState);
1820
1877
  let previousContext = localContext;
1821
- let _startState = 62;
1822
- this.enterRecursionRule(localContext, 62, CircuitScriptParser.RULE_data_expr, _p);
1878
+ let _startState = 64;
1879
+ this.enterRecursionRule(localContext, 64, CircuitScriptParser.RULE_data_expr, _p);
1823
1880
  let _la;
1824
1881
  try {
1825
1882
  let alternative;
1826
1883
  this.enterOuterAlt(localContext, 1);
1827
1884
  {
1828
- this.state = 380;
1885
+ this.state = 392;
1829
1886
  this.errorHandler.sync(this);
1830
- switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context)) {
1887
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context)) {
1831
1888
  case 1:
1832
1889
  {
1833
1890
  localContext = new RoundedBracketsExprContext(localContext);
1834
1891
  this.context = localContext;
1835
1892
  previousContext = localContext;
1836
- this.state = 364;
1893
+ this.state = 376;
1837
1894
  this.match(CircuitScriptParser.OPEN_PAREN);
1838
- this.state = 365;
1895
+ this.state = 377;
1839
1896
  this.data_expr(0);
1840
- this.state = 366;
1897
+ this.state = 378;
1841
1898
  this.match(CircuitScriptParser.CLOSE_PAREN);
1842
1899
  }
1843
1900
  break;
@@ -1846,7 +1903,7 @@ export class CircuitScriptParser extends antlr.Parser {
1846
1903
  localContext = new ValueAtomExprContext(localContext);
1847
1904
  this.context = localContext;
1848
1905
  previousContext = localContext;
1849
- this.state = 370;
1906
+ this.state = 382;
1850
1907
  this.errorHandler.sync(this);
1851
1908
  switch (this.tokenStream.LA(1)) {
1852
1909
  case CircuitScriptParser.Minus:
@@ -1857,13 +1914,13 @@ export class CircuitScriptParser extends antlr.Parser {
1857
1914
  case CircuitScriptParser.STRING_VALUE:
1858
1915
  case CircuitScriptParser.PERCENTAGE_VALUE:
1859
1916
  {
1860
- this.state = 368;
1917
+ this.state = 380;
1861
1918
  this.value_expr();
1862
1919
  }
1863
1920
  break;
1864
1921
  case CircuitScriptParser.ID:
1865
1922
  {
1866
- this.state = 369;
1923
+ this.state = 381;
1867
1924
  this.atom_expr();
1868
1925
  }
1869
1926
  break;
@@ -1877,9 +1934,9 @@ export class CircuitScriptParser extends antlr.Parser {
1877
1934
  localContext = new UnaryOperatorExprContext(localContext);
1878
1935
  this.context = localContext;
1879
1936
  previousContext = localContext;
1880
- this.state = 372;
1937
+ this.state = 384;
1881
1938
  this.unary_operator();
1882
- this.state = 373;
1939
+ this.state = 385;
1883
1940
  this.data_expr(11);
1884
1941
  }
1885
1942
  break;
@@ -1888,7 +1945,7 @@ export class CircuitScriptParser extends antlr.Parser {
1888
1945
  localContext = new DataExprContext(localContext);
1889
1946
  this.context = localContext;
1890
1947
  previousContext = localContext;
1891
- this.state = 375;
1948
+ this.state = 387;
1892
1949
  this.create_component_expr();
1893
1950
  }
1894
1951
  break;
@@ -1897,7 +1954,7 @@ export class CircuitScriptParser extends antlr.Parser {
1897
1954
  localContext = new DataExprContext(localContext);
1898
1955
  this.context = localContext;
1899
1956
  previousContext = localContext;
1900
- this.state = 376;
1957
+ this.state = 388;
1901
1958
  this.create_graphic_expr();
1902
1959
  }
1903
1960
  break;
@@ -1906,7 +1963,7 @@ export class CircuitScriptParser extends antlr.Parser {
1906
1963
  localContext = new DataExprContext(localContext);
1907
1964
  this.context = localContext;
1908
1965
  previousContext = localContext;
1909
- this.state = 377;
1966
+ this.state = 389;
1910
1967
  this.create_module_expr();
1911
1968
  }
1912
1969
  break;
@@ -1915,7 +1972,7 @@ export class CircuitScriptParser extends antlr.Parser {
1915
1972
  localContext = new FunctionCallExprContext(localContext);
1916
1973
  this.context = localContext;
1917
1974
  previousContext = localContext;
1918
- this.state = 378;
1975
+ this.state = 390;
1919
1976
  this.function_call_expr();
1920
1977
  }
1921
1978
  break;
@@ -1924,15 +1981,15 @@ export class CircuitScriptParser extends antlr.Parser {
1924
1981
  localContext = new ArrayExprContext(localContext);
1925
1982
  this.context = localContext;
1926
1983
  previousContext = localContext;
1927
- this.state = 379;
1984
+ this.state = 391;
1928
1985
  this.array_expr();
1929
1986
  }
1930
1987
  break;
1931
1988
  }
1932
1989
  this.context.stop = this.tokenStream.LT(-1);
1933
- this.state = 402;
1990
+ this.state = 414;
1934
1991
  this.errorHandler.sync(this);
1935
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 35, this.context);
1992
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
1936
1993
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
1937
1994
  if (alternative === 1) {
1938
1995
  if (this.parseListeners != null) {
@@ -1940,18 +1997,18 @@ export class CircuitScriptParser extends antlr.Parser {
1940
1997
  }
1941
1998
  previousContext = localContext;
1942
1999
  {
1943
- this.state = 400;
2000
+ this.state = 412;
1944
2001
  this.errorHandler.sync(this);
1945
- switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context)) {
2002
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 35, this.context)) {
1946
2003
  case 1:
1947
2004
  {
1948
2005
  localContext = new MultiplyExprContext(new Data_exprContext(parentContext, parentState));
1949
2006
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1950
- this.state = 382;
2007
+ this.state = 394;
1951
2008
  if (!(this.precpred(this.context, 10))) {
1952
2009
  throw this.createFailedPredicateException("this.precpred(this.context, 10)");
1953
2010
  }
1954
- this.state = 383;
2011
+ this.state = 395;
1955
2012
  _la = this.tokenStream.LA(1);
1956
2013
  if (!(((((_la - 44)) & ~0x1F) === 0 && ((1 << (_la - 44)) & 7) !== 0))) {
1957
2014
  this.errorHandler.recoverInline(this);
@@ -1960,7 +2017,7 @@ export class CircuitScriptParser extends antlr.Parser {
1960
2017
  this.errorHandler.reportMatch(this);
1961
2018
  this.consume();
1962
2019
  }
1963
- this.state = 384;
2020
+ this.state = 396;
1964
2021
  this.data_expr(11);
1965
2022
  }
1966
2023
  break;
@@ -1968,11 +2025,11 @@ export class CircuitScriptParser extends antlr.Parser {
1968
2025
  {
1969
2026
  localContext = new AdditionExprContext(new Data_exprContext(parentContext, parentState));
1970
2027
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1971
- this.state = 385;
2028
+ this.state = 397;
1972
2029
  if (!(this.precpred(this.context, 9))) {
1973
2030
  throw this.createFailedPredicateException("this.precpred(this.context, 9)");
1974
2031
  }
1975
- this.state = 386;
2032
+ this.state = 398;
1976
2033
  _la = this.tokenStream.LA(1);
1977
2034
  if (!(_la === 42 || _la === 43)) {
1978
2035
  this.errorHandler.recoverInline(this);
@@ -1981,7 +2038,7 @@ export class CircuitScriptParser extends antlr.Parser {
1981
2038
  this.errorHandler.reportMatch(this);
1982
2039
  this.consume();
1983
2040
  }
1984
- this.state = 387;
2041
+ this.state = 399;
1985
2042
  this.data_expr(10);
1986
2043
  }
1987
2044
  break;
@@ -1989,13 +2046,13 @@ export class CircuitScriptParser extends antlr.Parser {
1989
2046
  {
1990
2047
  localContext = new BinaryOperatorExprContext(new Data_exprContext(parentContext, parentState));
1991
2048
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
1992
- this.state = 388;
2049
+ this.state = 400;
1993
2050
  if (!(this.precpred(this.context, 8))) {
1994
2051
  throw this.createFailedPredicateException("this.precpred(this.context, 8)");
1995
2052
  }
1996
- this.state = 389;
2053
+ this.state = 401;
1997
2054
  this.binary_operator();
1998
- this.state = 390;
2055
+ this.state = 402;
1999
2056
  this.data_expr(9);
2000
2057
  }
2001
2058
  break;
@@ -2003,11 +2060,11 @@ export class CircuitScriptParser extends antlr.Parser {
2003
2060
  {
2004
2061
  localContext = new LogicalOperatorExprContext(new Data_exprContext(parentContext, parentState));
2005
2062
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
2006
- this.state = 392;
2063
+ this.state = 404;
2007
2064
  if (!(this.precpred(this.context, 7))) {
2008
2065
  throw this.createFailedPredicateException("this.precpred(this.context, 7)");
2009
2066
  }
2010
- this.state = 393;
2067
+ this.state = 405;
2011
2068
  _la = this.tokenStream.LA(1);
2012
2069
  if (!(_la === 40 || _la === 41)) {
2013
2070
  this.errorHandler.recoverInline(this);
@@ -2016,7 +2073,7 @@ export class CircuitScriptParser extends antlr.Parser {
2016
2073
  this.errorHandler.reportMatch(this);
2017
2074
  this.consume();
2018
2075
  }
2019
- this.state = 394;
2076
+ this.state = 406;
2020
2077
  this.data_expr(8);
2021
2078
  }
2022
2079
  break;
@@ -2024,24 +2081,24 @@ export class CircuitScriptParser extends antlr.Parser {
2024
2081
  {
2025
2082
  localContext = new ArrayIndexExprContext(new Data_exprContext(parentContext, parentState));
2026
2083
  this.pushNewRecursionContext(localContext, _startState, CircuitScriptParser.RULE_data_expr);
2027
- this.state = 395;
2084
+ this.state = 407;
2028
2085
  if (!(this.precpred(this.context, 1))) {
2029
2086
  throw this.createFailedPredicateException("this.precpred(this.context, 1)");
2030
2087
  }
2031
- this.state = 396;
2088
+ this.state = 408;
2032
2089
  this.match(CircuitScriptParser.T__4);
2033
- this.state = 397;
2090
+ this.state = 409;
2034
2091
  this.data_expr(0);
2035
- this.state = 398;
2092
+ this.state = 410;
2036
2093
  this.match(CircuitScriptParser.T__5);
2037
2094
  }
2038
2095
  break;
2039
2096
  }
2040
2097
  }
2041
2098
  }
2042
- this.state = 404;
2099
+ this.state = 416;
2043
2100
  this.errorHandler.sync(this);
2044
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 35, this.context);
2101
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 36, this.context);
2045
2102
  }
2046
2103
  }
2047
2104
  }
@@ -2061,12 +2118,12 @@ export class CircuitScriptParser extends antlr.Parser {
2061
2118
  }
2062
2119
  binary_operator() {
2063
2120
  let localContext = new Binary_operatorContext(this.context, this.state);
2064
- this.enterRule(localContext, 64, CircuitScriptParser.RULE_binary_operator);
2121
+ this.enterRule(localContext, 66, CircuitScriptParser.RULE_binary_operator);
2065
2122
  let _la;
2066
2123
  try {
2067
2124
  this.enterOuterAlt(localContext, 1);
2068
2125
  {
2069
- this.state = 405;
2126
+ this.state = 417;
2070
2127
  _la = this.tokenStream.LA(1);
2071
2128
  if (!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 63) !== 0))) {
2072
2129
  this.errorHandler.recoverInline(this);
@@ -2093,12 +2150,12 @@ export class CircuitScriptParser extends antlr.Parser {
2093
2150
  }
2094
2151
  unary_operator() {
2095
2152
  let localContext = new Unary_operatorContext(this.context, this.state);
2096
- this.enterRule(localContext, 66, CircuitScriptParser.RULE_unary_operator);
2153
+ this.enterRule(localContext, 68, CircuitScriptParser.RULE_unary_operator);
2097
2154
  let _la;
2098
2155
  try {
2099
2156
  this.enterOuterAlt(localContext, 1);
2100
2157
  {
2101
- this.state = 407;
2158
+ this.state = 419;
2102
2159
  _la = this.tokenStream.LA(1);
2103
2160
  if (!(_la === 31 || _la === 43)) {
2104
2161
  this.errorHandler.recoverInline(this);
@@ -2125,24 +2182,24 @@ export class CircuitScriptParser extends antlr.Parser {
2125
2182
  }
2126
2183
  value_expr() {
2127
2184
  let localContext = new Value_exprContext(this.context, this.state);
2128
- this.enterRule(localContext, 68, CircuitScriptParser.RULE_value_expr);
2185
+ this.enterRule(localContext, 70, CircuitScriptParser.RULE_value_expr);
2129
2186
  let _la;
2130
2187
  try {
2131
2188
  this.enterOuterAlt(localContext, 1);
2132
2189
  {
2133
2190
  {
2134
- this.state = 410;
2191
+ this.state = 422;
2135
2192
  this.errorHandler.sync(this);
2136
2193
  _la = this.tokenStream.LA(1);
2137
2194
  if (_la === 43) {
2138
2195
  {
2139
- this.state = 409;
2196
+ this.state = 421;
2140
2197
  this.match(CircuitScriptParser.Minus);
2141
2198
  }
2142
2199
  }
2143
- this.state = 412;
2200
+ this.state = 424;
2144
2201
  _la = this.tokenStream.LA(1);
2145
- if (!(((((_la - 55)) & ~0x1F) === 0 && ((1 << (_la - 55)) & 125) !== 0))) {
2202
+ if (!(((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 125) !== 0))) {
2146
2203
  this.errorHandler.recoverInline(this);
2147
2204
  }
2148
2205
  else {
@@ -2168,45 +2225,45 @@ export class CircuitScriptParser extends antlr.Parser {
2168
2225
  }
2169
2226
  function_def_expr() {
2170
2227
  let localContext = new Function_def_exprContext(this.context, this.state);
2171
- this.enterRule(localContext, 70, CircuitScriptParser.RULE_function_def_expr);
2228
+ this.enterRule(localContext, 72, CircuitScriptParser.RULE_function_def_expr);
2172
2229
  let _la;
2173
2230
  try {
2174
2231
  this.enterOuterAlt(localContext, 1);
2175
2232
  {
2176
- this.state = 414;
2233
+ this.state = 426;
2177
2234
  this.match(CircuitScriptParser.Define);
2178
- this.state = 415;
2235
+ this.state = 427;
2179
2236
  this.match(CircuitScriptParser.ID);
2180
- this.state = 416;
2237
+ this.state = 428;
2181
2238
  this.match(CircuitScriptParser.OPEN_PAREN);
2182
- this.state = 418;
2239
+ this.state = 430;
2183
2240
  this.errorHandler.sync(this);
2184
2241
  _la = this.tokenStream.LA(1);
2185
- if (_la === 56) {
2242
+ if (_la === 57) {
2186
2243
  {
2187
- this.state = 417;
2244
+ this.state = 429;
2188
2245
  this.function_args_expr();
2189
2246
  }
2190
2247
  }
2191
- this.state = 420;
2248
+ this.state = 432;
2192
2249
  this.match(CircuitScriptParser.CLOSE_PAREN);
2193
- this.state = 421;
2250
+ this.state = 433;
2194
2251
  this.match(CircuitScriptParser.T__0);
2195
- this.state = 422;
2252
+ this.state = 434;
2196
2253
  this.match(CircuitScriptParser.NEWLINE);
2197
- this.state = 423;
2254
+ this.state = 435;
2198
2255
  this.match(CircuitScriptParser.INDENT);
2199
- this.state = 426;
2256
+ this.state = 438;
2200
2257
  this.errorHandler.sync(this);
2201
2258
  _la = this.tokenStream.LA(1);
2202
2259
  do {
2203
2260
  {
2204
- this.state = 426;
2261
+ this.state = 438;
2205
2262
  this.errorHandler.sync(this);
2206
2263
  switch (this.tokenStream.LA(1)) {
2207
2264
  case CircuitScriptParser.NEWLINE:
2208
2265
  {
2209
- this.state = 424;
2266
+ this.state = 436;
2210
2267
  this.match(CircuitScriptParser.NEWLINE);
2211
2268
  }
2212
2269
  break;
@@ -2231,9 +2288,10 @@ export class CircuitScriptParser extends antlr.Parser {
2231
2288
  case CircuitScriptParser.Sheet:
2232
2289
  case CircuitScriptParser.Addition:
2233
2290
  case CircuitScriptParser.Divide:
2291
+ case CircuitScriptParser.ANNOTATION_START:
2234
2292
  case CircuitScriptParser.ID:
2235
2293
  {
2236
- this.state = 425;
2294
+ this.state = 437;
2237
2295
  this.function_expr();
2238
2296
  }
2239
2297
  break;
@@ -2241,11 +2299,11 @@ export class CircuitScriptParser extends antlr.Parser {
2241
2299
  throw new antlr.NoViableAltException(this);
2242
2300
  }
2243
2301
  }
2244
- this.state = 428;
2302
+ this.state = 440;
2245
2303
  this.errorHandler.sync(this);
2246
2304
  _la = this.tokenStream.LA(1);
2247
- } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 868217905) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 4210693) !== 0));
2248
- this.state = 430;
2305
+ } while (((((_la - 4)) & ~0x1F) === 0 && ((1 << (_la - 4)) & 868217905) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 8422405) !== 0));
2306
+ this.state = 442;
2249
2307
  this.match(CircuitScriptParser.DEDENT);
2250
2308
  }
2251
2309
  }
@@ -2265,9 +2323,9 @@ export class CircuitScriptParser extends antlr.Parser {
2265
2323
  }
2266
2324
  function_expr() {
2267
2325
  let localContext = new Function_exprContext(this.context, this.state);
2268
- this.enterRule(localContext, 72, CircuitScriptParser.RULE_function_expr);
2326
+ this.enterRule(localContext, 74, CircuitScriptParser.RULE_function_expr);
2269
2327
  try {
2270
- this.state = 434;
2328
+ this.state = 446;
2271
2329
  this.errorHandler.sync(this);
2272
2330
  switch (this.tokenStream.LA(1)) {
2273
2331
  case CircuitScriptParser.T__3:
@@ -2290,17 +2348,18 @@ export class CircuitScriptParser extends antlr.Parser {
2290
2348
  case CircuitScriptParser.Sheet:
2291
2349
  case CircuitScriptParser.Addition:
2292
2350
  case CircuitScriptParser.Divide:
2351
+ case CircuitScriptParser.ANNOTATION_START:
2293
2352
  case CircuitScriptParser.ID:
2294
2353
  this.enterOuterAlt(localContext, 1);
2295
2354
  {
2296
- this.state = 432;
2355
+ this.state = 444;
2297
2356
  this.expression();
2298
2357
  }
2299
2358
  break;
2300
2359
  case CircuitScriptParser.Return:
2301
2360
  this.enterOuterAlt(localContext, 2);
2302
2361
  {
2303
- this.state = 433;
2362
+ this.state = 445;
2304
2363
  this.function_return_expr();
2305
2364
  }
2306
2365
  break;
@@ -2324,53 +2383,53 @@ export class CircuitScriptParser extends antlr.Parser {
2324
2383
  }
2325
2384
  function_args_expr() {
2326
2385
  let localContext = new Function_args_exprContext(this.context, this.state);
2327
- this.enterRule(localContext, 74, CircuitScriptParser.RULE_function_args_expr);
2386
+ this.enterRule(localContext, 76, CircuitScriptParser.RULE_function_args_expr);
2328
2387
  let _la;
2329
2388
  try {
2330
2389
  let alternative;
2331
- this.state = 465;
2390
+ this.state = 477;
2332
2391
  this.errorHandler.sync(this);
2333
- switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context)) {
2392
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 45, this.context)) {
2334
2393
  case 1:
2335
2394
  this.enterOuterAlt(localContext, 1);
2336
2395
  {
2337
- this.state = 436;
2396
+ this.state = 448;
2338
2397
  this.match(CircuitScriptParser.ID);
2339
- this.state = 441;
2398
+ this.state = 453;
2340
2399
  this.errorHandler.sync(this);
2341
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2400
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2342
2401
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2343
2402
  if (alternative === 1) {
2344
2403
  {
2345
2404
  {
2346
- this.state = 437;
2405
+ this.state = 449;
2347
2406
  this.match(CircuitScriptParser.T__1);
2348
- this.state = 438;
2407
+ this.state = 450;
2349
2408
  this.match(CircuitScriptParser.ID);
2350
2409
  }
2351
2410
  }
2352
2411
  }
2353
- this.state = 443;
2412
+ this.state = 455;
2354
2413
  this.errorHandler.sync(this);
2355
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 41, this.context);
2414
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 42, this.context);
2356
2415
  }
2357
- this.state = 450;
2416
+ this.state = 462;
2358
2417
  this.errorHandler.sync(this);
2359
2418
  _la = this.tokenStream.LA(1);
2360
2419
  while (_la === 2) {
2361
2420
  {
2362
2421
  {
2363
- this.state = 444;
2422
+ this.state = 456;
2364
2423
  this.match(CircuitScriptParser.T__1);
2365
- this.state = 445;
2424
+ this.state = 457;
2366
2425
  this.match(CircuitScriptParser.ID);
2367
- this.state = 446;
2426
+ this.state = 458;
2368
2427
  this.match(CircuitScriptParser.T__2);
2369
- this.state = 447;
2428
+ this.state = 459;
2370
2429
  this.value_expr();
2371
2430
  }
2372
2431
  }
2373
- this.state = 452;
2432
+ this.state = 464;
2374
2433
  this.errorHandler.sync(this);
2375
2434
  _la = this.tokenStream.LA(1);
2376
2435
  }
@@ -2379,29 +2438,29 @@ export class CircuitScriptParser extends antlr.Parser {
2379
2438
  case 2:
2380
2439
  this.enterOuterAlt(localContext, 2);
2381
2440
  {
2382
- this.state = 453;
2441
+ this.state = 465;
2383
2442
  this.match(CircuitScriptParser.ID);
2384
- this.state = 454;
2443
+ this.state = 466;
2385
2444
  this.match(CircuitScriptParser.T__2);
2386
- this.state = 455;
2445
+ this.state = 467;
2387
2446
  this.value_expr();
2388
- this.state = 462;
2447
+ this.state = 474;
2389
2448
  this.errorHandler.sync(this);
2390
2449
  _la = this.tokenStream.LA(1);
2391
2450
  while (_la === 2) {
2392
2451
  {
2393
2452
  {
2394
- this.state = 456;
2453
+ this.state = 468;
2395
2454
  this.match(CircuitScriptParser.T__1);
2396
- this.state = 457;
2455
+ this.state = 469;
2397
2456
  this.match(CircuitScriptParser.ID);
2398
- this.state = 458;
2457
+ this.state = 470;
2399
2458
  this.match(CircuitScriptParser.T__2);
2400
- this.state = 459;
2459
+ this.state = 471;
2401
2460
  this.value_expr();
2402
2461
  }
2403
2462
  }
2404
- this.state = 464;
2463
+ this.state = 476;
2405
2464
  this.errorHandler.sync(this);
2406
2465
  _la = this.tokenStream.LA(1);
2407
2466
  }
@@ -2425,28 +2484,28 @@ export class CircuitScriptParser extends antlr.Parser {
2425
2484
  }
2426
2485
  atom_expr() {
2427
2486
  let localContext = new Atom_exprContext(this.context, this.state);
2428
- this.enterRule(localContext, 76, CircuitScriptParser.RULE_atom_expr);
2487
+ this.enterRule(localContext, 78, CircuitScriptParser.RULE_atom_expr);
2429
2488
  try {
2430
2489
  let alternative;
2431
2490
  this.enterOuterAlt(localContext, 1);
2432
2491
  {
2433
- this.state = 467;
2492
+ this.state = 479;
2434
2493
  this.match(CircuitScriptParser.ID);
2435
- this.state = 471;
2494
+ this.state = 483;
2436
2495
  this.errorHandler.sync(this);
2437
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2496
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2438
2497
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
2439
2498
  if (alternative === 1) {
2440
2499
  {
2441
2500
  {
2442
- this.state = 468;
2501
+ this.state = 480;
2443
2502
  this.trailer_expr2();
2444
2503
  }
2445
2504
  }
2446
2505
  }
2447
- this.state = 473;
2506
+ this.state = 485;
2448
2507
  this.errorHandler.sync(this);
2449
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 45, this.context);
2508
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 46, this.context);
2450
2509
  }
2451
2510
  }
2452
2511
  }
@@ -2466,27 +2525,27 @@ export class CircuitScriptParser extends antlr.Parser {
2466
2525
  }
2467
2526
  trailer_expr() {
2468
2527
  let localContext = new Trailer_exprContext(this.context, this.state);
2469
- this.enterRule(localContext, 78, CircuitScriptParser.RULE_trailer_expr);
2528
+ this.enterRule(localContext, 80, CircuitScriptParser.RULE_trailer_expr);
2470
2529
  let _la;
2471
2530
  try {
2472
- this.state = 480;
2531
+ this.state = 492;
2473
2532
  this.errorHandler.sync(this);
2474
2533
  switch (this.tokenStream.LA(1)) {
2475
2534
  case CircuitScriptParser.OPEN_PAREN:
2476
2535
  this.enterOuterAlt(localContext, 1);
2477
2536
  {
2478
- this.state = 474;
2537
+ this.state = 486;
2479
2538
  this.match(CircuitScriptParser.OPEN_PAREN);
2480
- this.state = 476;
2539
+ this.state = 488;
2481
2540
  this.errorHandler.sync(this);
2482
2541
  _la = this.tokenStream.LA(1);
2483
- if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 1041415) !== 0)) {
2542
+ if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2082823) !== 0)) {
2484
2543
  {
2485
- this.state = 475;
2544
+ this.state = 487;
2486
2545
  this.parameters();
2487
2546
  }
2488
2547
  }
2489
- this.state = 478;
2548
+ this.state = 490;
2490
2549
  this.match(CircuitScriptParser.CLOSE_PAREN);
2491
2550
  }
2492
2551
  break;
@@ -2494,7 +2553,7 @@ export class CircuitScriptParser extends antlr.Parser {
2494
2553
  case CircuitScriptParser.T__6:
2495
2554
  this.enterOuterAlt(localContext, 2);
2496
2555
  {
2497
- this.state = 479;
2556
+ this.state = 491;
2498
2557
  this.trailer_expr2();
2499
2558
  }
2500
2559
  break;
@@ -2518,28 +2577,28 @@ export class CircuitScriptParser extends antlr.Parser {
2518
2577
  }
2519
2578
  trailer_expr2() {
2520
2579
  let localContext = new Trailer_expr2Context(this.context, this.state);
2521
- this.enterRule(localContext, 80, CircuitScriptParser.RULE_trailer_expr2);
2580
+ this.enterRule(localContext, 82, CircuitScriptParser.RULE_trailer_expr2);
2522
2581
  try {
2523
- this.state = 488;
2582
+ this.state = 500;
2524
2583
  this.errorHandler.sync(this);
2525
2584
  switch (this.tokenStream.LA(1)) {
2526
2585
  case CircuitScriptParser.T__6:
2527
2586
  this.enterOuterAlt(localContext, 1);
2528
2587
  {
2529
- this.state = 482;
2588
+ this.state = 494;
2530
2589
  this.match(CircuitScriptParser.T__6);
2531
- this.state = 483;
2590
+ this.state = 495;
2532
2591
  this.match(CircuitScriptParser.ID);
2533
2592
  }
2534
2593
  break;
2535
2594
  case CircuitScriptParser.T__4:
2536
2595
  this.enterOuterAlt(localContext, 2);
2537
2596
  {
2538
- this.state = 484;
2597
+ this.state = 496;
2539
2598
  this.match(CircuitScriptParser.T__4);
2540
- this.state = 485;
2599
+ this.state = 497;
2541
2600
  this.data_expr(0);
2542
- this.state = 486;
2601
+ this.state = 498;
2543
2602
  this.match(CircuitScriptParser.T__5);
2544
2603
  }
2545
2604
  break;
@@ -2563,24 +2622,24 @@ export class CircuitScriptParser extends antlr.Parser {
2563
2622
  }
2564
2623
  function_call_expr() {
2565
2624
  let localContext = new Function_call_exprContext(this.context, this.state);
2566
- this.enterRule(localContext, 82, CircuitScriptParser.RULE_function_call_expr);
2625
+ this.enterRule(localContext, 84, CircuitScriptParser.RULE_function_call_expr);
2567
2626
  let _la;
2568
2627
  try {
2569
2628
  let alternative;
2570
2629
  this.enterOuterAlt(localContext, 1);
2571
2630
  {
2572
- this.state = 491;
2631
+ this.state = 503;
2573
2632
  this.errorHandler.sync(this);
2574
2633
  _la = this.tokenStream.LA(1);
2575
2634
  if (_la === 42 || _la === 44) {
2576
2635
  {
2577
- this.state = 490;
2636
+ this.state = 502;
2578
2637
  this.net_namespace_expr();
2579
2638
  }
2580
2639
  }
2581
- this.state = 493;
2640
+ this.state = 505;
2582
2641
  this.match(CircuitScriptParser.ID);
2583
- this.state = 495;
2642
+ this.state = 507;
2584
2643
  this.errorHandler.sync(this);
2585
2644
  alternative = 1;
2586
2645
  do {
@@ -2588,7 +2647,7 @@ export class CircuitScriptParser extends antlr.Parser {
2588
2647
  case 1:
2589
2648
  {
2590
2649
  {
2591
- this.state = 494;
2650
+ this.state = 506;
2592
2651
  this.trailer_expr();
2593
2652
  }
2594
2653
  }
@@ -2596,9 +2655,9 @@ export class CircuitScriptParser extends antlr.Parser {
2596
2655
  default:
2597
2656
  throw new antlr.NoViableAltException(this);
2598
2657
  }
2599
- this.state = 497;
2658
+ this.state = 509;
2600
2659
  this.errorHandler.sync(this);
2601
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 50, this.context);
2660
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 51, this.context);
2602
2661
  } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER);
2603
2662
  }
2604
2663
  }
@@ -2618,28 +2677,28 @@ export class CircuitScriptParser extends antlr.Parser {
2618
2677
  }
2619
2678
  net_namespace_expr() {
2620
2679
  let localContext = new Net_namespace_exprContext(this.context, this.state);
2621
- this.enterRule(localContext, 84, CircuitScriptParser.RULE_net_namespace_expr);
2680
+ this.enterRule(localContext, 86, CircuitScriptParser.RULE_net_namespace_expr);
2622
2681
  let _la;
2623
2682
  try {
2624
2683
  this.enterOuterAlt(localContext, 1);
2625
2684
  {
2626
- this.state = 500;
2685
+ this.state = 512;
2627
2686
  this.errorHandler.sync(this);
2628
2687
  _la = this.tokenStream.LA(1);
2629
2688
  if (_la === 42) {
2630
2689
  {
2631
- this.state = 499;
2690
+ this.state = 511;
2632
2691
  this.match(CircuitScriptParser.Addition);
2633
2692
  }
2634
2693
  }
2635
- this.state = 502;
2694
+ this.state = 514;
2636
2695
  this.match(CircuitScriptParser.Divide);
2637
- this.state = 504;
2696
+ this.state = 516;
2638
2697
  this.errorHandler.sync(this);
2639
- switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context)) {
2698
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context)) {
2640
2699
  case 1:
2641
2700
  {
2642
- this.state = 503;
2701
+ this.state = 515;
2643
2702
  this.data_expr(0);
2644
2703
  }
2645
2704
  break;
@@ -2662,13 +2721,13 @@ export class CircuitScriptParser extends antlr.Parser {
2662
2721
  }
2663
2722
  function_return_expr() {
2664
2723
  let localContext = new Function_return_exprContext(this.context, this.state);
2665
- this.enterRule(localContext, 86, CircuitScriptParser.RULE_function_return_expr);
2724
+ this.enterRule(localContext, 88, CircuitScriptParser.RULE_function_return_expr);
2666
2725
  try {
2667
2726
  this.enterOuterAlt(localContext, 1);
2668
2727
  {
2669
- this.state = 506;
2728
+ this.state = 518;
2670
2729
  this.match(CircuitScriptParser.Return);
2671
- this.state = 507;
2730
+ this.state = 519;
2672
2731
  this.data_expr(0);
2673
2732
  }
2674
2733
  }
@@ -2688,15 +2747,15 @@ export class CircuitScriptParser extends antlr.Parser {
2688
2747
  }
2689
2748
  property_block_expr() {
2690
2749
  let localContext = new Property_block_exprContext(this.context, this.state);
2691
- this.enterRule(localContext, 88, CircuitScriptParser.RULE_property_block_expr);
2750
+ this.enterRule(localContext, 90, CircuitScriptParser.RULE_property_block_expr);
2692
2751
  try {
2693
2752
  this.enterOuterAlt(localContext, 1);
2694
2753
  {
2695
- this.state = 509;
2754
+ this.state = 521;
2696
2755
  this.property_key_expr();
2697
- this.state = 510;
2756
+ this.state = 522;
2698
2757
  this.match(CircuitScriptParser.T__0);
2699
- this.state = 511;
2758
+ this.state = 523;
2700
2759
  this.expressions_block();
2701
2760
  }
2702
2761
  }
@@ -2716,32 +2775,32 @@ export class CircuitScriptParser extends antlr.Parser {
2716
2775
  }
2717
2776
  create_component_expr() {
2718
2777
  let localContext = new Create_component_exprContext(this.context, this.state);
2719
- this.enterRule(localContext, 90, CircuitScriptParser.RULE_create_component_expr);
2778
+ this.enterRule(localContext, 92, CircuitScriptParser.RULE_create_component_expr);
2720
2779
  let _la;
2721
2780
  try {
2722
2781
  this.enterOuterAlt(localContext, 1);
2723
2782
  {
2724
- this.state = 513;
2783
+ this.state = 525;
2725
2784
  this.match(CircuitScriptParser.Create);
2726
- this.state = 514;
2785
+ this.state = 526;
2727
2786
  this.match(CircuitScriptParser.Component);
2728
- this.state = 515;
2787
+ this.state = 527;
2729
2788
  this.match(CircuitScriptParser.T__0);
2730
- this.state = 516;
2789
+ this.state = 528;
2731
2790
  this.match(CircuitScriptParser.NEWLINE);
2732
- this.state = 517;
2791
+ this.state = 529;
2733
2792
  this.match(CircuitScriptParser.INDENT);
2734
- this.state = 520;
2793
+ this.state = 532;
2735
2794
  this.errorHandler.sync(this);
2736
2795
  _la = this.tokenStream.LA(1);
2737
2796
  do {
2738
2797
  {
2739
- this.state = 520;
2798
+ this.state = 532;
2740
2799
  this.errorHandler.sync(this);
2741
2800
  switch (this.tokenStream.LA(1)) {
2742
2801
  case CircuitScriptParser.NEWLINE:
2743
2802
  {
2744
- this.state = 518;
2803
+ this.state = 530;
2745
2804
  this.match(CircuitScriptParser.NEWLINE);
2746
2805
  }
2747
2806
  break;
@@ -2749,7 +2808,7 @@ export class CircuitScriptParser extends antlr.Parser {
2749
2808
  case CircuitScriptParser.INTEGER_VALUE:
2750
2809
  case CircuitScriptParser.STRING_VALUE:
2751
2810
  {
2752
- this.state = 519;
2811
+ this.state = 531;
2753
2812
  this.property_expr();
2754
2813
  }
2755
2814
  break;
@@ -2757,11 +2816,11 @@ export class CircuitScriptParser extends antlr.Parser {
2757
2816
  throw new antlr.NoViableAltException(this);
2758
2817
  }
2759
2818
  }
2760
- this.state = 522;
2819
+ this.state = 534;
2761
2820
  this.errorHandler.sync(this);
2762
2821
  _la = this.tokenStream.LA(1);
2763
- } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2764
- this.state = 524;
2822
+ } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2823
+ this.state = 536;
2765
2824
  this.match(CircuitScriptParser.DEDENT);
2766
2825
  }
2767
2826
  }
@@ -2781,26 +2840,26 @@ export class CircuitScriptParser extends antlr.Parser {
2781
2840
  }
2782
2841
  graphic_expressions_block() {
2783
2842
  let localContext = new Graphic_expressions_blockContext(this.context, this.state);
2784
- this.enterRule(localContext, 92, CircuitScriptParser.RULE_graphic_expressions_block);
2843
+ this.enterRule(localContext, 94, CircuitScriptParser.RULE_graphic_expressions_block);
2785
2844
  let _la;
2786
2845
  try {
2787
2846
  this.enterOuterAlt(localContext, 1);
2788
2847
  {
2789
- this.state = 526;
2848
+ this.state = 538;
2790
2849
  this.match(CircuitScriptParser.NEWLINE);
2791
- this.state = 527;
2850
+ this.state = 539;
2792
2851
  this.match(CircuitScriptParser.INDENT);
2793
- this.state = 530;
2852
+ this.state = 542;
2794
2853
  this.errorHandler.sync(this);
2795
2854
  _la = this.tokenStream.LA(1);
2796
2855
  do {
2797
2856
  {
2798
- this.state = 530;
2857
+ this.state = 542;
2799
2858
  this.errorHandler.sync(this);
2800
2859
  switch (this.tokenStream.LA(1)) {
2801
2860
  case CircuitScriptParser.NEWLINE:
2802
2861
  {
2803
- this.state = 528;
2862
+ this.state = 540;
2804
2863
  this.match(CircuitScriptParser.NEWLINE);
2805
2864
  }
2806
2865
  break;
@@ -2808,7 +2867,7 @@ export class CircuitScriptParser extends antlr.Parser {
2808
2867
  case CircuitScriptParser.For:
2809
2868
  case CircuitScriptParser.ID:
2810
2869
  {
2811
- this.state = 529;
2870
+ this.state = 541;
2812
2871
  this.graphic_expr();
2813
2872
  }
2814
2873
  break;
@@ -2816,11 +2875,11 @@ export class CircuitScriptParser extends antlr.Parser {
2816
2875
  throw new antlr.NoViableAltException(this);
2817
2876
  }
2818
2877
  }
2819
- this.state = 532;
2878
+ this.state = 544;
2820
2879
  this.errorHandler.sync(this);
2821
2880
  _la = this.tokenStream.LA(1);
2822
- } while (_la === 15 || _la === 25 || _la === 56 || _la === 64);
2823
- this.state = 534;
2881
+ } while (_la === 15 || _la === 25 || _la === 57 || _la === 65);
2882
+ this.state = 546;
2824
2883
  this.match(CircuitScriptParser.DEDENT);
2825
2884
  }
2826
2885
  }
@@ -2840,31 +2899,31 @@ export class CircuitScriptParser extends antlr.Parser {
2840
2899
  }
2841
2900
  create_graphic_expr() {
2842
2901
  let localContext = new Create_graphic_exprContext(this.context, this.state);
2843
- this.enterRule(localContext, 94, CircuitScriptParser.RULE_create_graphic_expr);
2902
+ this.enterRule(localContext, 96, CircuitScriptParser.RULE_create_graphic_expr);
2844
2903
  let _la;
2845
2904
  try {
2846
2905
  this.enterOuterAlt(localContext, 1);
2847
2906
  {
2848
- this.state = 536;
2907
+ this.state = 548;
2849
2908
  this.match(CircuitScriptParser.Create);
2850
- this.state = 537;
2909
+ this.state = 549;
2851
2910
  this.match(CircuitScriptParser.Graphic);
2852
- this.state = 541;
2911
+ this.state = 553;
2853
2912
  this.errorHandler.sync(this);
2854
2913
  _la = this.tokenStream.LA(1);
2855
- if (_la === 52) {
2914
+ if (_la === 53) {
2856
2915
  {
2857
- this.state = 538;
2916
+ this.state = 550;
2858
2917
  this.match(CircuitScriptParser.OPEN_PAREN);
2859
- this.state = 539;
2918
+ this.state = 551;
2860
2919
  this.match(CircuitScriptParser.ID);
2861
- this.state = 540;
2920
+ this.state = 552;
2862
2921
  this.match(CircuitScriptParser.CLOSE_PAREN);
2863
2922
  }
2864
2923
  }
2865
- this.state = 543;
2924
+ this.state = 555;
2866
2925
  this.match(CircuitScriptParser.T__0);
2867
- this.state = 544;
2926
+ this.state = 556;
2868
2927
  this.graphic_expressions_block();
2869
2928
  }
2870
2929
  }
@@ -2884,54 +2943,54 @@ export class CircuitScriptParser extends antlr.Parser {
2884
2943
  }
2885
2944
  create_module_expr() {
2886
2945
  let localContext = new Create_module_exprContext(this.context, this.state);
2887
- this.enterRule(localContext, 96, CircuitScriptParser.RULE_create_module_expr);
2946
+ this.enterRule(localContext, 98, CircuitScriptParser.RULE_create_module_expr);
2888
2947
  let _la;
2889
2948
  try {
2890
2949
  this.enterOuterAlt(localContext, 1);
2891
2950
  {
2892
- this.state = 546;
2951
+ this.state = 558;
2893
2952
  this.match(CircuitScriptParser.Create);
2894
- this.state = 547;
2953
+ this.state = 559;
2895
2954
  this.match(CircuitScriptParser.Module);
2896
- this.state = 548;
2955
+ this.state = 560;
2897
2956
  this.match(CircuitScriptParser.T__0);
2898
- this.state = 549;
2957
+ this.state = 561;
2899
2958
  this.match(CircuitScriptParser.NEWLINE);
2900
- this.state = 550;
2959
+ this.state = 562;
2901
2960
  this.match(CircuitScriptParser.INDENT);
2902
- this.state = 554;
2961
+ this.state = 566;
2903
2962
  this.errorHandler.sync(this);
2904
2963
  _la = this.tokenStream.LA(1);
2905
2964
  do {
2906
2965
  {
2907
- this.state = 554;
2966
+ this.state = 566;
2908
2967
  this.errorHandler.sync(this);
2909
- switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context)) {
2968
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context)) {
2910
2969
  case 1:
2911
2970
  {
2912
- this.state = 551;
2971
+ this.state = 563;
2913
2972
  this.match(CircuitScriptParser.NEWLINE);
2914
2973
  }
2915
2974
  break;
2916
2975
  case 2:
2917
2976
  {
2918
- this.state = 552;
2977
+ this.state = 564;
2919
2978
  this.property_expr();
2920
2979
  }
2921
2980
  break;
2922
2981
  case 3:
2923
2982
  {
2924
- this.state = 553;
2983
+ this.state = 565;
2925
2984
  this.property_block_expr();
2926
2985
  }
2927
2986
  break;
2928
2987
  }
2929
2988
  }
2930
- this.state = 556;
2989
+ this.state = 568;
2931
2990
  this.errorHandler.sync(this);
2932
2991
  _la = this.tokenStream.LA(1);
2933
- } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2934
- this.state = 558;
2992
+ } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
2993
+ this.state = 570;
2935
2994
  this.match(CircuitScriptParser.DEDENT);
2936
2995
  }
2937
2996
  }
@@ -2951,27 +3010,27 @@ export class CircuitScriptParser extends antlr.Parser {
2951
3010
  }
2952
3011
  nested_properties_inner() {
2953
3012
  let localContext = new Nested_properties_innerContext(this.context, this.state);
2954
- this.enterRule(localContext, 98, CircuitScriptParser.RULE_nested_properties_inner);
3013
+ this.enterRule(localContext, 100, CircuitScriptParser.RULE_nested_properties_inner);
2955
3014
  let _la;
2956
3015
  try {
2957
3016
  this.enterOuterAlt(localContext, 1);
2958
3017
  {
2959
3018
  {
2960
- this.state = 560;
3019
+ this.state = 572;
2961
3020
  this.match(CircuitScriptParser.NEWLINE);
2962
- this.state = 561;
3021
+ this.state = 573;
2963
3022
  this.match(CircuitScriptParser.INDENT);
2964
- this.state = 564;
3023
+ this.state = 576;
2965
3024
  this.errorHandler.sync(this);
2966
3025
  _la = this.tokenStream.LA(1);
2967
3026
  do {
2968
3027
  {
2969
- this.state = 564;
3028
+ this.state = 576;
2970
3029
  this.errorHandler.sync(this);
2971
3030
  switch (this.tokenStream.LA(1)) {
2972
3031
  case CircuitScriptParser.NEWLINE:
2973
3032
  {
2974
- this.state = 562;
3033
+ this.state = 574;
2975
3034
  this.match(CircuitScriptParser.NEWLINE);
2976
3035
  }
2977
3036
  break;
@@ -2979,7 +3038,7 @@ export class CircuitScriptParser extends antlr.Parser {
2979
3038
  case CircuitScriptParser.INTEGER_VALUE:
2980
3039
  case CircuitScriptParser.STRING_VALUE:
2981
3040
  {
2982
- this.state = 563;
3041
+ this.state = 575;
2983
3042
  this.property_expr();
2984
3043
  }
2985
3044
  break;
@@ -2987,11 +3046,11 @@ export class CircuitScriptParser extends antlr.Parser {
2987
3046
  throw new antlr.NoViableAltException(this);
2988
3047
  }
2989
3048
  }
2990
- this.state = 566;
3049
+ this.state = 578;
2991
3050
  this.errorHandler.sync(this);
2992
3051
  _la = this.tokenStream.LA(1);
2993
- } while (((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 275) !== 0));
2994
- this.state = 568;
3052
+ } while (((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 275) !== 0));
3053
+ this.state = 580;
2995
3054
  this.match(CircuitScriptParser.DEDENT);
2996
3055
  }
2997
3056
  }
@@ -3012,10 +3071,10 @@ export class CircuitScriptParser extends antlr.Parser {
3012
3071
  }
3013
3072
  graphic_expr() {
3014
3073
  let localContext = new Graphic_exprContext(this.context, this.state);
3015
- this.enterRule(localContext, 100, CircuitScriptParser.RULE_graphic_expr);
3074
+ this.enterRule(localContext, 102, CircuitScriptParser.RULE_graphic_expr);
3016
3075
  let _la;
3017
3076
  try {
3018
- this.state = 596;
3077
+ this.state = 608;
3019
3078
  this.errorHandler.sync(this);
3020
3079
  switch (this.tokenStream.LA(1)) {
3021
3080
  case CircuitScriptParser.Pin:
@@ -3023,47 +3082,47 @@ export class CircuitScriptParser extends antlr.Parser {
3023
3082
  localContext = new GraphicCommandExprContext(localContext);
3024
3083
  this.enterOuterAlt(localContext, 1);
3025
3084
  {
3026
- this.state = 570;
3085
+ this.state = 582;
3027
3086
  localContext._command = this.tokenStream.LT(1);
3028
3087
  _la = this.tokenStream.LA(1);
3029
- if (!(_la === 15 || _la === 56)) {
3088
+ if (!(_la === 15 || _la === 57)) {
3030
3089
  localContext._command = this.errorHandler.recoverInline(this);
3031
3090
  }
3032
3091
  else {
3033
3092
  this.errorHandler.reportMatch(this);
3034
3093
  this.consume();
3035
3094
  }
3036
- this.state = 572;
3095
+ this.state = 584;
3037
3096
  this.errorHandler.sync(this);
3038
3097
  _la = this.tokenStream.LA(1);
3039
3098
  if (_la === 1) {
3040
3099
  {
3041
- this.state = 571;
3100
+ this.state = 583;
3042
3101
  this.match(CircuitScriptParser.T__0);
3043
3102
  }
3044
3103
  }
3045
- this.state = 580;
3104
+ this.state = 592;
3046
3105
  this.errorHandler.sync(this);
3047
- switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context)) {
3106
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context)) {
3048
3107
  case 1:
3049
3108
  {
3050
- this.state = 574;
3109
+ this.state = 586;
3051
3110
  this.parameters();
3052
3111
  }
3053
3112
  break;
3054
3113
  case 2:
3055
3114
  {
3056
- this.state = 575;
3115
+ this.state = 587;
3057
3116
  this.match(CircuitScriptParser.OPEN_PAREN);
3058
- this.state = 576;
3117
+ this.state = 588;
3059
3118
  this.parameters();
3060
- this.state = 577;
3119
+ this.state = 589;
3061
3120
  this.match(CircuitScriptParser.CLOSE_PAREN);
3062
3121
  }
3063
3122
  break;
3064
3123
  case 3:
3065
3124
  {
3066
- this.state = 579;
3125
+ this.state = 591;
3067
3126
  this.nested_properties_inner();
3068
3127
  }
3069
3128
  break;
@@ -3074,33 +3133,33 @@ export class CircuitScriptParser extends antlr.Parser {
3074
3133
  localContext = new GraphicForExprContext(localContext);
3075
3134
  this.enterOuterAlt(localContext, 2);
3076
3135
  {
3077
- this.state = 582;
3136
+ this.state = 594;
3078
3137
  this.match(CircuitScriptParser.For);
3079
- this.state = 583;
3138
+ this.state = 595;
3080
3139
  this.match(CircuitScriptParser.ID);
3081
- this.state = 588;
3140
+ this.state = 600;
3082
3141
  this.errorHandler.sync(this);
3083
3142
  _la = this.tokenStream.LA(1);
3084
3143
  while (_la === 2) {
3085
3144
  {
3086
3145
  {
3087
- this.state = 584;
3146
+ this.state = 596;
3088
3147
  this.match(CircuitScriptParser.T__1);
3089
- this.state = 585;
3148
+ this.state = 597;
3090
3149
  this.match(CircuitScriptParser.ID);
3091
3150
  }
3092
3151
  }
3093
- this.state = 590;
3152
+ this.state = 602;
3094
3153
  this.errorHandler.sync(this);
3095
3154
  _la = this.tokenStream.LA(1);
3096
3155
  }
3097
- this.state = 591;
3156
+ this.state = 603;
3098
3157
  this.match(CircuitScriptParser.In);
3099
- this.state = 592;
3158
+ this.state = 604;
3100
3159
  this.data_expr(0);
3101
- this.state = 593;
3160
+ this.state = 605;
3102
3161
  this.match(CircuitScriptParser.T__0);
3103
- this.state = 594;
3162
+ this.state = 606;
3104
3163
  this.graphic_expressions_block();
3105
3164
  }
3106
3165
  break;
@@ -3124,15 +3183,15 @@ export class CircuitScriptParser extends antlr.Parser {
3124
3183
  }
3125
3184
  property_expr() {
3126
3185
  let localContext = new Property_exprContext(this.context, this.state);
3127
- this.enterRule(localContext, 102, CircuitScriptParser.RULE_property_expr);
3186
+ this.enterRule(localContext, 104, CircuitScriptParser.RULE_property_expr);
3128
3187
  try {
3129
3188
  this.enterOuterAlt(localContext, 1);
3130
3189
  {
3131
- this.state = 598;
3190
+ this.state = 610;
3132
3191
  this.property_key_expr();
3133
- this.state = 599;
3192
+ this.state = 611;
3134
3193
  this.match(CircuitScriptParser.T__0);
3135
- this.state = 600;
3194
+ this.state = 612;
3136
3195
  this.property_value_expr();
3137
3196
  }
3138
3197
  }
@@ -3152,14 +3211,14 @@ export class CircuitScriptParser extends antlr.Parser {
3152
3211
  }
3153
3212
  property_key_expr() {
3154
3213
  let localContext = new Property_key_exprContext(this.context, this.state);
3155
- this.enterRule(localContext, 104, CircuitScriptParser.RULE_property_key_expr);
3214
+ this.enterRule(localContext, 106, CircuitScriptParser.RULE_property_key_expr);
3156
3215
  let _la;
3157
3216
  try {
3158
3217
  this.enterOuterAlt(localContext, 1);
3159
3218
  {
3160
- this.state = 602;
3219
+ this.state = 614;
3161
3220
  _la = this.tokenStream.LA(1);
3162
- if (!(((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 19) !== 0))) {
3221
+ if (!(((((_la - 57)) & ~0x1F) === 0 && ((1 << (_la - 57)) & 19) !== 0))) {
3163
3222
  this.errorHandler.recoverInline(this);
3164
3223
  }
3165
3224
  else {
@@ -3184,17 +3243,17 @@ export class CircuitScriptParser extends antlr.Parser {
3184
3243
  }
3185
3244
  property_value_expr() {
3186
3245
  let localContext = new Property_value_exprContext(this.context, this.state);
3187
- this.enterRule(localContext, 106, CircuitScriptParser.RULE_property_value_expr);
3246
+ this.enterRule(localContext, 108, CircuitScriptParser.RULE_property_value_expr);
3188
3247
  let _la;
3189
3248
  try {
3190
- this.state = 613;
3249
+ this.state = 625;
3191
3250
  this.errorHandler.sync(this);
3192
3251
  switch (this.tokenStream.LA(1)) {
3193
3252
  case CircuitScriptParser.NEWLINE:
3194
3253
  localContext = new Nested_propertiesContext(localContext);
3195
3254
  this.enterOuterAlt(localContext, 1);
3196
3255
  {
3197
- this.state = 604;
3256
+ this.state = 616;
3198
3257
  this.nested_properties_inner();
3199
3258
  }
3200
3259
  break;
@@ -3215,21 +3274,21 @@ export class CircuitScriptParser extends antlr.Parser {
3215
3274
  localContext = new Single_line_propertyContext(localContext);
3216
3275
  this.enterOuterAlt(localContext, 2);
3217
3276
  {
3218
- this.state = 605;
3277
+ this.state = 617;
3219
3278
  this.data_expr(0);
3220
- this.state = 610;
3279
+ this.state = 622;
3221
3280
  this.errorHandler.sync(this);
3222
3281
  _la = this.tokenStream.LA(1);
3223
3282
  while (_la === 2) {
3224
3283
  {
3225
3284
  {
3226
- this.state = 606;
3285
+ this.state = 618;
3227
3286
  this.match(CircuitScriptParser.T__1);
3228
- this.state = 607;
3287
+ this.state = 619;
3229
3288
  this.data_expr(0);
3230
3289
  }
3231
3290
  }
3232
- this.state = 612;
3291
+ this.state = 624;
3233
3292
  this.errorHandler.sync(this);
3234
3293
  _la = this.tokenStream.LA(1);
3235
3294
  }
@@ -3255,29 +3314,29 @@ export class CircuitScriptParser extends antlr.Parser {
3255
3314
  }
3256
3315
  wire_atom_expr() {
3257
3316
  let localContext = new Wire_atom_exprContext(this.context, this.state);
3258
- this.enterRule(localContext, 108, CircuitScriptParser.RULE_wire_atom_expr);
3317
+ this.enterRule(localContext, 110, CircuitScriptParser.RULE_wire_atom_expr);
3259
3318
  try {
3260
- this.state = 621;
3319
+ this.state = 633;
3261
3320
  this.errorHandler.sync(this);
3262
- switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context)) {
3321
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context)) {
3263
3322
  case 1:
3264
3323
  localContext = new Wire_expr_direction_valueContext(localContext);
3265
3324
  this.enterOuterAlt(localContext, 1);
3266
3325
  {
3267
- this.state = 615;
3326
+ this.state = 627;
3268
3327
  this.match(CircuitScriptParser.ID);
3269
- this.state = 618;
3328
+ this.state = 630;
3270
3329
  this.errorHandler.sync(this);
3271
- switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context)) {
3330
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context)) {
3272
3331
  case 1:
3273
3332
  {
3274
- this.state = 616;
3333
+ this.state = 628;
3275
3334
  this.match(CircuitScriptParser.INTEGER_VALUE);
3276
3335
  }
3277
3336
  break;
3278
3337
  case 2:
3279
3338
  {
3280
- this.state = 617;
3339
+ this.state = 629;
3281
3340
  this.data_expr(0);
3282
3341
  }
3283
3342
  break;
@@ -3288,7 +3347,7 @@ export class CircuitScriptParser extends antlr.Parser {
3288
3347
  localContext = new Wire_expr_direction_onlyContext(localContext);
3289
3348
  this.enterOuterAlt(localContext, 2);
3290
3349
  {
3291
- this.state = 620;
3350
+ this.state = 632;
3292
3351
  this.match(CircuitScriptParser.ID);
3293
3352
  }
3294
3353
  break;
@@ -3310,28 +3369,28 @@ export class CircuitScriptParser extends antlr.Parser {
3310
3369
  }
3311
3370
  wire_expr() {
3312
3371
  let localContext = new Wire_exprContext(this.context, this.state);
3313
- this.enterRule(localContext, 110, CircuitScriptParser.RULE_wire_expr);
3372
+ this.enterRule(localContext, 112, CircuitScriptParser.RULE_wire_expr);
3314
3373
  try {
3315
3374
  let alternative;
3316
3375
  this.enterOuterAlt(localContext, 1);
3317
3376
  {
3318
- this.state = 623;
3377
+ this.state = 635;
3319
3378
  this.match(CircuitScriptParser.Wire);
3320
- this.state = 627;
3379
+ this.state = 639;
3321
3380
  this.errorHandler.sync(this);
3322
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 70, this.context);
3381
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3323
3382
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3324
3383
  if (alternative === 1) {
3325
3384
  {
3326
3385
  {
3327
- this.state = 624;
3386
+ this.state = 636;
3328
3387
  this.wire_atom_expr();
3329
3388
  }
3330
3389
  }
3331
3390
  }
3332
- this.state = 629;
3391
+ this.state = 641;
3333
3392
  this.errorHandler.sync(this);
3334
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 70, this.context);
3393
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context);
3335
3394
  }
3336
3395
  }
3337
3396
  }
@@ -3351,44 +3410,44 @@ export class CircuitScriptParser extends antlr.Parser {
3351
3410
  }
3352
3411
  array_expr() {
3353
3412
  let localContext = new Array_exprContext(this.context, this.state);
3354
- this.enterRule(localContext, 112, CircuitScriptParser.RULE_array_expr);
3413
+ this.enterRule(localContext, 114, CircuitScriptParser.RULE_array_expr);
3355
3414
  let _la;
3356
3415
  try {
3357
3416
  this.enterOuterAlt(localContext, 1);
3358
3417
  {
3359
- this.state = 630;
3418
+ this.state = 642;
3360
3419
  this.match(CircuitScriptParser.T__4);
3361
- this.state = 641;
3420
+ this.state = 653;
3362
3421
  this.errorHandler.sync(this);
3363
3422
  _la = this.tokenStream.LA(1);
3364
- while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 1041415) !== 0)) {
3423
+ while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2147484704) !== 0) || ((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2082823) !== 0)) {
3365
3424
  {
3366
3425
  {
3367
- this.state = 631;
3426
+ this.state = 643;
3368
3427
  this.data_expr(0);
3369
- this.state = 636;
3428
+ this.state = 648;
3370
3429
  this.errorHandler.sync(this);
3371
3430
  _la = this.tokenStream.LA(1);
3372
3431
  while (_la === 2) {
3373
3432
  {
3374
3433
  {
3375
- this.state = 632;
3434
+ this.state = 644;
3376
3435
  this.match(CircuitScriptParser.T__1);
3377
- this.state = 633;
3436
+ this.state = 645;
3378
3437
  this.data_expr(0);
3379
3438
  }
3380
3439
  }
3381
- this.state = 638;
3440
+ this.state = 650;
3382
3441
  this.errorHandler.sync(this);
3383
3442
  _la = this.tokenStream.LA(1);
3384
3443
  }
3385
3444
  }
3386
3445
  }
3387
- this.state = 643;
3446
+ this.state = 655;
3388
3447
  this.errorHandler.sync(this);
3389
3448
  _la = this.tokenStream.LA(1);
3390
3449
  }
3391
- this.state = 644;
3450
+ this.state = 656;
3392
3451
  this.match(CircuitScriptParser.T__5);
3393
3452
  }
3394
3453
  }
@@ -3408,24 +3467,24 @@ export class CircuitScriptParser extends antlr.Parser {
3408
3467
  }
3409
3468
  point_expr() {
3410
3469
  let localContext = new Point_exprContext(this.context, this.state);
3411
- this.enterRule(localContext, 114, CircuitScriptParser.RULE_point_expr);
3470
+ this.enterRule(localContext, 116, CircuitScriptParser.RULE_point_expr);
3412
3471
  try {
3413
3472
  this.enterOuterAlt(localContext, 1);
3414
3473
  {
3415
- this.state = 646;
3474
+ this.state = 658;
3416
3475
  this.match(CircuitScriptParser.Point);
3417
- this.state = 649;
3476
+ this.state = 661;
3418
3477
  this.errorHandler.sync(this);
3419
- switch (this.interpreter.adaptivePredict(this.tokenStream, 73, this.context)) {
3478
+ switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context)) {
3420
3479
  case 1:
3421
3480
  {
3422
- this.state = 647;
3481
+ this.state = 659;
3423
3482
  this.match(CircuitScriptParser.ID);
3424
3483
  }
3425
3484
  break;
3426
3485
  case 2:
3427
3486
  {
3428
- this.state = 648;
3487
+ this.state = 660;
3429
3488
  this.data_expr(0);
3430
3489
  }
3431
3490
  break;
@@ -3448,13 +3507,13 @@ export class CircuitScriptParser extends antlr.Parser {
3448
3507
  }
3449
3508
  import_expr() {
3450
3509
  let localContext = new Import_exprContext(this.context, this.state);
3451
- this.enterRule(localContext, 116, CircuitScriptParser.RULE_import_expr);
3510
+ this.enterRule(localContext, 118, CircuitScriptParser.RULE_import_expr);
3452
3511
  try {
3453
3512
  this.enterOuterAlt(localContext, 1);
3454
3513
  {
3455
- this.state = 651;
3514
+ this.state = 663;
3456
3515
  this.match(CircuitScriptParser.Import);
3457
- this.state = 652;
3516
+ this.state = 664;
3458
3517
  this.match(CircuitScriptParser.ID);
3459
3518
  }
3460
3519
  }
@@ -3474,12 +3533,12 @@ export class CircuitScriptParser extends antlr.Parser {
3474
3533
  }
3475
3534
  frame_expr() {
3476
3535
  let localContext = new Frame_exprContext(this.context, this.state);
3477
- this.enterRule(localContext, 118, CircuitScriptParser.RULE_frame_expr);
3536
+ this.enterRule(localContext, 120, CircuitScriptParser.RULE_frame_expr);
3478
3537
  let _la;
3479
3538
  try {
3480
3539
  this.enterOuterAlt(localContext, 1);
3481
3540
  {
3482
- this.state = 654;
3541
+ this.state = 666;
3483
3542
  _la = this.tokenStream.LA(1);
3484
3543
  if (!(_la === 32 || _la === 33)) {
3485
3544
  this.errorHandler.recoverInline(this);
@@ -3488,9 +3547,9 @@ export class CircuitScriptParser extends antlr.Parser {
3488
3547
  this.errorHandler.reportMatch(this);
3489
3548
  this.consume();
3490
3549
  }
3491
- this.state = 655;
3550
+ this.state = 667;
3492
3551
  this.match(CircuitScriptParser.T__0);
3493
- this.state = 656;
3552
+ this.state = 668;
3494
3553
  this.expressions_block();
3495
3554
  }
3496
3555
  }
@@ -3510,42 +3569,42 @@ export class CircuitScriptParser extends antlr.Parser {
3510
3569
  }
3511
3570
  if_expr() {
3512
3571
  let localContext = new If_exprContext(this.context, this.state);
3513
- this.enterRule(localContext, 120, CircuitScriptParser.RULE_if_expr);
3572
+ this.enterRule(localContext, 122, CircuitScriptParser.RULE_if_expr);
3514
3573
  let _la;
3515
3574
  try {
3516
3575
  let alternative;
3517
3576
  this.enterOuterAlt(localContext, 1);
3518
3577
  {
3519
- this.state = 658;
3578
+ this.state = 670;
3520
3579
  this.match(CircuitScriptParser.If);
3521
- this.state = 659;
3580
+ this.state = 671;
3522
3581
  this.data_expr(0);
3523
- this.state = 660;
3582
+ this.state = 672;
3524
3583
  this.match(CircuitScriptParser.T__0);
3525
- this.state = 661;
3584
+ this.state = 673;
3526
3585
  this.expressions_block();
3527
- this.state = 665;
3586
+ this.state = 677;
3528
3587
  this.errorHandler.sync(this);
3529
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 74, this.context);
3588
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3530
3589
  while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) {
3531
3590
  if (alternative === 1) {
3532
3591
  {
3533
3592
  {
3534
- this.state = 662;
3593
+ this.state = 674;
3535
3594
  this.if_inner_expr();
3536
3595
  }
3537
3596
  }
3538
3597
  }
3539
- this.state = 667;
3598
+ this.state = 679;
3540
3599
  this.errorHandler.sync(this);
3541
- alternative = this.interpreter.adaptivePredict(this.tokenStream, 74, this.context);
3600
+ alternative = this.interpreter.adaptivePredict(this.tokenStream, 75, this.context);
3542
3601
  }
3543
- this.state = 669;
3602
+ this.state = 681;
3544
3603
  this.errorHandler.sync(this);
3545
3604
  _la = this.tokenStream.LA(1);
3546
3605
  if (_la === 30) {
3547
3606
  {
3548
- this.state = 668;
3607
+ this.state = 680;
3549
3608
  this.else_expr();
3550
3609
  }
3551
3610
  }
@@ -3567,19 +3626,19 @@ export class CircuitScriptParser extends antlr.Parser {
3567
3626
  }
3568
3627
  if_inner_expr() {
3569
3628
  let localContext = new If_inner_exprContext(this.context, this.state);
3570
- this.enterRule(localContext, 122, CircuitScriptParser.RULE_if_inner_expr);
3629
+ this.enterRule(localContext, 124, CircuitScriptParser.RULE_if_inner_expr);
3571
3630
  try {
3572
3631
  this.enterOuterAlt(localContext, 1);
3573
3632
  {
3574
- this.state = 671;
3633
+ this.state = 683;
3575
3634
  this.match(CircuitScriptParser.Else);
3576
- this.state = 672;
3635
+ this.state = 684;
3577
3636
  this.match(CircuitScriptParser.If);
3578
- this.state = 673;
3637
+ this.state = 685;
3579
3638
  this.data_expr(0);
3580
- this.state = 674;
3639
+ this.state = 686;
3581
3640
  this.match(CircuitScriptParser.T__0);
3582
- this.state = 675;
3641
+ this.state = 687;
3583
3642
  this.expressions_block();
3584
3643
  }
3585
3644
  }
@@ -3599,15 +3658,15 @@ export class CircuitScriptParser extends antlr.Parser {
3599
3658
  }
3600
3659
  else_expr() {
3601
3660
  let localContext = new Else_exprContext(this.context, this.state);
3602
- this.enterRule(localContext, 124, CircuitScriptParser.RULE_else_expr);
3661
+ this.enterRule(localContext, 126, CircuitScriptParser.RULE_else_expr);
3603
3662
  try {
3604
3663
  this.enterOuterAlt(localContext, 1);
3605
3664
  {
3606
- this.state = 677;
3665
+ this.state = 689;
3607
3666
  this.match(CircuitScriptParser.Else);
3608
- this.state = 678;
3667
+ this.state = 690;
3609
3668
  this.match(CircuitScriptParser.T__0);
3610
- this.state = 679;
3669
+ this.state = 691;
3611
3670
  this.expressions_block();
3612
3671
  }
3613
3672
  }
@@ -3627,17 +3686,17 @@ export class CircuitScriptParser extends antlr.Parser {
3627
3686
  }
3628
3687
  while_expr() {
3629
3688
  let localContext = new While_exprContext(this.context, this.state);
3630
- this.enterRule(localContext, 126, CircuitScriptParser.RULE_while_expr);
3689
+ this.enterRule(localContext, 128, CircuitScriptParser.RULE_while_expr);
3631
3690
  try {
3632
3691
  this.enterOuterAlt(localContext, 1);
3633
3692
  {
3634
- this.state = 681;
3693
+ this.state = 693;
3635
3694
  this.match(CircuitScriptParser.While);
3636
- this.state = 682;
3695
+ this.state = 694;
3637
3696
  this.data_expr(0);
3638
- this.state = 683;
3697
+ this.state = 695;
3639
3698
  this.match(CircuitScriptParser.T__0);
3640
- this.state = 684;
3699
+ this.state = 696;
3641
3700
  this.expressions_block();
3642
3701
  }
3643
3702
  }
@@ -3657,38 +3716,38 @@ export class CircuitScriptParser extends antlr.Parser {
3657
3716
  }
3658
3717
  for_expr() {
3659
3718
  let localContext = new For_exprContext(this.context, this.state);
3660
- this.enterRule(localContext, 128, CircuitScriptParser.RULE_for_expr);
3719
+ this.enterRule(localContext, 130, CircuitScriptParser.RULE_for_expr);
3661
3720
  let _la;
3662
3721
  try {
3663
3722
  this.enterOuterAlt(localContext, 1);
3664
3723
  {
3665
- this.state = 686;
3724
+ this.state = 698;
3666
3725
  this.match(CircuitScriptParser.For);
3667
- this.state = 687;
3726
+ this.state = 699;
3668
3727
  this.match(CircuitScriptParser.ID);
3669
- this.state = 692;
3728
+ this.state = 704;
3670
3729
  this.errorHandler.sync(this);
3671
3730
  _la = this.tokenStream.LA(1);
3672
3731
  while (_la === 2) {
3673
3732
  {
3674
3733
  {
3675
- this.state = 688;
3734
+ this.state = 700;
3676
3735
  this.match(CircuitScriptParser.T__1);
3677
- this.state = 689;
3736
+ this.state = 701;
3678
3737
  this.match(CircuitScriptParser.ID);
3679
3738
  }
3680
3739
  }
3681
- this.state = 694;
3740
+ this.state = 706;
3682
3741
  this.errorHandler.sync(this);
3683
3742
  _la = this.tokenStream.LA(1);
3684
3743
  }
3685
- this.state = 695;
3744
+ this.state = 707;
3686
3745
  this.match(CircuitScriptParser.In);
3687
- this.state = 696;
3746
+ this.state = 708;
3688
3747
  this.data_expr(0);
3689
- this.state = 697;
3748
+ this.state = 709;
3690
3749
  this.match(CircuitScriptParser.T__0);
3691
- this.state = 698;
3750
+ this.state = 710;
3692
3751
  this.expressions_block();
3693
3752
  }
3694
3753
  }
@@ -3706,9 +3765,35 @@ export class CircuitScriptParser extends antlr.Parser {
3706
3765
  }
3707
3766
  return localContext;
3708
3767
  }
3768
+ annotation_comment_expr() {
3769
+ let localContext = new Annotation_comment_exprContext(this.context, this.state);
3770
+ this.enterRule(localContext, 132, CircuitScriptParser.RULE_annotation_comment_expr);
3771
+ try {
3772
+ this.enterOuterAlt(localContext, 1);
3773
+ {
3774
+ this.state = 712;
3775
+ this.match(CircuitScriptParser.ANNOTATION_START);
3776
+ this.state = 713;
3777
+ this.match(CircuitScriptParser.ID);
3778
+ }
3779
+ }
3780
+ catch (re) {
3781
+ if (re instanceof antlr.RecognitionException) {
3782
+ this.errorHandler.reportError(this, re);
3783
+ this.errorHandler.recover(this, re);
3784
+ }
3785
+ else {
3786
+ throw re;
3787
+ }
3788
+ }
3789
+ finally {
3790
+ this.exitRule();
3791
+ }
3792
+ return localContext;
3793
+ }
3709
3794
  sempred(localContext, ruleIndex, predIndex) {
3710
3795
  switch (ruleIndex) {
3711
- case 31:
3796
+ case 32:
3712
3797
  return this.data_expr_sempred(localContext, predIndex);
3713
3798
  }
3714
3799
  return true;
@@ -3729,7 +3814,7 @@ export class CircuitScriptParser extends antlr.Parser {
3729
3814
  return true;
3730
3815
  }
3731
3816
  static _serializedATN = [
3732
- 4, 1, 67, 701, 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,
3817
+ 4, 1, 68, 716, 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,
3733
3818
  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,
3734
3819
  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,
3735
3820
  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,
@@ -3738,255 +3823,260 @@ export class CircuitScriptParser extends antlr.Parser {
3738
3823
  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,
3739
3824
  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,
3740
3825
  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,
3741
- 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 1, 0, 1, 0, 5,
3742
- 0, 133, 8, 0, 10, 0, 12, 0, 136, 9, 0, 1, 0, 1, 0, 4, 0, 140, 8, 0, 11, 0, 12, 0, 141, 1,
3743
- 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 158, 8,
3744
- 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 165, 8, 2, 1, 3, 1, 3, 3, 3, 169, 8, 3, 1, 4, 1, 4, 1,
3745
- 4, 1, 4, 1, 4, 1, 4, 3, 4, 177, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 4, 5, 183, 8, 5, 11, 5, 12, 5,
3746
- 184, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 4, 7, 199, 8, 7,
3747
- 11, 7, 12, 7, 200, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10,
3748
- 1, 10, 3, 10, 216, 8, 10, 1, 11, 1, 11, 3, 11, 220, 8, 11, 1, 11, 5, 11, 223, 8, 11, 10,
3749
- 11, 12, 11, 226, 9, 11, 1, 11, 3, 11, 229, 8, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1,
3750
- 13, 3, 13, 237, 8, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 5,
3751
- 16, 248, 8, 16, 10, 16, 12, 16, 251, 9, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5,
3752
- 17, 259, 8, 17, 10, 17, 12, 17, 262, 9, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 4, 17, 269,
3753
- 8, 17, 11, 17, 12, 17, 270, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 280,
3754
- 8, 18, 10, 18, 12, 18, 283, 9, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20,
3755
- 4, 20, 293, 8, 20, 11, 20, 12, 20, 294, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 301, 8, 21,
3756
- 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 307, 8, 22, 1, 23, 1, 23, 3, 23, 311, 8, 23, 1, 24, 1,
3757
- 24, 1, 25, 1, 25, 3, 25, 317, 8, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1,
3758
- 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 5, 28, 333, 8, 28, 10, 28, 12, 28, 336, 9,
3759
- 28, 1, 28, 1, 28, 5, 28, 340, 8, 28, 10, 28, 12, 28, 343, 9, 28, 1, 28, 1, 28, 1, 28, 5,
3760
- 28, 348, 8, 28, 10, 28, 12, 28, 351, 9, 28, 3, 28, 353, 8, 28, 1, 29, 1, 29, 1, 29, 1,
3761
- 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3,
3762
- 31, 371, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 381, 8, 31,
3763
- 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31,
3764
- 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 401, 8, 31, 10, 31, 12, 31, 404, 9, 31, 1, 32,
3765
- 1, 32, 1, 33, 1, 33, 1, 34, 3, 34, 411, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35,
3766
- 3, 35, 419, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 4, 35, 427, 8, 35, 11, 35,
3767
- 12, 35, 428, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 435, 8, 36, 1, 37, 1, 37, 1, 37, 5, 37,
3768
- 440, 8, 37, 10, 37, 12, 37, 443, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 449, 8, 37,
3769
- 10, 37, 12, 37, 452, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 461,
3770
- 8, 37, 10, 37, 12, 37, 464, 9, 37, 3, 37, 466, 8, 37, 1, 38, 1, 38, 5, 38, 470, 8, 38,
3771
- 10, 38, 12, 38, 473, 9, 38, 1, 39, 1, 39, 3, 39, 477, 8, 39, 1, 39, 1, 39, 3, 39, 481,
3772
- 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 489, 8, 40, 1, 41, 3, 41, 492, 8,
3773
- 41, 1, 41, 1, 41, 4, 41, 496, 8, 41, 11, 41, 12, 41, 497, 1, 42, 3, 42, 501, 8, 42, 1,
3774
- 42, 1, 42, 3, 42, 505, 8, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1,
3775
- 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 4, 45, 521, 8, 45, 11, 45, 12, 45, 522, 1, 45, 1,
3776
- 45, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 531, 8, 46, 11, 46, 12, 46, 532, 1, 46, 1, 46, 1,
3777
- 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 542, 8, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1,
3778
- 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 4, 48, 555, 8, 48, 11, 48, 12, 48, 556, 1, 48, 1,
3779
- 48, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 565, 8, 49, 11, 49, 12, 49, 566, 1, 49, 1, 49, 1,
3780
- 50, 1, 50, 3, 50, 573, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 581, 8, 50,
3781
- 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 587, 8, 50, 10, 50, 12, 50, 590, 9, 50, 1, 50, 1, 50,
3782
- 1, 50, 1, 50, 1, 50, 3, 50, 597, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53,
3783
- 1, 53, 1, 53, 1, 53, 5, 53, 609, 8, 53, 10, 53, 12, 53, 612, 9, 53, 3, 53, 614, 8, 53,
3784
- 1, 54, 1, 54, 1, 54, 3, 54, 619, 8, 54, 1, 54, 3, 54, 622, 8, 54, 1, 55, 1, 55, 5, 55, 626,
3785
- 8, 55, 10, 55, 12, 55, 629, 9, 55, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 635, 8, 56, 10, 56,
3786
- 12, 56, 638, 9, 56, 5, 56, 640, 8, 56, 10, 56, 12, 56, 643, 9, 56, 1, 56, 1, 56, 1, 57,
3787
- 1, 57, 1, 57, 3, 57, 650, 8, 57, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60,
3788
- 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 664, 8, 60, 10, 60, 12, 60, 667, 9, 60, 1, 60, 3, 60,
3789
- 670, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63,
3790
- 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 691, 8, 64, 10, 64, 12, 64,
3791
- 694, 9, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 0, 1, 62, 65, 0, 2, 4, 6, 8, 10, 12,
3792
- 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56,
3793
- 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100,
3794
- 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 0, 14, 2, 0,
3795
- 9, 9, 19, 21, 1, 0, 56, 57, 2, 0, 57, 57, 60, 60, 2, 0, 54, 54, 57, 57, 1, 0, 47, 51, 1,
3796
- 0, 44, 46, 1, 0, 42, 43, 1, 0, 40, 41, 1, 0, 34, 39, 2, 0, 31, 31, 43, 43, 2, 0, 55, 55,
3797
- 57, 61, 2, 0, 15, 15, 56, 56, 2, 0, 56, 57, 60, 60, 1, 0, 32, 33, 741, 0, 134, 1, 0, 0,
3798
- 0, 2, 157, 1, 0, 0, 0, 4, 164, 1, 0, 0, 0, 6, 168, 1, 0, 0, 0, 8, 176, 1, 0, 0, 0, 10, 178,
3799
- 1, 0, 0, 0, 12, 188, 1, 0, 0, 0, 14, 192, 1, 0, 0, 0, 16, 204, 1, 0, 0, 0, 18, 208, 1, 0,
3800
- 0, 0, 20, 211, 1, 0, 0, 0, 22, 219, 1, 0, 0, 0, 24, 230, 1, 0, 0, 0, 26, 236, 1, 0, 0, 0,
3801
- 28, 238, 1, 0, 0, 0, 30, 240, 1, 0, 0, 0, 32, 243, 1, 0, 0, 0, 34, 252, 1, 0, 0, 0, 36, 274,
3802
- 1, 0, 0, 0, 38, 284, 1, 0, 0, 0, 40, 286, 1, 0, 0, 0, 42, 300, 1, 0, 0, 0, 44, 302, 1, 0,
3803
- 0, 0, 46, 310, 1, 0, 0, 0, 48, 312, 1, 0, 0, 0, 50, 316, 1, 0, 0, 0, 52, 321, 1, 0, 0, 0,
3804
- 54, 325, 1, 0, 0, 0, 56, 352, 1, 0, 0, 0, 58, 354, 1, 0, 0, 0, 60, 358, 1, 0, 0, 0, 62, 380,
3805
- 1, 0, 0, 0, 64, 405, 1, 0, 0, 0, 66, 407, 1, 0, 0, 0, 68, 410, 1, 0, 0, 0, 70, 414, 1, 0,
3806
- 0, 0, 72, 434, 1, 0, 0, 0, 74, 465, 1, 0, 0, 0, 76, 467, 1, 0, 0, 0, 78, 480, 1, 0, 0, 0,
3807
- 80, 488, 1, 0, 0, 0, 82, 491, 1, 0, 0, 0, 84, 500, 1, 0, 0, 0, 86, 506, 1, 0, 0, 0, 88, 509,
3808
- 1, 0, 0, 0, 90, 513, 1, 0, 0, 0, 92, 526, 1, 0, 0, 0, 94, 536, 1, 0, 0, 0, 96, 546, 1, 0,
3809
- 0, 0, 98, 560, 1, 0, 0, 0, 100, 596, 1, 0, 0, 0, 102, 598, 1, 0, 0, 0, 104, 602, 1, 0, 0,
3810
- 0, 106, 613, 1, 0, 0, 0, 108, 621, 1, 0, 0, 0, 110, 623, 1, 0, 0, 0, 112, 630, 1, 0, 0,
3811
- 0, 114, 646, 1, 0, 0, 0, 116, 651, 1, 0, 0, 0, 118, 654, 1, 0, 0, 0, 120, 658, 1, 0, 0,
3812
- 0, 122, 671, 1, 0, 0, 0, 124, 677, 1, 0, 0, 0, 126, 681, 1, 0, 0, 0, 128, 686, 1, 0, 0,
3813
- 0, 130, 133, 3, 116, 58, 0, 131, 133, 5, 64, 0, 0, 132, 130, 1, 0, 0, 0, 132, 131, 1,
3814
- 0, 0, 0, 133, 136, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 139, 1,
3815
- 0, 0, 0, 136, 134, 1, 0, 0, 0, 137, 140, 3, 2, 1, 0, 138, 140, 5, 64, 0, 0, 139, 137, 1,
3816
- 0, 0, 0, 139, 138, 1, 0, 0, 0, 140, 141, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 141, 142, 1,
3817
- 0, 0, 0, 142, 143, 1, 0, 0, 0, 143, 144, 5, 0, 0, 1, 144, 1, 1, 0, 0, 0, 145, 158, 3, 6,
3818
- 3, 0, 146, 158, 3, 50, 25, 0, 147, 158, 3, 52, 26, 0, 148, 158, 3, 58, 29, 0, 149, 158,
3819
- 3, 14, 7, 0, 150, 158, 3, 60, 30, 0, 151, 158, 3, 70, 35, 0, 152, 158, 3, 82, 41, 0, 153,
3820
- 158, 3, 116, 58, 0, 154, 158, 3, 76, 38, 0, 155, 158, 3, 118, 59, 0, 156, 158, 3, 4,
3821
- 2, 0, 157, 145, 1, 0, 0, 0, 157, 146, 1, 0, 0, 0, 157, 147, 1, 0, 0, 0, 157, 148, 1, 0,
3822
- 0, 0, 157, 149, 1, 0, 0, 0, 157, 150, 1, 0, 0, 0, 157, 151, 1, 0, 0, 0, 157, 152, 1, 0,
3823
- 0, 0, 157, 153, 1, 0, 0, 0, 157, 154, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 156, 1, 0,
3824
- 0, 0, 158, 3, 1, 0, 0, 0, 159, 165, 3, 120, 60, 0, 160, 165, 3, 126, 63, 0, 161, 165,
3825
- 3, 128, 64, 0, 162, 165, 5, 8, 0, 0, 163, 165, 5, 28, 0, 0, 164, 159, 1, 0, 0, 0, 164,
3826
- 160, 1, 0, 0, 0, 164, 161, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 164, 163, 1, 0, 0, 0, 165,
3827
- 5, 1, 0, 0, 0, 166, 169, 3, 8, 4, 0, 167, 169, 3, 12, 6, 0, 168, 166, 1, 0, 0, 0, 168, 167,
3828
- 1, 0, 0, 0, 169, 7, 1, 0, 0, 0, 170, 177, 3, 24, 12, 0, 171, 177, 3, 32, 16, 0, 172, 177,
3829
- 3, 30, 15, 0, 173, 177, 3, 40, 20, 0, 174, 177, 3, 110, 55, 0, 175, 177, 3, 114, 57,
3830
- 0, 176, 170, 1, 0, 0, 0, 176, 171, 1, 0, 0, 0, 176, 172, 1, 0, 0, 0, 176, 173, 1, 0, 0,
3831
- 0, 176, 174, 1, 0, 0, 0, 176, 175, 1, 0, 0, 0, 177, 9, 1, 0, 0, 0, 178, 179, 5, 64, 0, 0,
3832
- 179, 182, 5, 66, 0, 0, 180, 183, 5, 64, 0, 0, 181, 183, 3, 2, 1, 0, 182, 180, 1, 0, 0,
3833
- 0, 182, 181, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 182, 1, 0, 0, 0, 184, 185, 1, 0, 0,
3834
- 0, 185, 186, 1, 0, 0, 0, 186, 187, 5, 67, 0, 0, 187, 11, 1, 0, 0, 0, 188, 189, 7, 0, 0,
3835
- 0, 189, 190, 5, 1, 0, 0, 190, 191, 3, 10, 5, 0, 191, 13, 1, 0, 0, 0, 192, 193, 3, 76, 38,
3836
- 0, 193, 194, 5, 1, 0, 0, 194, 195, 5, 64, 0, 0, 195, 198, 5, 66, 0, 0, 196, 199, 5, 64,
3837
- 0, 0, 197, 199, 3, 16, 8, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 200, 1, 0,
3838
- 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 203, 5, 67,
3839
- 0, 0, 203, 15, 1, 0, 0, 0, 204, 205, 7, 1, 0, 0, 205, 206, 5, 1, 0, 0, 206, 207, 3, 68,
3840
- 34, 0, 207, 17, 1, 0, 0, 0, 208, 209, 5, 15, 0, 0, 209, 210, 3, 62, 31, 0, 210, 19, 1,
3841
- 0, 0, 0, 211, 212, 5, 56, 0, 0, 212, 215, 5, 1, 0, 0, 213, 216, 3, 68, 34, 0, 214, 216,
3842
- 5, 56, 0, 0, 215, 213, 1, 0, 0, 0, 215, 214, 1, 0, 0, 0, 216, 21, 1, 0, 0, 0, 217, 220,
3843
- 3, 62, 31, 0, 218, 220, 3, 50, 25, 0, 219, 217, 1, 0, 0, 0, 219, 218, 1, 0, 0, 0, 220,
3844
- 224, 1, 0, 0, 0, 221, 223, 3, 20, 10, 0, 222, 221, 1, 0, 0, 0, 223, 226, 1, 0, 0, 0, 224,
3845
- 222, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 227,
3846
- 229, 3, 18, 9, 0, 228, 227, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 23, 1, 0, 0, 0, 230,
3847
- 231, 5, 16, 0, 0, 231, 232, 3, 22, 11, 0, 232, 25, 1, 0, 0, 0, 233, 237, 3, 22, 11, 0,
3848
- 234, 237, 3, 18, 9, 0, 235, 237, 5, 19, 0, 0, 236, 233, 1, 0, 0, 0, 236, 234, 1, 0, 0,
3849
- 0, 236, 235, 1, 0, 0, 0, 237, 27, 1, 0, 0, 0, 238, 239, 7, 2, 0, 0, 239, 29, 1, 0, 0, 0,
3850
- 240, 241, 5, 17, 0, 0, 241, 242, 3, 26, 13, 0, 242, 31, 1, 0, 0, 0, 243, 244, 5, 18, 0,
3851
- 0, 244, 249, 3, 26, 13, 0, 245, 246, 5, 2, 0, 0, 246, 248, 3, 26, 13, 0, 247, 245, 1,
3852
- 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 33, 1, 0,
3853
- 0, 0, 251, 249, 1, 0, 0, 0, 252, 253, 5, 17, 0, 0, 253, 254, 3, 26, 13, 0, 254, 255, 5,
3854
- 18, 0, 0, 255, 260, 3, 26, 13, 0, 256, 257, 5, 2, 0, 0, 257, 259, 3, 26, 13, 0, 258, 256,
3855
- 1, 0, 0, 0, 259, 262, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 263,
3856
- 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 263, 264, 5, 1, 0, 0, 264, 265, 5, 64, 0, 0, 265, 268,
3857
- 5, 66, 0, 0, 266, 269, 5, 64, 0, 0, 267, 269, 3, 36, 18, 0, 268, 266, 1, 0, 0, 0, 268,
3858
- 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271,
3859
- 272, 1, 0, 0, 0, 272, 273, 5, 67, 0, 0, 273, 35, 1, 0, 0, 0, 274, 275, 3, 28, 14, 0, 275,
3860
- 276, 5, 1, 0, 0, 276, 281, 3, 38, 19, 0, 277, 278, 5, 2, 0, 0, 278, 280, 3, 38, 19, 0,
3861
- 279, 277, 1, 0, 0, 0, 280, 283, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0,
3862
- 282, 37, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 284, 285, 7, 3, 0, 0, 285, 39, 1, 0, 0, 0, 286,
3863
- 287, 3, 30, 15, 0, 287, 288, 5, 1, 0, 0, 288, 289, 5, 64, 0, 0, 289, 292, 5, 66, 0, 0,
3864
- 290, 293, 5, 64, 0, 0, 291, 293, 3, 42, 21, 0, 292, 290, 1, 0, 0, 0, 292, 291, 1, 0, 0,
3865
- 0, 293, 294, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 296, 1, 0, 0,
3866
- 0, 296, 297, 5, 67, 0, 0, 297, 41, 1, 0, 0, 0, 298, 301, 3, 2, 1, 0, 299, 301, 3, 44, 22,
3867
- 0, 300, 298, 1, 0, 0, 0, 300, 299, 1, 0, 0, 0, 301, 43, 1, 0, 0, 0, 302, 303, 3, 28, 14,
3868
- 0, 303, 306, 5, 1, 0, 0, 304, 307, 3, 46, 23, 0, 305, 307, 3, 48, 24, 0, 306, 304, 1,
3869
- 0, 0, 0, 306, 305, 1, 0, 0, 0, 307, 45, 1, 0, 0, 0, 308, 311, 3, 2, 1, 0, 309, 311, 5, 54,
3870
- 0, 0, 310, 308, 1, 0, 0, 0, 310, 309, 1, 0, 0, 0, 311, 47, 1, 0, 0, 0, 312, 313, 3, 10,
3871
- 5, 0, 313, 49, 1, 0, 0, 0, 314, 317, 3, 76, 38, 0, 315, 317, 3, 82, 41, 0, 316, 314, 1,
3872
- 0, 0, 0, 316, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 319, 5, 3, 0, 0, 319, 320, 3,
3873
- 62, 31, 0, 320, 51, 1, 0, 0, 0, 321, 322, 3, 76, 38, 0, 322, 323, 7, 4, 0, 0, 323, 324,
3874
- 3, 62, 31, 0, 324, 53, 1, 0, 0, 0, 325, 326, 5, 56, 0, 0, 326, 327, 5, 3, 0, 0, 327, 328,
3875
- 3, 62, 31, 0, 328, 55, 1, 0, 0, 0, 329, 334, 3, 62, 31, 0, 330, 331, 5, 2, 0, 0, 331, 333,
3876
- 3, 62, 31, 0, 332, 330, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335,
3877
- 1, 0, 0, 0, 335, 341, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 338, 5, 2, 0, 0, 338, 340,
3878
- 3, 54, 27, 0, 339, 337, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342,
3879
- 1, 0, 0, 0, 342, 353, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 349, 3, 54, 27, 0, 345, 346,
3880
- 5, 2, 0, 0, 346, 348, 3, 54, 27, 0, 347, 345, 1, 0, 0, 0, 348, 351, 1, 0, 0, 0, 349, 347,
3881
- 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 352, 329,
3882
- 1, 0, 0, 0, 352, 344, 1, 0, 0, 0, 353, 57, 1, 0, 0, 0, 354, 355, 3, 76, 38, 0, 355, 356,
3883
- 5, 3, 0, 0, 356, 357, 3, 62, 31, 0, 357, 59, 1, 0, 0, 0, 358, 359, 5, 4, 0, 0, 359, 360,
3884
- 5, 56, 0, 0, 360, 361, 5, 3, 0, 0, 361, 362, 3, 62, 31, 0, 362, 61, 1, 0, 0, 0, 363, 364,
3885
- 6, 31, -1, 0, 364, 365, 5, 52, 0, 0, 365, 366, 3, 62, 31, 0, 366, 367, 5, 53, 0, 0, 367,
3886
- 381, 1, 0, 0, 0, 368, 371, 3, 68, 34, 0, 369, 371, 3, 76, 38, 0, 370, 368, 1, 0, 0, 0,
3887
- 370, 369, 1, 0, 0, 0, 371, 381, 1, 0, 0, 0, 372, 373, 3, 66, 33, 0, 373, 374, 3, 62, 31,
3888
- 11, 374, 381, 1, 0, 0, 0, 375, 381, 3, 90, 45, 0, 376, 381, 3, 94, 47, 0, 377, 381, 3,
3889
- 96, 48, 0, 378, 381, 3, 82, 41, 0, 379, 381, 3, 112, 56, 0, 380, 363, 1, 0, 0, 0, 380,
3890
- 370, 1, 0, 0, 0, 380, 372, 1, 0, 0, 0, 380, 375, 1, 0, 0, 0, 380, 376, 1, 0, 0, 0, 380,
3891
- 377, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 379, 1, 0, 0, 0, 381, 402, 1, 0, 0, 0, 382,
3892
- 383, 10, 10, 0, 0, 383, 384, 7, 5, 0, 0, 384, 401, 3, 62, 31, 11, 385, 386, 10, 9, 0,
3893
- 0, 386, 387, 7, 6, 0, 0, 387, 401, 3, 62, 31, 10, 388, 389, 10, 8, 0, 0, 389, 390, 3,
3894
- 64, 32, 0, 390, 391, 3, 62, 31, 9, 391, 401, 1, 0, 0, 0, 392, 393, 10, 7, 0, 0, 393, 394,
3895
- 7, 7, 0, 0, 394, 401, 3, 62, 31, 8, 395, 396, 10, 1, 0, 0, 396, 397, 5, 5, 0, 0, 397, 398,
3896
- 3, 62, 31, 0, 398, 399, 5, 6, 0, 0, 399, 401, 1, 0, 0, 0, 400, 382, 1, 0, 0, 0, 400, 385,
3897
- 1, 0, 0, 0, 400, 388, 1, 0, 0, 0, 400, 392, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 401, 404,
3898
- 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 63, 1, 0, 0, 0, 404, 402, 1,
3899
- 0, 0, 0, 405, 406, 7, 8, 0, 0, 406, 65, 1, 0, 0, 0, 407, 408, 7, 9, 0, 0, 408, 67, 1, 0,
3900
- 0, 0, 409, 411, 5, 43, 0, 0, 410, 409, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 412, 1, 0,
3901
- 0, 0, 412, 413, 7, 10, 0, 0, 413, 69, 1, 0, 0, 0, 414, 415, 5, 23, 0, 0, 415, 416, 5, 56,
3902
- 0, 0, 416, 418, 5, 52, 0, 0, 417, 419, 3, 74, 37, 0, 418, 417, 1, 0, 0, 0, 418, 419, 1,
3903
- 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 421, 5, 53, 0, 0, 421, 422, 5, 1, 0, 0, 422, 423, 5,
3904
- 64, 0, 0, 423, 426, 5, 66, 0, 0, 424, 427, 5, 64, 0, 0, 425, 427, 3, 72, 36, 0, 426, 424,
3905
- 1, 0, 0, 0, 426, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 428, 429,
3906
- 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 431, 5, 67, 0, 0, 431, 71, 1, 0, 0, 0, 432, 435,
3907
- 3, 2, 1, 0, 433, 435, 3, 86, 43, 0, 434, 432, 1, 0, 0, 0, 434, 433, 1, 0, 0, 0, 435, 73,
3908
- 1, 0, 0, 0, 436, 441, 5, 56, 0, 0, 437, 438, 5, 2, 0, 0, 438, 440, 5, 56, 0, 0, 439, 437,
3909
- 1, 0, 0, 0, 440, 443, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 450,
3910
- 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 444, 445, 5, 2, 0, 0, 445, 446, 5, 56, 0, 0, 446, 447,
3911
- 5, 3, 0, 0, 447, 449, 3, 68, 34, 0, 448, 444, 1, 0, 0, 0, 449, 452, 1, 0, 0, 0, 450, 448,
3912
- 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 466, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 453, 454,
3913
- 5, 56, 0, 0, 454, 455, 5, 3, 0, 0, 455, 462, 3, 68, 34, 0, 456, 457, 5, 2, 0, 0, 457, 458,
3914
- 5, 56, 0, 0, 458, 459, 5, 3, 0, 0, 459, 461, 3, 68, 34, 0, 460, 456, 1, 0, 0, 0, 461, 464,
3915
- 1, 0, 0, 0, 462, 460, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 462,
3916
- 1, 0, 0, 0, 465, 436, 1, 0, 0, 0, 465, 453, 1, 0, 0, 0, 466, 75, 1, 0, 0, 0, 467, 471, 5,
3917
- 56, 0, 0, 468, 470, 3, 80, 40, 0, 469, 468, 1, 0, 0, 0, 470, 473, 1, 0, 0, 0, 471, 469,
3918
- 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 77, 1, 0, 0, 0, 473, 471, 1, 0, 0, 0, 474, 476, 5,
3919
- 52, 0, 0, 475, 477, 3, 56, 28, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 478,
3920
- 1, 0, 0, 0, 478, 481, 5, 53, 0, 0, 479, 481, 3, 80, 40, 0, 480, 474, 1, 0, 0, 0, 480, 479,
3921
- 1, 0, 0, 0, 481, 79, 1, 0, 0, 0, 482, 483, 5, 7, 0, 0, 483, 489, 5, 56, 0, 0, 484, 485,
3922
- 5, 5, 0, 0, 485, 486, 3, 62, 31, 0, 486, 487, 5, 6, 0, 0, 487, 489, 1, 0, 0, 0, 488, 482,
3923
- 1, 0, 0, 0, 488, 484, 1, 0, 0, 0, 489, 81, 1, 0, 0, 0, 490, 492, 3, 84, 42, 0, 491, 490,
3924
- 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 495, 5, 56, 0, 0, 494, 496,
3925
- 3, 78, 39, 0, 495, 494, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498,
3926
- 1, 0, 0, 0, 498, 83, 1, 0, 0, 0, 499, 501, 5, 42, 0, 0, 500, 499, 1, 0, 0, 0, 500, 501,
3927
- 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 504, 5, 44, 0, 0, 503, 505, 3, 62, 31, 0, 504, 503,
3928
- 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 85, 1, 0, 0, 0, 506, 507, 5, 22, 0, 0, 507, 508,
3929
- 3, 62, 31, 0, 508, 87, 1, 0, 0, 0, 509, 510, 3, 104, 52, 0, 510, 511, 5, 1, 0, 0, 511,
3930
- 512, 3, 10, 5, 0, 512, 89, 1, 0, 0, 0, 513, 514, 5, 10, 0, 0, 514, 515, 5, 11, 0, 0, 515,
3931
- 516, 5, 1, 0, 0, 516, 517, 5, 64, 0, 0, 517, 520, 5, 66, 0, 0, 518, 521, 5, 64, 0, 0, 519,
3932
- 521, 3, 102, 51, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522,
3933
- 520, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 525, 5, 67, 0, 0, 525,
3934
- 91, 1, 0, 0, 0, 526, 527, 5, 64, 0, 0, 527, 530, 5, 66, 0, 0, 528, 531, 5, 64, 0, 0, 529,
3935
- 531, 3, 100, 50, 0, 530, 528, 1, 0, 0, 0, 530, 529, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532,
3936
- 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 535, 5, 67, 0, 0, 535,
3937
- 93, 1, 0, 0, 0, 536, 537, 5, 10, 0, 0, 537, 541, 5, 12, 0, 0, 538, 539, 5, 52, 0, 0, 539,
3938
- 540, 5, 56, 0, 0, 540, 542, 5, 53, 0, 0, 541, 538, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542,
3939
- 543, 1, 0, 0, 0, 543, 544, 5, 1, 0, 0, 544, 545, 3, 92, 46, 0, 545, 95, 1, 0, 0, 0, 546,
3940
- 547, 5, 10, 0, 0, 547, 548, 5, 13, 0, 0, 548, 549, 5, 1, 0, 0, 549, 550, 5, 64, 0, 0, 550,
3941
- 554, 5, 66, 0, 0, 551, 555, 5, 64, 0, 0, 552, 555, 3, 102, 51, 0, 553, 555, 3, 88, 44,
3942
- 0, 554, 551, 1, 0, 0, 0, 554, 552, 1, 0, 0, 0, 554, 553, 1, 0, 0, 0, 555, 556, 1, 0, 0,
3943
- 0, 556, 554, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 559, 5, 67, 0,
3944
- 0, 559, 97, 1, 0, 0, 0, 560, 561, 5, 64, 0, 0, 561, 564, 5, 66, 0, 0, 562, 565, 5, 64,
3945
- 0, 0, 563, 565, 3, 102, 51, 0, 564, 562, 1, 0, 0, 0, 564, 563, 1, 0, 0, 0, 565, 566, 1,
3946
- 0, 0, 0, 566, 564, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 569, 5,
3947
- 67, 0, 0, 569, 99, 1, 0, 0, 0, 570, 572, 7, 11, 0, 0, 571, 573, 5, 1, 0, 0, 572, 571, 1,
3948
- 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 580, 1, 0, 0, 0, 574, 581, 3, 56, 28, 0, 575, 576,
3949
- 5, 52, 0, 0, 576, 577, 3, 56, 28, 0, 577, 578, 5, 53, 0, 0, 578, 581, 1, 0, 0, 0, 579,
3950
- 581, 3, 98, 49, 0, 580, 574, 1, 0, 0, 0, 580, 575, 1, 0, 0, 0, 580, 579, 1, 0, 0, 0, 581,
3951
- 597, 1, 0, 0, 0, 582, 583, 5, 25, 0, 0, 583, 588, 5, 56, 0, 0, 584, 585, 5, 2, 0, 0, 585,
3952
- 587, 5, 56, 0, 0, 586, 584, 1, 0, 0, 0, 587, 590, 1, 0, 0, 0, 588, 586, 1, 0, 0, 0, 588,
3953
- 589, 1, 0, 0, 0, 589, 591, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 591, 592, 5, 26, 0, 0, 592,
3954
- 593, 3, 62, 31, 0, 593, 594, 5, 1, 0, 0, 594, 595, 3, 92, 46, 0, 595, 597, 1, 0, 0, 0,
3955
- 596, 570, 1, 0, 0, 0, 596, 582, 1, 0, 0, 0, 597, 101, 1, 0, 0, 0, 598, 599, 3, 104, 52,
3956
- 0, 599, 600, 5, 1, 0, 0, 600, 601, 3, 106, 53, 0, 601, 103, 1, 0, 0, 0, 602, 603, 7, 12,
3957
- 0, 0, 603, 105, 1, 0, 0, 0, 604, 614, 3, 98, 49, 0, 605, 610, 3, 62, 31, 0, 606, 607,
3958
- 5, 2, 0, 0, 607, 609, 3, 62, 31, 0, 608, 606, 1, 0, 0, 0, 609, 612, 1, 0, 0, 0, 610, 608,
3959
- 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 613, 604,
3960
- 1, 0, 0, 0, 613, 605, 1, 0, 0, 0, 614, 107, 1, 0, 0, 0, 615, 618, 5, 56, 0, 0, 616, 619,
3961
- 5, 57, 0, 0, 617, 619, 3, 62, 31, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 622,
3962
- 1, 0, 0, 0, 620, 622, 5, 56, 0, 0, 621, 615, 1, 0, 0, 0, 621, 620, 1, 0, 0, 0, 622, 109,
3963
- 1, 0, 0, 0, 623, 627, 5, 14, 0, 0, 624, 626, 3, 108, 54, 0, 625, 624, 1, 0, 0, 0, 626,
3964
- 629, 1, 0, 0, 0, 627, 625, 1, 0, 0, 0, 627, 628, 1, 0, 0, 0, 628, 111, 1, 0, 0, 0, 629,
3965
- 627, 1, 0, 0, 0, 630, 641, 5, 5, 0, 0, 631, 636, 3, 62, 31, 0, 632, 633, 5, 2, 0, 0, 633,
3966
- 635, 3, 62, 31, 0, 634, 632, 1, 0, 0, 0, 635, 638, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 636,
3967
- 637, 1, 0, 0, 0, 637, 640, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 639, 631, 1, 0, 0, 0, 640,
3968
- 643, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 644, 1, 0, 0, 0, 643,
3969
- 641, 1, 0, 0, 0, 644, 645, 5, 6, 0, 0, 645, 113, 1, 0, 0, 0, 646, 649, 5, 19, 0, 0, 647,
3970
- 650, 5, 56, 0, 0, 648, 650, 3, 62, 31, 0, 649, 647, 1, 0, 0, 0, 649, 648, 1, 0, 0, 0, 650,
3971
- 115, 1, 0, 0, 0, 651, 652, 5, 24, 0, 0, 652, 653, 5, 56, 0, 0, 653, 117, 1, 0, 0, 0, 654,
3972
- 655, 7, 13, 0, 0, 655, 656, 5, 1, 0, 0, 656, 657, 3, 10, 5, 0, 657, 119, 1, 0, 0, 0, 658,
3973
- 659, 5, 29, 0, 0, 659, 660, 3, 62, 31, 0, 660, 661, 5, 1, 0, 0, 661, 665, 3, 10, 5, 0,
3974
- 662, 664, 3, 122, 61, 0, 663, 662, 1, 0, 0, 0, 664, 667, 1, 0, 0, 0, 665, 663, 1, 0, 0,
3975
- 0, 665, 666, 1, 0, 0, 0, 666, 669, 1, 0, 0, 0, 667, 665, 1, 0, 0, 0, 668, 670, 3, 124,
3976
- 62, 0, 669, 668, 1, 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 121, 1, 0, 0, 0, 671, 672, 5, 30,
3977
- 0, 0, 672, 673, 5, 29, 0, 0, 673, 674, 3, 62, 31, 0, 674, 675, 5, 1, 0, 0, 675, 676, 3,
3978
- 10, 5, 0, 676, 123, 1, 0, 0, 0, 677, 678, 5, 30, 0, 0, 678, 679, 5, 1, 0, 0, 679, 680,
3979
- 3, 10, 5, 0, 680, 125, 1, 0, 0, 0, 681, 682, 5, 27, 0, 0, 682, 683, 3, 62, 31, 0, 683,
3980
- 684, 5, 1, 0, 0, 684, 685, 3, 10, 5, 0, 685, 127, 1, 0, 0, 0, 686, 687, 5, 25, 0, 0, 687,
3981
- 692, 5, 56, 0, 0, 688, 689, 5, 2, 0, 0, 689, 691, 5, 56, 0, 0, 690, 688, 1, 0, 0, 0, 691,
3982
- 694, 1, 0, 0, 0, 692, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 695, 1, 0, 0, 0, 694,
3983
- 692, 1, 0, 0, 0, 695, 696, 5, 26, 0, 0, 696, 697, 3, 62, 31, 0, 697, 698, 5, 1, 0, 0, 698,
3984
- 699, 3, 10, 5, 0, 699, 129, 1, 0, 0, 0, 77, 132, 134, 139, 141, 157, 164, 168, 176,
3985
- 182, 184, 198, 200, 215, 219, 224, 228, 236, 249, 260, 268, 270, 281, 292, 294,
3986
- 300, 306, 310, 316, 334, 341, 349, 352, 370, 380, 400, 402, 410, 418, 426, 428,
3987
- 434, 441, 450, 462, 465, 471, 476, 480, 488, 491, 497, 500, 504, 520, 522, 530,
3988
- 532, 541, 554, 556, 564, 566, 572, 580, 588, 596, 610, 613, 618, 621, 627, 636,
3989
- 641, 649, 665, 669, 692
3826
+ 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,
3827
+ 2, 66, 7, 66, 1, 0, 1, 0, 5, 0, 137, 8, 0, 10, 0, 12, 0, 140, 9, 0, 1, 0, 1, 0, 4, 0, 144,
3828
+ 8, 0, 11, 0, 12, 0, 145, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3829
+ 1, 1, 1, 1, 1, 1, 1, 3, 1, 163, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 170, 8, 2, 1, 3, 1,
3830
+ 3, 3, 3, 174, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 182, 8, 4, 1, 5, 1, 5, 1, 5, 1,
3831
+ 5, 4, 5, 188, 8, 5, 11, 5, 12, 5, 189, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7,
3832
+ 1, 7, 1, 7, 1, 7, 4, 7, 204, 8, 7, 11, 7, 12, 7, 205, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1,
3833
+ 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 221, 8, 10, 1, 11, 1, 11, 3, 11, 225, 8,
3834
+ 11, 1, 11, 5, 11, 228, 8, 11, 10, 11, 12, 11, 231, 9, 11, 1, 11, 3, 11, 234, 8, 11, 1,
3835
+ 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 3, 13, 242, 8, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1,
3836
+ 15, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 253, 8, 16, 10, 16, 12, 16, 256, 9, 16, 1, 17, 1,
3837
+ 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 264, 8, 17, 10, 17, 12, 17, 267, 9, 17, 1, 17, 1,
3838
+ 17, 1, 17, 1, 17, 1, 17, 4, 17, 274, 8, 17, 11, 17, 12, 17, 275, 1, 17, 1, 17, 1, 18, 1,
3839
+ 18, 1, 18, 1, 18, 1, 18, 5, 18, 285, 8, 18, 10, 18, 12, 18, 288, 9, 18, 1, 19, 1, 19, 1,
3840
+ 20, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 297, 8, 20, 11, 20, 12, 20, 298, 1, 20, 1, 20, 1,
3841
+ 21, 1, 21, 3, 21, 305, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 310, 8, 22, 10, 22, 12, 22, 313,
3842
+ 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 319, 8, 23, 1, 24, 1, 24, 3, 24, 323, 8, 24, 1,
3843
+ 25, 1, 25, 1, 26, 1, 26, 3, 26, 329, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1,
3844
+ 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 5, 29, 345, 8, 29, 10, 29, 12, 29,
3845
+ 348, 9, 29, 1, 29, 1, 29, 5, 29, 352, 8, 29, 10, 29, 12, 29, 355, 9, 29, 1, 29, 1, 29,
3846
+ 1, 29, 5, 29, 360, 8, 29, 10, 29, 12, 29, 363, 9, 29, 3, 29, 365, 8, 29, 1, 30, 1, 30,
3847
+ 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
3848
+ 1, 32, 3, 32, 383, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32,
3849
+ 393, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
3850
+ 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 413, 8, 32, 10, 32, 12, 32, 416,
3851
+ 9, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 3, 35, 423, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36,
3852
+ 1, 36, 1, 36, 3, 36, 431, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36, 439, 8,
3853
+ 36, 11, 36, 12, 36, 440, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 447, 8, 37, 1, 38, 1, 38, 1,
3854
+ 38, 5, 38, 452, 8, 38, 10, 38, 12, 38, 455, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 461,
3855
+ 8, 38, 10, 38, 12, 38, 464, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38,
3856
+ 473, 8, 38, 10, 38, 12, 38, 476, 9, 38, 3, 38, 478, 8, 38, 1, 39, 1, 39, 5, 39, 482, 8,
3857
+ 39, 10, 39, 12, 39, 485, 9, 39, 1, 40, 1, 40, 3, 40, 489, 8, 40, 1, 40, 1, 40, 3, 40, 493,
3858
+ 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 501, 8, 41, 1, 42, 3, 42, 504, 8,
3859
+ 42, 1, 42, 1, 42, 4, 42, 508, 8, 42, 11, 42, 12, 42, 509, 1, 43, 3, 43, 513, 8, 43, 1,
3860
+ 43, 1, 43, 3, 43, 517, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1,
3861
+ 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 533, 8, 46, 11, 46, 12, 46, 534, 1, 46, 1,
3862
+ 46, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 543, 8, 47, 11, 47, 12, 47, 544, 1, 47, 1, 47, 1,
3863
+ 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 554, 8, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1,
3864
+ 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 567, 8, 49, 11, 49, 12, 49, 568, 1, 49, 1,
3865
+ 49, 1, 50, 1, 50, 1, 50, 1, 50, 4, 50, 577, 8, 50, 11, 50, 12, 50, 578, 1, 50, 1, 50, 1,
3866
+ 51, 1, 51, 3, 51, 585, 8, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 593, 8, 51,
3867
+ 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 599, 8, 51, 10, 51, 12, 51, 602, 9, 51, 1, 51, 1, 51,
3868
+ 1, 51, 1, 51, 1, 51, 3, 51, 609, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54,
3869
+ 1, 54, 1, 54, 1, 54, 5, 54, 621, 8, 54, 10, 54, 12, 54, 624, 9, 54, 3, 54, 626, 8, 54,
3870
+ 1, 55, 1, 55, 1, 55, 3, 55, 631, 8, 55, 1, 55, 3, 55, 634, 8, 55, 1, 56, 1, 56, 5, 56, 638,
3871
+ 8, 56, 10, 56, 12, 56, 641, 9, 56, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 647, 8, 57, 10, 57,
3872
+ 12, 57, 650, 9, 57, 5, 57, 652, 8, 57, 10, 57, 12, 57, 655, 9, 57, 1, 57, 1, 57, 1, 58,
3873
+ 1, 58, 1, 58, 3, 58, 662, 8, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61,
3874
+ 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 676, 8, 61, 10, 61, 12, 61, 679, 9, 61, 1, 61, 3, 61,
3875
+ 682, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64,
3876
+ 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 703, 8, 65, 10, 65, 12, 65,
3877
+ 706, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 0, 1, 64, 67,
3878
+ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44,
3879
+ 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88,
3880
+ 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124,
3881
+ 126, 128, 130, 132, 0, 14, 2, 0, 9, 9, 19, 21, 1, 0, 57, 58, 2, 0, 58, 58, 61, 61, 2, 0,
3882
+ 55, 55, 58, 58, 1, 0, 47, 51, 1, 0, 44, 46, 1, 0, 42, 43, 1, 0, 40, 41, 1, 0, 34, 39, 2,
3883
+ 0, 31, 31, 43, 43, 2, 0, 56, 56, 58, 62, 2, 0, 15, 15, 57, 57, 2, 0, 57, 58, 61, 61, 1,
3884
+ 0, 32, 33, 756, 0, 138, 1, 0, 0, 0, 2, 162, 1, 0, 0, 0, 4, 169, 1, 0, 0, 0, 6, 173, 1, 0,
3885
+ 0, 0, 8, 181, 1, 0, 0, 0, 10, 183, 1, 0, 0, 0, 12, 193, 1, 0, 0, 0, 14, 197, 1, 0, 0, 0, 16,
3886
+ 209, 1, 0, 0, 0, 18, 213, 1, 0, 0, 0, 20, 216, 1, 0, 0, 0, 22, 224, 1, 0, 0, 0, 24, 235,
3887
+ 1, 0, 0, 0, 26, 241, 1, 0, 0, 0, 28, 243, 1, 0, 0, 0, 30, 245, 1, 0, 0, 0, 32, 248, 1, 0,
3888
+ 0, 0, 34, 257, 1, 0, 0, 0, 36, 279, 1, 0, 0, 0, 38, 289, 1, 0, 0, 0, 40, 291, 1, 0, 0, 0,
3889
+ 42, 304, 1, 0, 0, 0, 44, 306, 1, 0, 0, 0, 46, 314, 1, 0, 0, 0, 48, 322, 1, 0, 0, 0, 50, 324,
3890
+ 1, 0, 0, 0, 52, 328, 1, 0, 0, 0, 54, 333, 1, 0, 0, 0, 56, 337, 1, 0, 0, 0, 58, 364, 1, 0,
3891
+ 0, 0, 60, 366, 1, 0, 0, 0, 62, 370, 1, 0, 0, 0, 64, 392, 1, 0, 0, 0, 66, 417, 1, 0, 0, 0,
3892
+ 68, 419, 1, 0, 0, 0, 70, 422, 1, 0, 0, 0, 72, 426, 1, 0, 0, 0, 74, 446, 1, 0, 0, 0, 76, 477,
3893
+ 1, 0, 0, 0, 78, 479, 1, 0, 0, 0, 80, 492, 1, 0, 0, 0, 82, 500, 1, 0, 0, 0, 84, 503, 1, 0,
3894
+ 0, 0, 86, 512, 1, 0, 0, 0, 88, 518, 1, 0, 0, 0, 90, 521, 1, 0, 0, 0, 92, 525, 1, 0, 0, 0,
3895
+ 94, 538, 1, 0, 0, 0, 96, 548, 1, 0, 0, 0, 98, 558, 1, 0, 0, 0, 100, 572, 1, 0, 0, 0, 102,
3896
+ 608, 1, 0, 0, 0, 104, 610, 1, 0, 0, 0, 106, 614, 1, 0, 0, 0, 108, 625, 1, 0, 0, 0, 110,
3897
+ 633, 1, 0, 0, 0, 112, 635, 1, 0, 0, 0, 114, 642, 1, 0, 0, 0, 116, 658, 1, 0, 0, 0, 118,
3898
+ 663, 1, 0, 0, 0, 120, 666, 1, 0, 0, 0, 122, 670, 1, 0, 0, 0, 124, 683, 1, 0, 0, 0, 126,
3899
+ 689, 1, 0, 0, 0, 128, 693, 1, 0, 0, 0, 130, 698, 1, 0, 0, 0, 132, 712, 1, 0, 0, 0, 134,
3900
+ 137, 3, 118, 59, 0, 135, 137, 5, 65, 0, 0, 136, 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0,
3901
+ 137, 140, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 143, 1, 0, 0, 0,
3902
+ 140, 138, 1, 0, 0, 0, 141, 144, 3, 2, 1, 0, 142, 144, 5, 65, 0, 0, 143, 141, 1, 0, 0, 0,
3903
+ 143, 142, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0,
3904
+ 146, 147, 1, 0, 0, 0, 147, 148, 5, 0, 0, 1, 148, 1, 1, 0, 0, 0, 149, 163, 3, 6, 3, 0, 150,
3905
+ 163, 3, 52, 26, 0, 151, 163, 3, 54, 27, 0, 152, 163, 3, 60, 30, 0, 153, 163, 3, 14, 7,
3906
+ 0, 154, 163, 3, 62, 31, 0, 155, 163, 3, 72, 36, 0, 156, 163, 3, 84, 42, 0, 157, 163,
3907
+ 3, 118, 59, 0, 158, 163, 3, 78, 39, 0, 159, 163, 3, 120, 60, 0, 160, 163, 3, 4, 2, 0,
3908
+ 161, 163, 3, 132, 66, 0, 162, 149, 1, 0, 0, 0, 162, 150, 1, 0, 0, 0, 162, 151, 1, 0, 0,
3909
+ 0, 162, 152, 1, 0, 0, 0, 162, 153, 1, 0, 0, 0, 162, 154, 1, 0, 0, 0, 162, 155, 1, 0, 0,
3910
+ 0, 162, 156, 1, 0, 0, 0, 162, 157, 1, 0, 0, 0, 162, 158, 1, 0, 0, 0, 162, 159, 1, 0, 0,
3911
+ 0, 162, 160, 1, 0, 0, 0, 162, 161, 1, 0, 0, 0, 163, 3, 1, 0, 0, 0, 164, 170, 3, 122, 61,
3912
+ 0, 165, 170, 3, 128, 64, 0, 166, 170, 3, 130, 65, 0, 167, 170, 5, 8, 0, 0, 168, 170,
3913
+ 5, 28, 0, 0, 169, 164, 1, 0, 0, 0, 169, 165, 1, 0, 0, 0, 169, 166, 1, 0, 0, 0, 169, 167,
3914
+ 1, 0, 0, 0, 169, 168, 1, 0, 0, 0, 170, 5, 1, 0, 0, 0, 171, 174, 3, 8, 4, 0, 172, 174, 3,
3915
+ 12, 6, 0, 173, 171, 1, 0, 0, 0, 173, 172, 1, 0, 0, 0, 174, 7, 1, 0, 0, 0, 175, 182, 3, 24,
3916
+ 12, 0, 176, 182, 3, 32, 16, 0, 177, 182, 3, 30, 15, 0, 178, 182, 3, 40, 20, 0, 179, 182,
3917
+ 3, 112, 56, 0, 180, 182, 3, 116, 58, 0, 181, 175, 1, 0, 0, 0, 181, 176, 1, 0, 0, 0, 181,
3918
+ 177, 1, 0, 0, 0, 181, 178, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 180, 1, 0, 0, 0, 182,
3919
+ 9, 1, 0, 0, 0, 183, 184, 5, 65, 0, 0, 184, 187, 5, 67, 0, 0, 185, 188, 5, 65, 0, 0, 186,
3920
+ 188, 3, 2, 1, 0, 187, 185, 1, 0, 0, 0, 187, 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189,
3921
+ 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 5, 68, 0, 0, 192,
3922
+ 11, 1, 0, 0, 0, 193, 194, 7, 0, 0, 0, 194, 195, 5, 1, 0, 0, 195, 196, 3, 10, 5, 0, 196,
3923
+ 13, 1, 0, 0, 0, 197, 198, 3, 78, 39, 0, 198, 199, 5, 1, 0, 0, 199, 200, 5, 65, 0, 0, 200,
3924
+ 203, 5, 67, 0, 0, 201, 204, 5, 65, 0, 0, 202, 204, 3, 16, 8, 0, 203, 201, 1, 0, 0, 0, 203,
3925
+ 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206,
3926
+ 207, 1, 0, 0, 0, 207, 208, 5, 68, 0, 0, 208, 15, 1, 0, 0, 0, 209, 210, 7, 1, 0, 0, 210,
3927
+ 211, 5, 1, 0, 0, 211, 212, 3, 70, 35, 0, 212, 17, 1, 0, 0, 0, 213, 214, 5, 15, 0, 0, 214,
3928
+ 215, 3, 64, 32, 0, 215, 19, 1, 0, 0, 0, 216, 217, 5, 57, 0, 0, 217, 220, 5, 1, 0, 0, 218,
3929
+ 221, 3, 70, 35, 0, 219, 221, 5, 57, 0, 0, 220, 218, 1, 0, 0, 0, 220, 219, 1, 0, 0, 0, 221,
3930
+ 21, 1, 0, 0, 0, 222, 225, 3, 64, 32, 0, 223, 225, 3, 52, 26, 0, 224, 222, 1, 0, 0, 0, 224,
3931
+ 223, 1, 0, 0, 0, 225, 229, 1, 0, 0, 0, 226, 228, 3, 20, 10, 0, 227, 226, 1, 0, 0, 0, 228,
3932
+ 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 233, 1, 0, 0, 0, 231,
3933
+ 229, 1, 0, 0, 0, 232, 234, 3, 18, 9, 0, 233, 232, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234,
3934
+ 23, 1, 0, 0, 0, 235, 236, 5, 16, 0, 0, 236, 237, 3, 22, 11, 0, 237, 25, 1, 0, 0, 0, 238,
3935
+ 242, 3, 22, 11, 0, 239, 242, 3, 18, 9, 0, 240, 242, 5, 19, 0, 0, 241, 238, 1, 0, 0, 0,
3936
+ 241, 239, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 27, 1, 0, 0, 0, 243, 244, 7, 2, 0, 0, 244,
3937
+ 29, 1, 0, 0, 0, 245, 246, 5, 17, 0, 0, 246, 247, 3, 26, 13, 0, 247, 31, 1, 0, 0, 0, 248,
3938
+ 249, 5, 18, 0, 0, 249, 254, 3, 26, 13, 0, 250, 251, 5, 2, 0, 0, 251, 253, 3, 26, 13, 0,
3939
+ 252, 250, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0,
3940
+ 255, 33, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 258, 5, 17, 0, 0, 258, 259, 3, 26, 13,
3941
+ 0, 259, 260, 5, 18, 0, 0, 260, 265, 3, 26, 13, 0, 261, 262, 5, 2, 0, 0, 262, 264, 3, 26,
3942
+ 13, 0, 263, 261, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 265, 266, 1, 0,
3943
+ 0, 0, 266, 268, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, 269, 5, 1, 0, 0, 269, 270, 5, 65,
3944
+ 0, 0, 270, 273, 5, 67, 0, 0, 271, 274, 5, 65, 0, 0, 272, 274, 3, 36, 18, 0, 273, 271,
3945
+ 1, 0, 0, 0, 273, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276,
3946
+ 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 278, 5, 68, 0, 0, 278, 35, 1, 0, 0, 0, 279, 280,
3947
+ 3, 28, 14, 0, 280, 281, 5, 1, 0, 0, 281, 286, 3, 38, 19, 0, 282, 283, 5, 2, 0, 0, 283,
3948
+ 285, 3, 38, 19, 0, 284, 282, 1, 0, 0, 0, 285, 288, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286,
3949
+ 287, 1, 0, 0, 0, 287, 37, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 289, 290, 7, 3, 0, 0, 290, 39,
3950
+ 1, 0, 0, 0, 291, 292, 3, 44, 22, 0, 292, 293, 5, 65, 0, 0, 293, 296, 5, 67, 0, 0, 294,
3951
+ 297, 5, 65, 0, 0, 295, 297, 3, 42, 21, 0, 296, 294, 1, 0, 0, 0, 296, 295, 1, 0, 0, 0, 297,
3952
+ 298, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300,
3953
+ 301, 5, 68, 0, 0, 301, 41, 1, 0, 0, 0, 302, 305, 3, 2, 1, 0, 303, 305, 3, 46, 23, 0, 304,
3954
+ 302, 1, 0, 0, 0, 304, 303, 1, 0, 0, 0, 305, 43, 1, 0, 0, 0, 306, 307, 3, 30, 15, 0, 307,
3955
+ 311, 5, 1, 0, 0, 308, 310, 3, 132, 66, 0, 309, 308, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311,
3956
+ 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 45, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 315,
3957
+ 3, 28, 14, 0, 315, 318, 5, 1, 0, 0, 316, 319, 3, 48, 24, 0, 317, 319, 3, 50, 25, 0, 318,
3958
+ 316, 1, 0, 0, 0, 318, 317, 1, 0, 0, 0, 319, 47, 1, 0, 0, 0, 320, 323, 3, 2, 1, 0, 321, 323,
3959
+ 5, 55, 0, 0, 322, 320, 1, 0, 0, 0, 322, 321, 1, 0, 0, 0, 323, 49, 1, 0, 0, 0, 324, 325,
3960
+ 3, 10, 5, 0, 325, 51, 1, 0, 0, 0, 326, 329, 3, 78, 39, 0, 327, 329, 3, 84, 42, 0, 328,
3961
+ 326, 1, 0, 0, 0, 328, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 331, 5, 3, 0, 0, 331,
3962
+ 332, 3, 64, 32, 0, 332, 53, 1, 0, 0, 0, 333, 334, 3, 78, 39, 0, 334, 335, 7, 4, 0, 0, 335,
3963
+ 336, 3, 64, 32, 0, 336, 55, 1, 0, 0, 0, 337, 338, 5, 57, 0, 0, 338, 339, 5, 3, 0, 0, 339,
3964
+ 340, 3, 64, 32, 0, 340, 57, 1, 0, 0, 0, 341, 346, 3, 64, 32, 0, 342, 343, 5, 2, 0, 0, 343,
3965
+ 345, 3, 64, 32, 0, 344, 342, 1, 0, 0, 0, 345, 348, 1, 0, 0, 0, 346, 344, 1, 0, 0, 0, 346,
3966
+ 347, 1, 0, 0, 0, 347, 353, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 349, 350, 5, 2, 0, 0, 350,
3967
+ 352, 3, 56, 28, 0, 351, 349, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 353,
3968
+ 354, 1, 0, 0, 0, 354, 365, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 356, 361, 3, 56, 28, 0, 357,
3969
+ 358, 5, 2, 0, 0, 358, 360, 3, 56, 28, 0, 359, 357, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361,
3970
+ 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 364,
3971
+ 341, 1, 0, 0, 0, 364, 356, 1, 0, 0, 0, 365, 59, 1, 0, 0, 0, 366, 367, 3, 78, 39, 0, 367,
3972
+ 368, 5, 3, 0, 0, 368, 369, 3, 64, 32, 0, 369, 61, 1, 0, 0, 0, 370, 371, 5, 4, 0, 0, 371,
3973
+ 372, 5, 57, 0, 0, 372, 373, 5, 3, 0, 0, 373, 374, 3, 64, 32, 0, 374, 63, 1, 0, 0, 0, 375,
3974
+ 376, 6, 32, -1, 0, 376, 377, 5, 53, 0, 0, 377, 378, 3, 64, 32, 0, 378, 379, 5, 54, 0,
3975
+ 0, 379, 393, 1, 0, 0, 0, 380, 383, 3, 70, 35, 0, 381, 383, 3, 78, 39, 0, 382, 380, 1,
3976
+ 0, 0, 0, 382, 381, 1, 0, 0, 0, 383, 393, 1, 0, 0, 0, 384, 385, 3, 68, 34, 0, 385, 386,
3977
+ 3, 64, 32, 11, 386, 393, 1, 0, 0, 0, 387, 393, 3, 92, 46, 0, 388, 393, 3, 96, 48, 0, 389,
3978
+ 393, 3, 98, 49, 0, 390, 393, 3, 84, 42, 0, 391, 393, 3, 114, 57, 0, 392, 375, 1, 0, 0,
3979
+ 0, 392, 382, 1, 0, 0, 0, 392, 384, 1, 0, 0, 0, 392, 387, 1, 0, 0, 0, 392, 388, 1, 0, 0,
3980
+ 0, 392, 389, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 392, 391, 1, 0, 0, 0, 393, 414, 1, 0, 0,
3981
+ 0, 394, 395, 10, 10, 0, 0, 395, 396, 7, 5, 0, 0, 396, 413, 3, 64, 32, 11, 397, 398, 10,
3982
+ 9, 0, 0, 398, 399, 7, 6, 0, 0, 399, 413, 3, 64, 32, 10, 400, 401, 10, 8, 0, 0, 401, 402,
3983
+ 3, 66, 33, 0, 402, 403, 3, 64, 32, 9, 403, 413, 1, 0, 0, 0, 404, 405, 10, 7, 0, 0, 405,
3984
+ 406, 7, 7, 0, 0, 406, 413, 3, 64, 32, 8, 407, 408, 10, 1, 0, 0, 408, 409, 5, 5, 0, 0, 409,
3985
+ 410, 3, 64, 32, 0, 410, 411, 5, 6, 0, 0, 411, 413, 1, 0, 0, 0, 412, 394, 1, 0, 0, 0, 412,
3986
+ 397, 1, 0, 0, 0, 412, 400, 1, 0, 0, 0, 412, 404, 1, 0, 0, 0, 412, 407, 1, 0, 0, 0, 413,
3987
+ 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 65, 1, 0, 0, 0, 416, 414,
3988
+ 1, 0, 0, 0, 417, 418, 7, 8, 0, 0, 418, 67, 1, 0, 0, 0, 419, 420, 7, 9, 0, 0, 420, 69, 1,
3989
+ 0, 0, 0, 421, 423, 5, 43, 0, 0, 422, 421, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 1,
3990
+ 0, 0, 0, 424, 425, 7, 10, 0, 0, 425, 71, 1, 0, 0, 0, 426, 427, 5, 23, 0, 0, 427, 428, 5,
3991
+ 57, 0, 0, 428, 430, 5, 53, 0, 0, 429, 431, 3, 76, 38, 0, 430, 429, 1, 0, 0, 0, 430, 431,
3992
+ 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 5, 54, 0, 0, 433, 434, 5, 1, 0, 0, 434, 435,
3993
+ 5, 65, 0, 0, 435, 438, 5, 67, 0, 0, 436, 439, 5, 65, 0, 0, 437, 439, 3, 74, 37, 0, 438,
3994
+ 436, 1, 0, 0, 0, 438, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 440,
3995
+ 441, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 443, 5, 68, 0, 0, 443, 73, 1, 0, 0, 0, 444,
3996
+ 447, 3, 2, 1, 0, 445, 447, 3, 88, 44, 0, 446, 444, 1, 0, 0, 0, 446, 445, 1, 0, 0, 0, 447,
3997
+ 75, 1, 0, 0, 0, 448, 453, 5, 57, 0, 0, 449, 450, 5, 2, 0, 0, 450, 452, 5, 57, 0, 0, 451,
3998
+ 449, 1, 0, 0, 0, 452, 455, 1, 0, 0, 0, 453, 451, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454,
3999
+ 462, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 456, 457, 5, 2, 0, 0, 457, 458, 5, 57, 0, 0, 458,
4000
+ 459, 5, 3, 0, 0, 459, 461, 3, 70, 35, 0, 460, 456, 1, 0, 0, 0, 461, 464, 1, 0, 0, 0, 462,
4001
+ 460, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 478, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 465,
4002
+ 466, 5, 57, 0, 0, 466, 467, 5, 3, 0, 0, 467, 474, 3, 70, 35, 0, 468, 469, 5, 2, 0, 0, 469,
4003
+ 470, 5, 57, 0, 0, 470, 471, 5, 3, 0, 0, 471, 473, 3, 70, 35, 0, 472, 468, 1, 0, 0, 0, 473,
4004
+ 476, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 478, 1, 0, 0, 0, 476,
4005
+ 474, 1, 0, 0, 0, 477, 448, 1, 0, 0, 0, 477, 465, 1, 0, 0, 0, 478, 77, 1, 0, 0, 0, 479, 483,
4006
+ 5, 57, 0, 0, 480, 482, 3, 82, 41, 0, 481, 480, 1, 0, 0, 0, 482, 485, 1, 0, 0, 0, 483, 481,
4007
+ 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 79, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 486, 488, 5,
4008
+ 53, 0, 0, 487, 489, 3, 58, 29, 0, 488, 487, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 490,
4009
+ 1, 0, 0, 0, 490, 493, 5, 54, 0, 0, 491, 493, 3, 82, 41, 0, 492, 486, 1, 0, 0, 0, 492, 491,
4010
+ 1, 0, 0, 0, 493, 81, 1, 0, 0, 0, 494, 495, 5, 7, 0, 0, 495, 501, 5, 57, 0, 0, 496, 497,
4011
+ 5, 5, 0, 0, 497, 498, 3, 64, 32, 0, 498, 499, 5, 6, 0, 0, 499, 501, 1, 0, 0, 0, 500, 494,
4012
+ 1, 0, 0, 0, 500, 496, 1, 0, 0, 0, 501, 83, 1, 0, 0, 0, 502, 504, 3, 86, 43, 0, 503, 502,
4013
+ 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 507, 5, 57, 0, 0, 506, 508,
4014
+ 3, 80, 40, 0, 507, 506, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510,
4015
+ 1, 0, 0, 0, 510, 85, 1, 0, 0, 0, 511, 513, 5, 42, 0, 0, 512, 511, 1, 0, 0, 0, 512, 513,
4016
+ 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 516, 5, 44, 0, 0, 515, 517, 3, 64, 32, 0, 516, 515,
4017
+ 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 87, 1, 0, 0, 0, 518, 519, 5, 22, 0, 0, 519, 520,
4018
+ 3, 64, 32, 0, 520, 89, 1, 0, 0, 0, 521, 522, 3, 106, 53, 0, 522, 523, 5, 1, 0, 0, 523,
4019
+ 524, 3, 10, 5, 0, 524, 91, 1, 0, 0, 0, 525, 526, 5, 10, 0, 0, 526, 527, 5, 11, 0, 0, 527,
4020
+ 528, 5, 1, 0, 0, 528, 529, 5, 65, 0, 0, 529, 532, 5, 67, 0, 0, 530, 533, 5, 65, 0, 0, 531,
4021
+ 533, 3, 104, 52, 0, 532, 530, 1, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534,
4022
+ 532, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 537, 5, 68, 0, 0, 537,
4023
+ 93, 1, 0, 0, 0, 538, 539, 5, 65, 0, 0, 539, 542, 5, 67, 0, 0, 540, 543, 5, 65, 0, 0, 541,
4024
+ 543, 3, 102, 51, 0, 542, 540, 1, 0, 0, 0, 542, 541, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544,
4025
+ 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 5, 68, 0, 0, 547,
4026
+ 95, 1, 0, 0, 0, 548, 549, 5, 10, 0, 0, 549, 553, 5, 12, 0, 0, 550, 551, 5, 53, 0, 0, 551,
4027
+ 552, 5, 57, 0, 0, 552, 554, 5, 54, 0, 0, 553, 550, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554,
4028
+ 555, 1, 0, 0, 0, 555, 556, 5, 1, 0, 0, 556, 557, 3, 94, 47, 0, 557, 97, 1, 0, 0, 0, 558,
4029
+ 559, 5, 10, 0, 0, 559, 560, 5, 13, 0, 0, 560, 561, 5, 1, 0, 0, 561, 562, 5, 65, 0, 0, 562,
4030
+ 566, 5, 67, 0, 0, 563, 567, 5, 65, 0, 0, 564, 567, 3, 104, 52, 0, 565, 567, 3, 90, 45,
4031
+ 0, 566, 563, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 566, 565, 1, 0, 0, 0, 567, 568, 1, 0, 0,
4032
+ 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 5, 68, 0,
4033
+ 0, 571, 99, 1, 0, 0, 0, 572, 573, 5, 65, 0, 0, 573, 576, 5, 67, 0, 0, 574, 577, 5, 65,
4034
+ 0, 0, 575, 577, 3, 104, 52, 0, 576, 574, 1, 0, 0, 0, 576, 575, 1, 0, 0, 0, 577, 578, 1,
4035
+ 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 5,
4036
+ 68, 0, 0, 581, 101, 1, 0, 0, 0, 582, 584, 7, 11, 0, 0, 583, 585, 5, 1, 0, 0, 584, 583,
4037
+ 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 592, 1, 0, 0, 0, 586, 593, 3, 58, 29, 0, 587, 588,
4038
+ 5, 53, 0, 0, 588, 589, 3, 58, 29, 0, 589, 590, 5, 54, 0, 0, 590, 593, 1, 0, 0, 0, 591,
4039
+ 593, 3, 100, 50, 0, 592, 586, 1, 0, 0, 0, 592, 587, 1, 0, 0, 0, 592, 591, 1, 0, 0, 0, 593,
4040
+ 609, 1, 0, 0, 0, 594, 595, 5, 25, 0, 0, 595, 600, 5, 57, 0, 0, 596, 597, 5, 2, 0, 0, 597,
4041
+ 599, 5, 57, 0, 0, 598, 596, 1, 0, 0, 0, 599, 602, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 600,
4042
+ 601, 1, 0, 0, 0, 601, 603, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 603, 604, 5, 26, 0, 0, 604,
4043
+ 605, 3, 64, 32, 0, 605, 606, 5, 1, 0, 0, 606, 607, 3, 94, 47, 0, 607, 609, 1, 0, 0, 0,
4044
+ 608, 582, 1, 0, 0, 0, 608, 594, 1, 0, 0, 0, 609, 103, 1, 0, 0, 0, 610, 611, 3, 106, 53,
4045
+ 0, 611, 612, 5, 1, 0, 0, 612, 613, 3, 108, 54, 0, 613, 105, 1, 0, 0, 0, 614, 615, 7, 12,
4046
+ 0, 0, 615, 107, 1, 0, 0, 0, 616, 626, 3, 100, 50, 0, 617, 622, 3, 64, 32, 0, 618, 619,
4047
+ 5, 2, 0, 0, 619, 621, 3, 64, 32, 0, 620, 618, 1, 0, 0, 0, 621, 624, 1, 0, 0, 0, 622, 620,
4048
+ 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 625, 616,
4049
+ 1, 0, 0, 0, 625, 617, 1, 0, 0, 0, 626, 109, 1, 0, 0, 0, 627, 630, 5, 57, 0, 0, 628, 631,
4050
+ 5, 58, 0, 0, 629, 631, 3, 64, 32, 0, 630, 628, 1, 0, 0, 0, 630, 629, 1, 0, 0, 0, 631, 634,
4051
+ 1, 0, 0, 0, 632, 634, 5, 57, 0, 0, 633, 627, 1, 0, 0, 0, 633, 632, 1, 0, 0, 0, 634, 111,
4052
+ 1, 0, 0, 0, 635, 639, 5, 14, 0, 0, 636, 638, 3, 110, 55, 0, 637, 636, 1, 0, 0, 0, 638,
4053
+ 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 113, 1, 0, 0, 0, 641,
4054
+ 639, 1, 0, 0, 0, 642, 653, 5, 5, 0, 0, 643, 648, 3, 64, 32, 0, 644, 645, 5, 2, 0, 0, 645,
4055
+ 647, 3, 64, 32, 0, 646, 644, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 648,
4056
+ 649, 1, 0, 0, 0, 649, 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 643, 1, 0, 0, 0, 652,
4057
+ 655, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 656, 1, 0, 0, 0, 655,
4058
+ 653, 1, 0, 0, 0, 656, 657, 5, 6, 0, 0, 657, 115, 1, 0, 0, 0, 658, 661, 5, 19, 0, 0, 659,
4059
+ 662, 5, 57, 0, 0, 660, 662, 3, 64, 32, 0, 661, 659, 1, 0, 0, 0, 661, 660, 1, 0, 0, 0, 662,
4060
+ 117, 1, 0, 0, 0, 663, 664, 5, 24, 0, 0, 664, 665, 5, 57, 0, 0, 665, 119, 1, 0, 0, 0, 666,
4061
+ 667, 7, 13, 0, 0, 667, 668, 5, 1, 0, 0, 668, 669, 3, 10, 5, 0, 669, 121, 1, 0, 0, 0, 670,
4062
+ 671, 5, 29, 0, 0, 671, 672, 3, 64, 32, 0, 672, 673, 5, 1, 0, 0, 673, 677, 3, 10, 5, 0,
4063
+ 674, 676, 3, 124, 62, 0, 675, 674, 1, 0, 0, 0, 676, 679, 1, 0, 0, 0, 677, 675, 1, 0, 0,
4064
+ 0, 677, 678, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 680, 682, 3, 126,
4065
+ 63, 0, 681, 680, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 123, 1, 0, 0, 0, 683, 684, 5, 30,
4066
+ 0, 0, 684, 685, 5, 29, 0, 0, 685, 686, 3, 64, 32, 0, 686, 687, 5, 1, 0, 0, 687, 688, 3,
4067
+ 10, 5, 0, 688, 125, 1, 0, 0, 0, 689, 690, 5, 30, 0, 0, 690, 691, 5, 1, 0, 0, 691, 692,
4068
+ 3, 10, 5, 0, 692, 127, 1, 0, 0, 0, 693, 694, 5, 27, 0, 0, 694, 695, 3, 64, 32, 0, 695,
4069
+ 696, 5, 1, 0, 0, 696, 697, 3, 10, 5, 0, 697, 129, 1, 0, 0, 0, 698, 699, 5, 25, 0, 0, 699,
4070
+ 704, 5, 57, 0, 0, 700, 701, 5, 2, 0, 0, 701, 703, 5, 57, 0, 0, 702, 700, 1, 0, 0, 0, 703,
4071
+ 706, 1, 0, 0, 0, 704, 702, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 707, 1, 0, 0, 0, 706,
4072
+ 704, 1, 0, 0, 0, 707, 708, 5, 26, 0, 0, 708, 709, 3, 64, 32, 0, 709, 710, 5, 1, 0, 0, 710,
4073
+ 711, 3, 10, 5, 0, 711, 131, 1, 0, 0, 0, 712, 713, 5, 52, 0, 0, 713, 714, 5, 57, 0, 0, 714,
4074
+ 133, 1, 0, 0, 0, 78, 136, 138, 143, 145, 162, 169, 173, 181, 187, 189, 203, 205, 220,
4075
+ 224, 229, 233, 241, 254, 265, 273, 275, 286, 296, 298, 304, 311, 318, 322, 328,
4076
+ 346, 353, 361, 364, 382, 392, 412, 414, 422, 430, 438, 440, 446, 453, 462, 474,
4077
+ 477, 483, 488, 492, 500, 503, 509, 512, 516, 532, 534, 542, 544, 553, 566, 568,
4078
+ 576, 578, 584, 592, 600, 608, 622, 625, 630, 633, 639, 648, 653, 661, 677, 681,
4079
+ 704
3990
4080
  ];
3991
4081
  static __ATN;
3992
4082
  static get _ATN() {
@@ -4080,6 +4170,9 @@ export class ExpressionContext extends antlr.ParserRuleContext {
4080
4170
  flow_expressions() {
4081
4171
  return this.getRuleContext(0, Flow_expressionsContext);
4082
4172
  }
4173
+ annotation_comment_expr() {
4174
+ return this.getRuleContext(0, Annotation_comment_exprContext);
4175
+ }
4083
4176
  get ruleIndex() {
4084
4177
  return CircuitScriptParser.RULE_expression;
4085
4178
  }
@@ -4605,8 +4698,8 @@ export class At_blockContext extends antlr.ParserRuleContext {
4605
4698
  constructor(parent, invokingState) {
4606
4699
  super(parent, invokingState);
4607
4700
  }
4608
- at_component_expr() {
4609
- return this.getRuleContext(0, At_component_exprContext);
4701
+ at_block_header() {
4702
+ return this.getRuleContext(0, At_block_headerContext);
4610
4703
  }
4611
4704
  NEWLINE(i) {
4612
4705
  if (i === undefined) {
@@ -4662,6 +4755,31 @@ export class At_block_expressionsContext extends antlr.ParserRuleContext {
4662
4755
  }
4663
4756
  }
4664
4757
  }
4758
+ export class At_block_headerContext extends antlr.ParserRuleContext {
4759
+ constructor(parent, invokingState) {
4760
+ super(parent, invokingState);
4761
+ }
4762
+ at_component_expr() {
4763
+ return this.getRuleContext(0, At_component_exprContext);
4764
+ }
4765
+ annotation_comment_expr(i) {
4766
+ if (i === undefined) {
4767
+ return this.getRuleContexts(Annotation_comment_exprContext);
4768
+ }
4769
+ return this.getRuleContext(i, Annotation_comment_exprContext);
4770
+ }
4771
+ get ruleIndex() {
4772
+ return CircuitScriptParser.RULE_at_block_header;
4773
+ }
4774
+ accept(visitor) {
4775
+ if (visitor.visitAt_block_header) {
4776
+ return visitor.visitAt_block_header(this);
4777
+ }
4778
+ else {
4779
+ return visitor.visitChildren(this);
4780
+ }
4781
+ }
4782
+ }
4665
4783
  export class At_block_pin_exprContext extends antlr.ParserRuleContext {
4666
4784
  constructor(parent, invokingState) {
4667
4785
  super(parent, invokingState);
@@ -6191,3 +6309,25 @@ export class For_exprContext extends antlr.ParserRuleContext {
6191
6309
  }
6192
6310
  }
6193
6311
  }
6312
+ export class Annotation_comment_exprContext extends antlr.ParserRuleContext {
6313
+ constructor(parent, invokingState) {
6314
+ super(parent, invokingState);
6315
+ }
6316
+ ANNOTATION_START() {
6317
+ return this.getToken(CircuitScriptParser.ANNOTATION_START, 0);
6318
+ }
6319
+ ID() {
6320
+ return this.getToken(CircuitScriptParser.ID, 0);
6321
+ }
6322
+ get ruleIndex() {
6323
+ return CircuitScriptParser.RULE_annotation_comment_expr;
6324
+ }
6325
+ accept(visitor) {
6326
+ if (visitor.visitAnnotation_comment_expr) {
6327
+ return visitor.visitAnnotation_comment_expr(this);
6328
+ }
6329
+ else {
6330
+ return visitor.visitChildren(this);
6331
+ }
6332
+ }
6333
+ }