circuitscript 0.0.38 → 0.1.2
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.
- package/dist/cjs/BaseVisitor.js +69 -46
- package/dist/cjs/SymbolValidatorVisitor.js +1 -1
- package/dist/cjs/antlr/CircuitScriptLexer.js +80 -80
- package/dist/cjs/antlr/CircuitScriptParser.js +580 -613
- package/dist/cjs/builtinMethods.js +32 -10
- package/dist/cjs/draw_symbols.js +375 -233
- package/dist/cjs/execute.js +142 -131
- package/dist/cjs/export.js +2 -4
- package/dist/cjs/geometry.js +52 -19
- package/dist/cjs/globals.js +14 -9
- package/dist/cjs/helpers.js +16 -3
- package/dist/cjs/layout.js +143 -151
- package/dist/cjs/logger.js +8 -1
- package/dist/cjs/objects/ClassComponent.js +22 -22
- package/dist/cjs/objects/ExecutionScope.js +10 -4
- package/dist/cjs/objects/Frame.js +4 -1
- package/dist/cjs/objects/ParamDefinition.js +120 -4
- package/dist/cjs/objects/PinDefinition.js +1 -4
- package/dist/cjs/objects/types.js +41 -0
- package/dist/cjs/render.js +41 -110
- package/dist/cjs/sizing.js +33 -7
- package/dist/cjs/utils.js +92 -2
- package/dist/cjs/visitor.js +279 -284
- package/dist/esm/BaseVisitor.mjs +70 -47
- package/dist/esm/SymbolValidatorVisitor.mjs +1 -1
- package/dist/esm/antlr/CircuitScriptLexer.mjs +80 -80
- package/dist/esm/antlr/CircuitScriptParser.mjs +580 -613
- package/dist/esm/builtinMethods.mjs +29 -10
- package/dist/esm/draw_symbols.mjs +381 -238
- package/dist/esm/execute.mjs +144 -133
- package/dist/esm/export.mjs +2 -4
- package/dist/esm/geometry.mjs +52 -19
- package/dist/esm/globals.mjs +13 -8
- package/dist/esm/helpers.mjs +17 -4
- package/dist/esm/layout.mjs +144 -153
- package/dist/esm/logger.mjs +8 -1
- package/dist/esm/objects/ClassComponent.mjs +21 -26
- package/dist/esm/objects/ExecutionScope.mjs +10 -4
- package/dist/esm/objects/Frame.mjs +4 -1
- package/dist/esm/objects/ParamDefinition.mjs +119 -3
- package/dist/esm/objects/PinDefinition.mjs +0 -2
- package/dist/esm/objects/types.mjs +42 -0
- package/dist/esm/render.mjs +44 -113
- package/dist/esm/sizing.mjs +34 -8
- package/dist/esm/utils.mjs +86 -1
- package/dist/esm/visitor.mjs +281 -286
- package/dist/types/BaseVisitor.d.ts +3 -2
- package/dist/types/antlr/CircuitScriptParser.d.ts +5 -3
- package/dist/types/draw_symbols.d.ts +81 -49
- package/dist/types/execute.d.ts +16 -11
- package/dist/types/geometry.d.ts +31 -19
- package/dist/types/globals.d.ts +15 -10
- package/dist/types/helpers.d.ts +2 -1
- package/dist/types/layout.d.ts +22 -21
- package/dist/types/logger.d.ts +1 -1
- package/dist/types/objects/ClassComponent.d.ts +19 -16
- package/dist/types/objects/ExecutionScope.d.ts +2 -1
- package/dist/types/objects/Frame.d.ts +5 -3
- package/dist/types/objects/ParamDefinition.d.ts +31 -2
- package/dist/types/objects/PinDefinition.d.ts +0 -2
- package/dist/types/objects/types.d.ts +7 -2
- package/dist/types/render.d.ts +2 -1
- package/dist/types/utils.d.ts +9 -1
- package/dist/types/visitor.d.ts +5 -5
- package/libs/lib.cst +102 -32
- package/package.json +7 -3
package/dist/cjs/BaseVisitor.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BaseVisitor = void 0;
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const path_1 = require("path");
|
|
6
|
+
const big_js_1 = require("big.js");
|
|
6
7
|
const CircuitScriptParser_1 = require("./antlr/CircuitScriptParser");
|
|
7
8
|
const CircuitScriptVisitor_1 = require("./antlr/CircuitScriptVisitor");
|
|
8
9
|
const execute_1 = require("./execute");
|
|
@@ -13,6 +14,7 @@ const PinTypes_1 = require("./objects/PinTypes");
|
|
|
13
14
|
const types_1 = require("./objects/types");
|
|
14
15
|
const globals_1 = require("./globals");
|
|
15
16
|
const builtinMethods_1 = require("./builtinMethods");
|
|
17
|
+
const utils_1 = require("./utils");
|
|
16
18
|
class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
17
19
|
constructor(silent = false, onErrorHandler = null, currentDirectory, defaultLibsPath) {
|
|
18
20
|
super();
|
|
@@ -22,7 +24,6 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
22
24
|
this.printToConsole = true;
|
|
23
25
|
this.acceptedDirections = [types_1.Direction.Up, types_1.Direction.Down,
|
|
24
26
|
types_1.Direction.Right, types_1.Direction.Left];
|
|
25
|
-
this.acceptedFlip = ['flipX', 'flipY'];
|
|
26
27
|
this.resultData = new Map;
|
|
27
28
|
this.paramData = new Map;
|
|
28
29
|
this.pinTypesList = [
|
|
@@ -56,18 +57,21 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
56
57
|
tmpComponent.instanceName = reference.name;
|
|
57
58
|
instances.delete(oldName);
|
|
58
59
|
instances.set(reference.name, tmpComponent);
|
|
59
|
-
this.
|
|
60
|
+
this.log2(`assigned '${reference.name}' to ClassComponent`);
|
|
60
61
|
}
|
|
61
62
|
else {
|
|
62
63
|
this.getExecutor().scope.variables.set(reference.name, value);
|
|
64
|
+
this.log2(`assigned variable ${reference.name} to ${value}`);
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
else {
|
|
66
|
-
if (reference.
|
|
67
|
-
this.setInstanceParam(reference.
|
|
68
|
+
if (reference.parentValue instanceof ClassComponent_1.ClassComponent) {
|
|
69
|
+
this.setInstanceParam(reference.parentValue, trailers, value);
|
|
70
|
+
this.log2(`assigned component param ${reference.parentValue} trailers: ${trailers} value: ${value}`);
|
|
68
71
|
}
|
|
69
|
-
else if (reference.
|
|
70
|
-
reference.
|
|
72
|
+
else if (reference.parentValue instanceof Object) {
|
|
73
|
+
reference.parentValue[trailers.join('.')] = value;
|
|
74
|
+
this.log2(`assigned object ${reference.parentValue} trailers: ${trailers} value: ${value}`);
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
77
|
this.setResult(ctx, value);
|
|
@@ -78,7 +82,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
78
82
|
this.visit(ctxDataExpr);
|
|
79
83
|
const value = this.getResult(ctxDataExpr);
|
|
80
84
|
if (!reference.found) {
|
|
81
|
-
|
|
85
|
+
this.throwWithContext(ctx, 'Undefined reference: ' + reference.name);
|
|
82
86
|
}
|
|
83
87
|
const trailers = reference.trailers ?? [];
|
|
84
88
|
let currentValue = null;
|
|
@@ -94,26 +98,27 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
94
98
|
}
|
|
95
99
|
}
|
|
96
100
|
if (currentValue === null) {
|
|
97
|
-
|
|
101
|
+
this.throwWithContext(ctx, 'Operator assignment failed: could not get value');
|
|
98
102
|
}
|
|
99
103
|
let newValue = 0;
|
|
104
|
+
const operator = new ParamDefinition_1.NumberOperator();
|
|
100
105
|
if (ctx.AdditionAssign()) {
|
|
101
|
-
newValue = currentValue
|
|
106
|
+
newValue = operator.addition(currentValue, value);
|
|
102
107
|
}
|
|
103
108
|
else if (ctx.MinusAssign()) {
|
|
104
|
-
newValue = currentValue
|
|
109
|
+
newValue = operator.subtraction(currentValue, value);
|
|
105
110
|
}
|
|
106
111
|
else if (ctx.MultiplyAssign()) {
|
|
107
|
-
newValue = currentValue
|
|
112
|
+
newValue = operator.multiply(currentValue, value);
|
|
108
113
|
}
|
|
109
114
|
else if (ctx.DivideAssign()) {
|
|
110
|
-
newValue = currentValue
|
|
115
|
+
newValue = operator.divide(currentValue, value);
|
|
111
116
|
}
|
|
112
117
|
else if (ctx.ModulusAssign()) {
|
|
113
|
-
newValue = currentValue
|
|
118
|
+
newValue = operator.modulus(currentValue, value);
|
|
114
119
|
}
|
|
115
120
|
else {
|
|
116
|
-
|
|
121
|
+
this.throwWithContext(ctx, 'Operator assignment failed: could not perform operator');
|
|
117
122
|
}
|
|
118
123
|
if (trailers.length === 0) {
|
|
119
124
|
this.getExecutor().scope.variables.set(reference.name, newValue);
|
|
@@ -133,6 +138,14 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
133
138
|
const firstId = ctx.ID(0);
|
|
134
139
|
const atomId = firstId.getText();
|
|
135
140
|
let currentReference;
|
|
141
|
+
const idTrailers = [];
|
|
142
|
+
if (ctx.ID().length > 1) {
|
|
143
|
+
const idLength = ctx.ID().length;
|
|
144
|
+
for (let i = 1; i < idLength; i++) {
|
|
145
|
+
const tmpCtx = ctx.ID(i);
|
|
146
|
+
idTrailers.push(tmpCtx.getText());
|
|
147
|
+
}
|
|
148
|
+
}
|
|
136
149
|
if (this.pinTypesList.indexOf(atomId) !== -1) {
|
|
137
150
|
currentReference = {
|
|
138
151
|
found: true,
|
|
@@ -141,26 +154,17 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
141
154
|
};
|
|
142
155
|
}
|
|
143
156
|
else {
|
|
144
|
-
currentReference = executor.resolveVariable(this.executionStack, atomId);
|
|
145
|
-
}
|
|
146
|
-
const idTrailers = [];
|
|
147
|
-
if (ctx.ID().length > 1) {
|
|
148
|
-
const idLength = ctx.ID().length;
|
|
149
|
-
for (let i = 1; i < idLength; i++) {
|
|
150
|
-
const tmpCtx = ctx.ID(i);
|
|
151
|
-
idTrailers.push(tmpCtx.getText());
|
|
152
|
-
}
|
|
157
|
+
currentReference = executor.resolveVariable(this.executionStack, atomId, idTrailers);
|
|
153
158
|
}
|
|
154
|
-
currentReference.
|
|
155
|
-
if (currentReference.found && currentReference.type === 'instance') {
|
|
159
|
+
if (currentReference.found && currentReference.type === 'instance' && idTrailers.length === 0) {
|
|
156
160
|
const tmpComponent = currentReference.value;
|
|
157
161
|
for (const [pinId, net] of tmpComponent.pinNets) {
|
|
158
162
|
executor.scope.setNet(tmpComponent, pinId, net);
|
|
159
163
|
}
|
|
160
164
|
}
|
|
161
|
-
this.
|
|
165
|
+
this.log2(`atomId: ${atomId} ${currentReference}`);
|
|
162
166
|
if (ctx.parent instanceof CircuitScriptParser_1.ExpressionContext && !currentReference.found) {
|
|
163
|
-
|
|
167
|
+
this.throwWithContext(ctx, "Unknown symbol: " + atomId);
|
|
164
168
|
}
|
|
165
169
|
this.setResult(ctx, currentReference);
|
|
166
170
|
};
|
|
@@ -182,7 +186,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
182
186
|
let currentReference = executor.resolveVariable(this.executionStack, atomId);
|
|
183
187
|
if (ctx.trailer_expr().length > 0) {
|
|
184
188
|
if (!currentReference.found) {
|
|
185
|
-
|
|
189
|
+
this.throwWithContext(ctx, "Unknown function name: " + atomId);
|
|
186
190
|
}
|
|
187
191
|
currentReference.trailers = [];
|
|
188
192
|
ctx.trailer_expr().forEach(item => {
|
|
@@ -195,13 +199,18 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
195
199
|
parameters = this.getResult(ctxParameters);
|
|
196
200
|
}
|
|
197
201
|
const useNetNamespace = this.getNetNamespace(executor.netNamespace, passedNetNamespace);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
202
|
+
try {
|
|
203
|
+
const [, functionResult] = executor.callFunction(currentReference.name, parameters, this.executionStack, useNetNamespace);
|
|
204
|
+
currentReference = {
|
|
205
|
+
found: true,
|
|
206
|
+
value: functionResult,
|
|
207
|
+
type: (functionResult instanceof ClassComponent_1.ClassComponent) ?
|
|
208
|
+
'instance' : 'value',
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
this.throwWithContext(ctx, err);
|
|
213
|
+
}
|
|
205
214
|
}
|
|
206
215
|
else {
|
|
207
216
|
currentReference.trailers.push(itemValue);
|
|
@@ -221,10 +230,10 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
221
230
|
let result = null;
|
|
222
231
|
if (ctxIntegerValue || ctxDecimalValue || ctxNumericValue) {
|
|
223
232
|
if (ctxIntegerValue) {
|
|
224
|
-
result =
|
|
233
|
+
result = (0, utils_1.resolveToNumericValue)((new big_js_1.Big(ctxIntegerValue.getText())).mul(new big_js_1.Big(sign)));
|
|
225
234
|
}
|
|
226
235
|
else if (ctxDecimalValue) {
|
|
227
|
-
result =
|
|
236
|
+
result = (0, utils_1.resolveToNumericValue)((new big_js_1.Big(ctxDecimalValue.getText())).mul(new big_js_1.Big(sign)));
|
|
228
237
|
}
|
|
229
238
|
else if (ctxNumericValue) {
|
|
230
239
|
const textExtra = ctx.Minus() ? '-' : '';
|
|
@@ -233,7 +242,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
233
242
|
}
|
|
234
243
|
else {
|
|
235
244
|
if (sign === -1) {
|
|
236
|
-
|
|
245
|
+
this.throwWithContext(ctx, "Invalid value");
|
|
237
246
|
}
|
|
238
247
|
}
|
|
239
248
|
if (ctxBooleanValue) {
|
|
@@ -320,7 +329,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
320
329
|
this.visitImport_expr = (ctx) => {
|
|
321
330
|
const ID = ctx.ID().toString();
|
|
322
331
|
this.log('import', ID);
|
|
323
|
-
this.handleImportFile(ID, true);
|
|
332
|
+
this.handleImportFile(ID, true, ctx);
|
|
324
333
|
this.log('done import', ID);
|
|
325
334
|
};
|
|
326
335
|
this.visitFunction_return_expr = (ctx) => {
|
|
@@ -420,12 +429,15 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
420
429
|
getReference(ctx) {
|
|
421
430
|
const atomStr = ctx.getText();
|
|
422
431
|
if (atomStr.indexOf('(') !== -1 || atomStr.indexOf(')') !== -1) {
|
|
423
|
-
|
|
432
|
+
this.throwWithContext(ctx, "Invalid assignment expression!");
|
|
424
433
|
}
|
|
425
434
|
this.visit(ctx);
|
|
426
435
|
const reference = this.getResult(ctx);
|
|
427
|
-
|
|
428
|
-
|
|
436
|
+
const { trailers = [] } = reference;
|
|
437
|
+
const undefinedParentWithTrailers = trailers.length > 0
|
|
438
|
+
&& reference.parentValue === undefined;
|
|
439
|
+
if (undefinedParentWithTrailers) {
|
|
440
|
+
this.throwWithContext(ctx, 'Undefined reference: ' + reference.name + '.' + trailers.join('.'));
|
|
429
441
|
}
|
|
430
442
|
return reference;
|
|
431
443
|
}
|
|
@@ -435,7 +447,11 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
435
447
|
getResult(ctx) {
|
|
436
448
|
return this.resultData.get(ctx);
|
|
437
449
|
}
|
|
438
|
-
|
|
450
|
+
visitResult(ctx) {
|
|
451
|
+
this.visit(ctx);
|
|
452
|
+
return this.getResult(ctx);
|
|
453
|
+
}
|
|
454
|
+
handleImportFile(name, throwErrors = true, ctx = null) {
|
|
439
455
|
let hasError = false;
|
|
440
456
|
let hasParseError = false;
|
|
441
457
|
let pathExists = false;
|
|
@@ -470,14 +486,18 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
470
486
|
catch (err) {
|
|
471
487
|
this.log('Failed to import file: ', err.message);
|
|
472
488
|
}
|
|
489
|
+
let errorMessage = null;
|
|
473
490
|
if (throwErrors && (hasError || hasParseError || !pathExists)) {
|
|
474
491
|
if (!pathExists) {
|
|
475
|
-
|
|
492
|
+
errorMessage = `File does not exist: ${name}`;
|
|
476
493
|
}
|
|
477
494
|
else {
|
|
478
|
-
|
|
495
|
+
errorMessage = `Failed to import: ${name}`;
|
|
479
496
|
}
|
|
480
497
|
}
|
|
498
|
+
if (errorMessage !== null && ctx) {
|
|
499
|
+
this.throwWithContext(ctx, errorMessage);
|
|
500
|
+
}
|
|
481
501
|
return {
|
|
482
502
|
hasError,
|
|
483
503
|
hasParseError,
|
|
@@ -559,7 +579,7 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
559
579
|
setInstanceParam(object, trailers, value) {
|
|
560
580
|
const paramName = trailers[0];
|
|
561
581
|
object.setParam(paramName, value);
|
|
562
|
-
this.
|
|
582
|
+
this.log2(`set instance ${object.instanceName} param ${paramName} to ${value}`);
|
|
563
583
|
}
|
|
564
584
|
getInstanceParam(object, trailers) {
|
|
565
585
|
const paramName = trailers[0];
|
|
@@ -580,5 +600,8 @@ class BaseVisitor extends CircuitScriptVisitor_1.CircuitScriptVisitor {
|
|
|
580
600
|
prepareStringValue(value) {
|
|
581
601
|
return value.slice(1, value.length - 1);
|
|
582
602
|
}
|
|
603
|
+
throwWithContext(context, message) {
|
|
604
|
+
(0, utils_1.throwWithContext)(context, message);
|
|
605
|
+
}
|
|
583
606
|
}
|
|
584
607
|
exports.BaseVisitor = BaseVisitor;
|
|
@@ -9,7 +9,7 @@ class SymbolValidatorVisitor extends BaseVisitor_js_1.BaseVisitor {
|
|
|
9
9
|
this.symbolTable = new SymbolTable();
|
|
10
10
|
this.visitImport_expr = (ctx) => {
|
|
11
11
|
const ID = ctx.ID().toString();
|
|
12
|
-
const { pathExists } = this.handleImportFile(ID, false);
|
|
12
|
+
const { pathExists } = this.handleImportFile(ID, false, ctx);
|
|
13
13
|
if (!pathExists) {
|
|
14
14
|
this.symbolTable.addUndefined(this.getExecutor(), ID, ctx.ID());
|
|
15
15
|
}
|
|
@@ -238,86 +238,86 @@ CircuitScriptLexer._serializedATN = [
|
|
|
238
238
|
95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113,
|
|
239
239
|
0, 115, 57, 117, 58, 119, 59, 121, 60, 123, 61, 125, 62, 127, 63, 129, 64, 131, 0,
|
|
240
240
|
133, 0, 135, 65, 1, 0, 10, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95,
|
|
241
|
-
97, 122, 1, 0, 49, 57, 2, 0, 48, 57, 95, 95, 1, 0, 48, 57, 1, 0, 48, 48,
|
|
242
|
-
107, 109, 110, 112, 112, 117, 117, 3, 0, 48, 57, 65, 90,
|
|
243
|
-
2, 0,
|
|
244
|
-
0,
|
|
245
|
-
0, 0, 0,
|
|
246
|
-
0, 0, 0,
|
|
247
|
-
0, 0, 0,
|
|
248
|
-
0, 0, 0,
|
|
249
|
-
0, 0, 0,
|
|
250
|
-
0, 0, 0,
|
|
251
|
-
0, 0, 0,
|
|
252
|
-
0, 0, 0,
|
|
253
|
-
0, 0, 0,
|
|
254
|
-
1, 0, 0, 0, 0,
|
|
255
|
-
0,
|
|
256
|
-
0, 0, 0, 0,
|
|
257
|
-
|
|
258
|
-
0, 0, 0,
|
|
259
|
-
0,
|
|
260
|
-
|
|
261
|
-
1, 0, 0, 0,
|
|
262
|
-
0, 0,
|
|
263
|
-
|
|
264
|
-
1, 0, 0, 0,
|
|
265
|
-
0, 0,
|
|
266
|
-
|
|
267
|
-
1, 0, 0, 0,
|
|
268
|
-
0, 0,
|
|
269
|
-
0,
|
|
270
|
-
0,
|
|
271
|
-
0,
|
|
272
|
-
0,
|
|
273
|
-
0,
|
|
274
|
-
|
|
275
|
-
147, 10, 1, 0, 0, 0, 148, 149, 5, 91, 0, 0, 149, 12, 1, 0, 0, 0, 150,
|
|
276
|
-
151, 14, 1, 0, 0, 0, 152, 153, 5, 98, 0, 0, 153, 154, 5, 114, 0, 0, 154,
|
|
277
|
-
0, 0, 155, 156, 5, 97, 0, 0, 156, 157, 5, 107, 0, 0, 157, 16, 1, 0, 0, 0,
|
|
278
|
-
98, 0, 0, 159, 160, 5, 114, 0, 0, 160, 161, 5, 97, 0, 0, 161, 162, 5, 110,
|
|
279
|
-
163, 5, 99, 0, 0, 163, 164, 5, 104, 0, 0, 164, 18, 1, 0, 0, 0, 165, 166, 5,
|
|
280
|
-
167, 5, 114, 0, 0, 167, 168, 5, 101, 0, 0, 168, 169, 5, 97, 0, 0, 169,
|
|
281
|
-
0, 170, 171, 5, 101, 0, 0, 171, 20, 1, 0, 0, 0, 172, 173, 5, 99, 0, 0,
|
|
282
|
-
0, 0, 174, 175, 5, 109, 0, 0, 175, 176, 5, 112, 0, 0, 176, 177, 5,
|
|
283
|
-
|
|
284
|
-
181, 22, 1, 0, 0, 0, 182, 183, 5, 103, 0, 0, 183, 184, 5, 114, 0, 0,
|
|
285
|
-
0, 0, 185, 186, 5, 112, 0, 0, 186, 187, 5, 104, 0, 0, 187, 188, 5, 105,
|
|
286
|
-
5, 99, 0, 0, 189, 24, 1, 0, 0, 0, 190, 191, 5, 109, 0, 0, 191, 192, 5,
|
|
287
|
-
193, 5, 100, 0, 0, 193, 194, 5, 117, 0, 0, 194, 195, 5, 108, 0, 0, 195,
|
|
288
|
-
0, 0, 196, 26, 1, 0, 0, 0, 197, 198, 5, 119, 0, 0, 198, 199, 5, 105, 0, 0,
|
|
289
|
-
114, 0, 0, 200, 201, 5, 101, 0, 0, 201, 28, 1, 0, 0, 0, 202, 203, 5, 112,
|
|
290
|
-
5, 105, 0, 0, 204, 205, 5, 110, 0, 0, 205, 30, 1, 0, 0, 0, 206, 207, 5,
|
|
291
|
-
208, 5, 100, 0, 0, 208, 209, 5, 100, 0, 0, 209, 32, 1, 0, 0, 0, 210, 211,
|
|
292
|
-
211, 212, 5, 116, 0, 0, 212, 34, 1, 0, 0, 0, 213, 214, 5, 116, 0, 0, 214,
|
|
293
|
-
0, 0, 215, 36, 1, 0, 0, 0, 216, 217, 5, 112, 0, 0, 217, 218, 5, 111, 0, 0,
|
|
294
|
-
105, 0, 0, 219, 220, 5, 110, 0, 0, 220, 221, 5, 116, 0, 0, 221, 38, 1, 0,
|
|
295
|
-
5, 106, 0, 0, 223, 224, 5, 111, 0, 0, 224, 225, 5, 105, 0, 0, 225, 226,
|
|
296
|
-
226, 40, 1, 0, 0, 0, 227, 228, 5, 112, 0, 0, 228, 229, 5, 97, 0, 0, 229,
|
|
297
|
-
0, 0, 230, 231, 5, 97, 0, 0, 231, 232, 5, 108, 0, 0, 232, 233, 5, 108, 0,
|
|
298
|
-
5, 101, 0, 0, 234, 235, 5, 108, 0, 0, 235, 42, 1, 0, 0, 0, 236, 237, 5, 114,
|
|
299
|
-
238, 5, 101, 0, 0, 238, 239, 5, 116, 0, 0, 239, 240, 5, 117, 0, 0, 240, 241,
|
|
300
|
-
0, 0, 241, 242, 5, 110, 0, 0, 242, 44, 1, 0, 0, 0, 243, 244, 5, 100, 0, 0, 244,
|
|
301
|
-
101, 0, 0, 245, 246, 5, 102, 0, 0, 246, 46, 1, 0, 0, 0, 247, 248, 5, 105, 0, 0,
|
|
302
|
-
5, 109, 0, 0, 249, 250, 5, 112, 0, 0, 250, 251, 5, 111, 0, 0, 251, 252, 5,
|
|
303
|
-
252, 253, 5, 116, 0, 0, 253, 48, 1, 0, 0, 0, 254, 255, 5, 102, 0, 0, 255, 256,
|
|
304
|
-
0, 0, 256, 257, 5, 114, 0, 0, 257, 50, 1, 0, 0, 0, 258, 259, 5, 105, 0, 0, 259,
|
|
305
|
-
110, 0, 0, 260, 52, 1, 0, 0, 0, 261, 262, 5, 119, 0, 0, 262, 263, 5, 104, 0, 0,
|
|
306
|
-
5, 105, 0, 0, 264, 265, 5, 108, 0, 0, 265, 266, 5, 101, 0, 0, 266, 54, 1, 0,
|
|
307
|
-
268, 5, 99, 0, 0, 268, 269, 5, 111, 0, 0, 269, 270, 5, 110, 0, 0, 270, 271,
|
|
308
|
-
0, 271, 272, 5, 105, 0, 0, 272, 273, 5, 110, 0, 0, 273, 274, 5, 117, 0, 0,
|
|
309
|
-
5, 101, 0, 0, 275, 56, 1, 0, 0, 0, 276, 277, 5, 105, 0, 0, 277, 278, 5, 102,
|
|
310
|
-
58, 1, 0, 0, 0, 279, 280, 5, 101, 0, 0, 280, 281, 5, 108, 0, 0, 281, 282, 5,
|
|
311
|
-
282, 283, 5, 101, 0, 0, 283, 60, 1, 0, 0, 0, 284, 289, 5, 33, 0, 0, 285, 286,
|
|
312
|
-
0, 0, 286, 287, 5, 111, 0, 0, 287, 289, 5, 116, 0, 0, 288, 284, 1, 0, 0, 0, 288,
|
|
313
|
-
1, 0, 0, 0, 289, 62, 1, 0, 0, 0, 290, 291, 5, 102, 0, 0, 291, 292, 5, 114, 0, 0, 292,
|
|
314
|
-
5, 97, 0, 0, 293, 294, 5, 109, 0, 0, 294, 295, 5, 101, 0, 0, 295, 64, 1, 0, 0, 0,
|
|
315
|
-
297, 5, 115, 0, 0, 297, 298, 5, 104, 0, 0, 298, 299, 5, 101, 0, 0, 299, 300, 5,
|
|
316
|
-
0, 0, 300, 301, 5, 116, 0, 0, 301, 66, 1, 0, 0, 0, 302, 303, 5, 61, 0, 0, 303, 304,
|
|
317
|
-
61, 0, 0, 304, 68, 1, 0, 0, 0, 305, 306, 5, 33, 0, 0, 306, 307, 5, 61, 0, 0, 307, 70,
|
|
318
|
-
0, 0, 0, 308, 309, 5, 62, 0, 0, 309, 72, 1, 0, 0, 0, 310, 311, 5, 62, 0, 0, 311, 312,
|
|
319
|
-
61, 0, 0, 312, 74, 1, 0, 0, 0, 313, 314, 5, 60, 0, 0, 314, 76, 1, 0, 0, 0, 315, 316,
|
|
320
|
-
60, 0, 0, 316, 317, 5, 61, 0, 0, 317, 78, 1, 0, 0, 0, 318, 319, 5, 38, 0, 0, 319, 324,
|
|
241
|
+
97, 122, 1, 0, 49, 57, 2, 0, 48, 57, 95, 95, 1, 0, 48, 57, 1, 0, 48, 48, 8, 0, 71, 71, 75,
|
|
242
|
+
75, 77, 77, 102, 102, 107, 107, 109, 110, 112, 112, 117, 117, 3, 0, 48, 57, 65, 90,
|
|
243
|
+
97, 122, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, 12, 13, 511, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0,
|
|
244
|
+
0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0,
|
|
245
|
+
15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0,
|
|
246
|
+
25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0,
|
|
247
|
+
35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0,
|
|
248
|
+
45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0,
|
|
249
|
+
55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0,
|
|
250
|
+
65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0,
|
|
251
|
+
75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0,
|
|
252
|
+
85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0,
|
|
253
|
+
95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0,
|
|
254
|
+
0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 115, 1,
|
|
255
|
+
0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0,
|
|
256
|
+
125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 1, 137, 1, 0,
|
|
257
|
+
0, 0, 3, 139, 1, 0, 0, 0, 5, 141, 1, 0, 0, 0, 7, 143, 1, 0, 0, 0, 9, 146, 1, 0, 0, 0, 11, 148,
|
|
258
|
+
1, 0, 0, 0, 13, 150, 1, 0, 0, 0, 15, 152, 1, 0, 0, 0, 17, 158, 1, 0, 0, 0, 19, 165, 1, 0,
|
|
259
|
+
0, 0, 21, 172, 1, 0, 0, 0, 23, 182, 1, 0, 0, 0, 25, 190, 1, 0, 0, 0, 27, 197, 1, 0, 0, 0,
|
|
260
|
+
29, 202, 1, 0, 0, 0, 31, 206, 1, 0, 0, 0, 33, 210, 1, 0, 0, 0, 35, 213, 1, 0, 0, 0, 37, 216,
|
|
261
|
+
1, 0, 0, 0, 39, 222, 1, 0, 0, 0, 41, 227, 1, 0, 0, 0, 43, 236, 1, 0, 0, 0, 45, 243, 1, 0,
|
|
262
|
+
0, 0, 47, 247, 1, 0, 0, 0, 49, 254, 1, 0, 0, 0, 51, 258, 1, 0, 0, 0, 53, 261, 1, 0, 0, 0,
|
|
263
|
+
55, 267, 1, 0, 0, 0, 57, 276, 1, 0, 0, 0, 59, 279, 1, 0, 0, 0, 61, 288, 1, 0, 0, 0, 63, 290,
|
|
264
|
+
1, 0, 0, 0, 65, 296, 1, 0, 0, 0, 67, 302, 1, 0, 0, 0, 69, 305, 1, 0, 0, 0, 71, 308, 1, 0,
|
|
265
|
+
0, 0, 73, 310, 1, 0, 0, 0, 75, 313, 1, 0, 0, 0, 77, 315, 1, 0, 0, 0, 79, 323, 1, 0, 0, 0,
|
|
266
|
+
81, 329, 1, 0, 0, 0, 83, 331, 1, 0, 0, 0, 85, 333, 1, 0, 0, 0, 87, 335, 1, 0, 0, 0, 89, 337,
|
|
267
|
+
1, 0, 0, 0, 91, 339, 1, 0, 0, 0, 93, 341, 1, 0, 0, 0, 95, 344, 1, 0, 0, 0, 97, 347, 1, 0,
|
|
268
|
+
0, 0, 99, 350, 1, 0, 0, 0, 101, 353, 1, 0, 0, 0, 103, 356, 1, 0, 0, 0, 105, 359, 1, 0, 0,
|
|
269
|
+
0, 107, 366, 1, 0, 0, 0, 109, 377, 1, 0, 0, 0, 111, 379, 1, 0, 0, 0, 113, 394, 1, 0, 0,
|
|
270
|
+
0, 115, 408, 1, 0, 0, 0, 117, 410, 1, 0, 0, 0, 119, 421, 1, 0, 0, 0, 121, 426, 1, 0, 0,
|
|
271
|
+
0, 123, 436, 1, 0, 0, 0, 125, 449, 1, 0, 0, 0, 127, 454, 1, 0, 0, 0, 129, 465, 1, 0, 0,
|
|
272
|
+
0, 131, 473, 1, 0, 0, 0, 133, 477, 1, 0, 0, 0, 135, 486, 1, 0, 0, 0, 137, 138, 5, 58, 0,
|
|
273
|
+
0, 138, 2, 1, 0, 0, 0, 139, 140, 5, 44, 0, 0, 140, 4, 1, 0, 0, 0, 141, 142, 5, 61, 0, 0,
|
|
274
|
+
142, 6, 1, 0, 0, 0, 143, 144, 5, 46, 0, 0, 144, 145, 5, 46, 0, 0, 145, 8, 1, 0, 0, 0, 146,
|
|
275
|
+
147, 5, 46, 0, 0, 147, 10, 1, 0, 0, 0, 148, 149, 5, 91, 0, 0, 149, 12, 1, 0, 0, 0, 150,
|
|
276
|
+
151, 5, 93, 0, 0, 151, 14, 1, 0, 0, 0, 152, 153, 5, 98, 0, 0, 153, 154, 5, 114, 0, 0, 154,
|
|
277
|
+
155, 5, 101, 0, 0, 155, 156, 5, 97, 0, 0, 156, 157, 5, 107, 0, 0, 157, 16, 1, 0, 0, 0,
|
|
278
|
+
158, 159, 5, 98, 0, 0, 159, 160, 5, 114, 0, 0, 160, 161, 5, 97, 0, 0, 161, 162, 5, 110,
|
|
279
|
+
0, 0, 162, 163, 5, 99, 0, 0, 163, 164, 5, 104, 0, 0, 164, 18, 1, 0, 0, 0, 165, 166, 5,
|
|
280
|
+
99, 0, 0, 166, 167, 5, 114, 0, 0, 167, 168, 5, 101, 0, 0, 168, 169, 5, 97, 0, 0, 169,
|
|
281
|
+
170, 5, 116, 0, 0, 170, 171, 5, 101, 0, 0, 171, 20, 1, 0, 0, 0, 172, 173, 5, 99, 0, 0,
|
|
282
|
+
173, 174, 5, 111, 0, 0, 174, 175, 5, 109, 0, 0, 175, 176, 5, 112, 0, 0, 176, 177, 5,
|
|
283
|
+
111, 0, 0, 177, 178, 5, 110, 0, 0, 178, 179, 5, 101, 0, 0, 179, 180, 5, 110, 0, 0, 180,
|
|
284
|
+
181, 5, 116, 0, 0, 181, 22, 1, 0, 0, 0, 182, 183, 5, 103, 0, 0, 183, 184, 5, 114, 0, 0,
|
|
285
|
+
184, 185, 5, 97, 0, 0, 185, 186, 5, 112, 0, 0, 186, 187, 5, 104, 0, 0, 187, 188, 5, 105,
|
|
286
|
+
0, 0, 188, 189, 5, 99, 0, 0, 189, 24, 1, 0, 0, 0, 190, 191, 5, 109, 0, 0, 191, 192, 5,
|
|
287
|
+
111, 0, 0, 192, 193, 5, 100, 0, 0, 193, 194, 5, 117, 0, 0, 194, 195, 5, 108, 0, 0, 195,
|
|
288
|
+
196, 5, 101, 0, 0, 196, 26, 1, 0, 0, 0, 197, 198, 5, 119, 0, 0, 198, 199, 5, 105, 0, 0,
|
|
289
|
+
199, 200, 5, 114, 0, 0, 200, 201, 5, 101, 0, 0, 201, 28, 1, 0, 0, 0, 202, 203, 5, 112,
|
|
290
|
+
0, 0, 203, 204, 5, 105, 0, 0, 204, 205, 5, 110, 0, 0, 205, 30, 1, 0, 0, 0, 206, 207, 5,
|
|
291
|
+
97, 0, 0, 207, 208, 5, 100, 0, 0, 208, 209, 5, 100, 0, 0, 209, 32, 1, 0, 0, 0, 210, 211,
|
|
292
|
+
5, 97, 0, 0, 211, 212, 5, 116, 0, 0, 212, 34, 1, 0, 0, 0, 213, 214, 5, 116, 0, 0, 214,
|
|
293
|
+
215, 5, 111, 0, 0, 215, 36, 1, 0, 0, 0, 216, 217, 5, 112, 0, 0, 217, 218, 5, 111, 0, 0,
|
|
294
|
+
218, 219, 5, 105, 0, 0, 219, 220, 5, 110, 0, 0, 220, 221, 5, 116, 0, 0, 221, 38, 1, 0,
|
|
295
|
+
0, 0, 222, 223, 5, 106, 0, 0, 223, 224, 5, 111, 0, 0, 224, 225, 5, 105, 0, 0, 225, 226,
|
|
296
|
+
5, 110, 0, 0, 226, 40, 1, 0, 0, 0, 227, 228, 5, 112, 0, 0, 228, 229, 5, 97, 0, 0, 229,
|
|
297
|
+
230, 5, 114, 0, 0, 230, 231, 5, 97, 0, 0, 231, 232, 5, 108, 0, 0, 232, 233, 5, 108, 0,
|
|
298
|
+
0, 233, 234, 5, 101, 0, 0, 234, 235, 5, 108, 0, 0, 235, 42, 1, 0, 0, 0, 236, 237, 5, 114,
|
|
299
|
+
0, 0, 237, 238, 5, 101, 0, 0, 238, 239, 5, 116, 0, 0, 239, 240, 5, 117, 0, 0, 240, 241,
|
|
300
|
+
5, 114, 0, 0, 241, 242, 5, 110, 0, 0, 242, 44, 1, 0, 0, 0, 243, 244, 5, 100, 0, 0, 244,
|
|
301
|
+
245, 5, 101, 0, 0, 245, 246, 5, 102, 0, 0, 246, 46, 1, 0, 0, 0, 247, 248, 5, 105, 0, 0,
|
|
302
|
+
248, 249, 5, 109, 0, 0, 249, 250, 5, 112, 0, 0, 250, 251, 5, 111, 0, 0, 251, 252, 5,
|
|
303
|
+
114, 0, 0, 252, 253, 5, 116, 0, 0, 253, 48, 1, 0, 0, 0, 254, 255, 5, 102, 0, 0, 255, 256,
|
|
304
|
+
5, 111, 0, 0, 256, 257, 5, 114, 0, 0, 257, 50, 1, 0, 0, 0, 258, 259, 5, 105, 0, 0, 259,
|
|
305
|
+
260, 5, 110, 0, 0, 260, 52, 1, 0, 0, 0, 261, 262, 5, 119, 0, 0, 262, 263, 5, 104, 0, 0,
|
|
306
|
+
263, 264, 5, 105, 0, 0, 264, 265, 5, 108, 0, 0, 265, 266, 5, 101, 0, 0, 266, 54, 1, 0,
|
|
307
|
+
0, 0, 267, 268, 5, 99, 0, 0, 268, 269, 5, 111, 0, 0, 269, 270, 5, 110, 0, 0, 270, 271,
|
|
308
|
+
5, 116, 0, 0, 271, 272, 5, 105, 0, 0, 272, 273, 5, 110, 0, 0, 273, 274, 5, 117, 0, 0,
|
|
309
|
+
274, 275, 5, 101, 0, 0, 275, 56, 1, 0, 0, 0, 276, 277, 5, 105, 0, 0, 277, 278, 5, 102,
|
|
310
|
+
0, 0, 278, 58, 1, 0, 0, 0, 279, 280, 5, 101, 0, 0, 280, 281, 5, 108, 0, 0, 281, 282, 5,
|
|
311
|
+
115, 0, 0, 282, 283, 5, 101, 0, 0, 283, 60, 1, 0, 0, 0, 284, 289, 5, 33, 0, 0, 285, 286,
|
|
312
|
+
5, 110, 0, 0, 286, 287, 5, 111, 0, 0, 287, 289, 5, 116, 0, 0, 288, 284, 1, 0, 0, 0, 288,
|
|
313
|
+
285, 1, 0, 0, 0, 289, 62, 1, 0, 0, 0, 290, 291, 5, 102, 0, 0, 291, 292, 5, 114, 0, 0, 292,
|
|
314
|
+
293, 5, 97, 0, 0, 293, 294, 5, 109, 0, 0, 294, 295, 5, 101, 0, 0, 295, 64, 1, 0, 0, 0,
|
|
315
|
+
296, 297, 5, 115, 0, 0, 297, 298, 5, 104, 0, 0, 298, 299, 5, 101, 0, 0, 299, 300, 5,
|
|
316
|
+
101, 0, 0, 300, 301, 5, 116, 0, 0, 301, 66, 1, 0, 0, 0, 302, 303, 5, 61, 0, 0, 303, 304,
|
|
317
|
+
5, 61, 0, 0, 304, 68, 1, 0, 0, 0, 305, 306, 5, 33, 0, 0, 306, 307, 5, 61, 0, 0, 307, 70,
|
|
318
|
+
1, 0, 0, 0, 308, 309, 5, 62, 0, 0, 309, 72, 1, 0, 0, 0, 310, 311, 5, 62, 0, 0, 311, 312,
|
|
319
|
+
5, 61, 0, 0, 312, 74, 1, 0, 0, 0, 313, 314, 5, 60, 0, 0, 314, 76, 1, 0, 0, 0, 315, 316,
|
|
320
|
+
5, 60, 0, 0, 316, 317, 5, 61, 0, 0, 317, 78, 1, 0, 0, 0, 318, 319, 5, 38, 0, 0, 319, 324,
|
|
321
321
|
5, 38, 0, 0, 320, 321, 5, 97, 0, 0, 321, 322, 5, 110, 0, 0, 322, 324, 5, 100, 0, 0, 323,
|
|
322
322
|
318, 1, 0, 0, 0, 323, 320, 1, 0, 0, 0, 324, 80, 1, 0, 0, 0, 325, 326, 5, 124, 0, 0, 326,
|
|
323
323
|
330, 5, 124, 0, 0, 327, 328, 5, 111, 0, 0, 328, 330, 5, 114, 0, 0, 329, 325, 1, 0, 0,
|