diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3ee079db..cda597db 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -18,7 +18,7 @@ module.exports = { 'max-len': ['error', { code: 120, ignoreStrings: true, ignoreTemplateLiterals: true }], 'import/no-cycle': 0, // Needed for AST -> AstVisitor -> AST 'class-methods-use-this': 0, // I don't like this rule - 'no-underscore-dangle': 0, // antlr4ts automatically uses this + 'no-underscore-dangle': 0, // antlr automatically uses this 'no-param-reassign': 0, // Makes visitors returning the node object easier '@typescript-eslint/lines-between-class-members': [ // Makes defining interfaces / abstract classes easier 'error', diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md new file mode 100644 index 00000000..d40018f4 --- /dev/null +++ b/DEVELOPMENT.md @@ -0,0 +1,27 @@ +## cashc + +### Prerequisites + +In order to use the `antlr` command line tool when updating CashScript's grammar file, you need to have it installed. + +On macOS you can install it using Homebrew: + +```bash +brew install antlr +``` + +On Linux you can install it using apt: + +```bash +sudo apt install antlr4 +``` + +For other platforms, refer to the [Antlr website](https://www.antlr.org/). + +### Updating the grammar + +When updating the grammar file in `src/grammar/CashScript.g4`, we also need to make sure that the generated parser is updated. To do this, run the following command in the `packages/cashc` directory: + +```bash +yarn antlr +`````` diff --git a/packages/cashc/package.json b/packages/cashc/package.json index 80c4d410..207c5ed5 100644 --- a/packages/cashc/package.json +++ b/packages/cashc/package.json @@ -34,7 +34,7 @@ "test": "test" }, "scripts": { - "antlr": "antlr4ts -visitor -no-listener src/grammar/CashScript.g4", + "antlr": "antlr -Dlanguage=TypeScript -visitor -no-listener src/grammar/CashScript.g4", "postantlr": "find src/grammar -type f -name '*.ts' | xargs sed -i '' 's|\\(import .* \".*/.*\\)\";|\\1\\.js\";|g'", "build": "yarn clean && yarn compile", "build:test": "yarn clean:test && yarn compile:test && cpy './test/**/*.cash' ./dist-test/test", @@ -51,7 +51,7 @@ "dependencies": { "@bitauth/libauth": "^2.0.0-alpha.8", "@cashscript/utils": "^0.9.2", - "antlr4ts": "^0.5.0-alpha.4", + "antlr4": "^4.13.1-patch-1", "commander": "^7.1.0", "semver": "^7.3.4" }, @@ -59,7 +59,6 @@ "@jest/globals": "^29.4.1", "@types/node": "^18.11.18", "@types/semver": "^7.3.4", - "antlr4ts-cli": "^0.5.0-alpha.4", "cpy-cli": "^4.2.0", "eslint": "^7.20.0", "jest": "^29.4.1", diff --git a/packages/cashc/src/ast/AstBuilder.ts b/packages/cashc/src/ast/AstBuilder.ts index dc435a0f..af08961d 100644 --- a/packages/cashc/src/ast/AstBuilder.ts +++ b/packages/cashc/src/ast/AstBuilder.ts @@ -1,8 +1,6 @@ +import { ParseTree, ParseTreeVisitor } from 'antlr4'; import { hexToBin } from '@bitauth/libauth'; import { parseType } from '@cashscript/utils'; -import { AbstractParseTreeVisitor } from 'antlr4ts/tree/AbstractParseTreeVisitor.js'; -import { ParseTree } from 'antlr4ts/tree/ParseTree.js'; -import { TerminalNode } from 'antlr4ts/tree/TerminalNode.js'; import semver from 'semver'; import { Node, @@ -46,7 +44,6 @@ import type { FunctionCallContext, CastContext, LiteralContext, - NumberLiteralContext, SourceFileContext, BlockContext, TimeOpStatementContext, @@ -63,8 +60,9 @@ import type { InstantiationContext, NullaryOpContext, UnaryIntrospectionOpContext, + StatementContext, } from '../grammar/CashScriptParser.js'; -import type { CashScriptVisitor } from '../grammar/CashScriptVisitor.js'; +import CashScriptVisitor from '../grammar/CashScriptVisitor.js'; import { Location } from './Location.js'; import { NumberUnit, @@ -75,7 +73,7 @@ import { version } from '../index.js'; import { ParseError, VersionError } from '../Errors.js'; export default class AstBuilder - extends AbstractParseTreeVisitor + extends ParseTreeVisitor implements CashScriptVisitor { constructor(private tree: ParseTree) { super(); @@ -90,7 +88,7 @@ export default class AstBuilder } visitSourceFile(ctx: SourceFileContext): SourceFileNode { - ctx.pragmaDirective().forEach((pragma) => { + ctx.pragmaDirective_list().forEach((pragma) => { this.processPragma(pragma); }); @@ -101,15 +99,15 @@ export default class AstBuilder } processPragma(ctx: PragmaDirectiveContext): void { - const pragmaName = getPragmaName(ctx.pragmaName().text); + const pragmaName = getPragmaName(ctx.pragmaName().getText()); if (pragmaName !== PragmaName.CASHSCRIPT) throw new Error(); // Shouldn't happen // Strip any -beta tags const actualVersion = version.replace(/-.*/g, ''); - ctx.pragmaValue().versionConstraint().forEach((constraint) => { + ctx.pragmaValue().versionConstraint_list().forEach((constraint) => { const op = getVersionOpFromCtx(constraint.versionOperator()); - const versionConstraint = `${op}${constraint.VersionLiteral().text}`; + const versionConstraint = `${op}${constraint.VersionLiteral().getText()}`; if (!semver.satisfies(actualVersion, versionConstraint)) { throw new VersionError(actualVersion, versionConstraint); } @@ -117,18 +115,18 @@ export default class AstBuilder } visitContractDefinition(ctx: ContractDefinitionContext): ContractNode { - const name = ctx.Identifier().text; - const parameters = ctx.parameterList().parameter().map((p) => this.visit(p) as ParameterNode); - const functions = ctx.functionDefinition().map((f) => this.visit(f) as FunctionDefinitionNode); + const name = ctx.Identifier().getText(); + const parameters = ctx.parameterList().parameter_list().map((p) => this.visit(p) as ParameterNode); + const functions = ctx.functionDefinition_list().map((f) => this.visit(f) as FunctionDefinitionNode); const contract = new ContractNode(name, parameters, functions); contract.location = Location.fromCtx(ctx); return contract; } visitFunctionDefinition(ctx: FunctionDefinitionContext): FunctionDefinitionNode { - const name = ctx.Identifier().text; - const parameters = ctx.parameterList().parameter().map((p) => this.visit(p) as ParameterNode); - const statements = ctx.statement().map((s) => this.visit(s) as StatementNode); + const name = ctx.Identifier().getText(); + const parameters = ctx.parameterList().parameter_list().map((p) => this.visit(p) as ParameterNode); + const statements = ctx.statement_list().map((s) => this.visit(s) as StatementNode); const block = new BlockNode(statements); block.location = Location.fromCtx(ctx); @@ -138,17 +136,22 @@ export default class AstBuilder } visitParameter(ctx: ParameterContext): ParameterNode { - const type = parseType(ctx.typeName().text); - const name = ctx.Identifier().text; + const type = parseType(ctx.typeName().getText()); + const name = ctx.Identifier().getText(); const parameter = new ParameterNode(type, name); parameter.location = Location.fromCtx(ctx); return parameter; } + visitStatement(ctx: StatementContext): StatementNode { + // Statement nodes only have a single child, so we can just visit that child + return this.visit(ctx.getChild(0)); + } + visitVariableDefinition(ctx: VariableDefinitionContext): VariableDefinitionNode { - const type = parseType(ctx.typeName().text); - const modifiers = ctx.modifier().map((modifier) => modifier.text); - const name = ctx.Identifier().text; + const type = parseType(ctx.typeName().getText()); + const modifiers = ctx.modifier_list().map((modifier) => modifier.getText()); + const name = ctx.Identifier().getText(); const expression = this.visit(ctx.expression()); const variableDefinition = new VariableDefinitionNode(type, modifiers, name, expression); variableDefinition.location = Location.fromCtx(ctx); @@ -157,18 +160,19 @@ export default class AstBuilder visitTupleAssignment(ctx: TupleAssignmentContext): TupleAssignmentNode { const expression = this.visit(ctx.expression()); - const names = ctx.Identifier(); - const types = ctx.typeName(); - const [var1, var2] = names.map((name, i) => ( - { name: name.text, type: parseType(types[i].text) } - )); + const names = ctx.Identifier_list(); + const types = ctx.typeName_list(); + const [var1, var2] = names.map((name, i) => ({ + name: name.getText(), + type: parseType(types[i].getText()), + })); const tupleAssignment = new TupleAssignmentNode(var1, var2, expression); tupleAssignment.location = Location.fromCtx(ctx); return tupleAssignment; } visitAssignStatement(ctx: AssignStatementContext): AssignNode { - const identifier = new IdentifierNode(ctx.Identifier().text); + const identifier = new IdentifierNode(ctx.Identifier().getText()); identifier.location = Location.fromToken(ctx.Identifier().symbol); const expression = this.visit(ctx.expression()); @@ -179,7 +183,7 @@ export default class AstBuilder visitTimeOpStatement(ctx: TimeOpStatementContext): TimeOpNode { const expression = this.visit(ctx.expression()); - const timeOp = new TimeOpNode(ctx.TxVar().text as TimeOp, expression); + const timeOp = new TimeOpNode(ctx.TxVar().getText() as TimeOp, expression); timeOp.location = Location.fromCtx(ctx); return timeOp; @@ -202,7 +206,7 @@ export default class AstBuilder } visitBlock(ctx: BlockContext): BlockNode { - const statements = ctx.statement().map((s) => this.visit(s) as StatementNode); + const statements = ctx.statement_list().map((s) => this.visit(s) as StatementNode); const block = new BlockNode(statements); block.location = Location.fromCtx(ctx); return block; @@ -213,7 +217,7 @@ export default class AstBuilder } visitCast(ctx: CastContext): CastNode { - const type = parseType(ctx.typeName().text); + const type = parseType(ctx.typeName().getText()); const expression = this.visit(ctx._castable); const size = ctx._size && this.visit(ctx._size); const cast = new CastNode(type, expression, size); @@ -226,18 +230,18 @@ export default class AstBuilder } visitFunctionCall(ctx: FunctionCallContext): FunctionCallNode { - const identifier = new IdentifierNode(ctx.Identifier().text as string); + const identifier = new IdentifierNode(ctx.Identifier().getText()); identifier.location = Location.fromToken(ctx.Identifier().symbol); - const parameters = ctx.expressionList().expression().map((e) => this.visit(e)); + const parameters = ctx.expressionList().expression_list().map((e) => this.visit(e)); const functionCall = new FunctionCallNode(identifier, parameters); functionCall.location = Location.fromCtx(ctx); return functionCall; } visitInstantiation(ctx: InstantiationContext): InstantiationNode { - const identifier = new IdentifierNode(ctx.Identifier().text as string); + const identifier = new IdentifierNode(ctx.Identifier().getText()); identifier.location = Location.fromToken(ctx.Identifier().symbol); - const parameters = ctx.expressionList().expression().map((e) => this.visit(e)); + const parameters = ctx.expressionList().expression_list().map((e) => this.visit(e)); const instantiation = new InstantiationNode(identifier, parameters); instantiation.location = Location.fromCtx(ctx); return instantiation; @@ -245,14 +249,14 @@ export default class AstBuilder visitTupleIndexOp(ctx: TupleIndexOpContext): TupleIndexOpNode { const tuple = this.visit(ctx.expression()); - const index = parseInt(ctx._index.text as string, 10); + const index = parseInt(ctx._index.text, 10); const tupleIndexOp = new TupleIndexOpNode(tuple, index); tupleIndexOp.location = Location.fromCtx(ctx); return tupleIndexOp; } visitNullaryOp(ctx: NullaryOpContext): NullaryOpNode { - const operator = ctx.text as NullaryOperator; + const operator = ctx.getText() as NullaryOperator; const nullaryOp = new NullaryOpNode(operator); nullaryOp.location = Location.fromCtx(ctx); return nullaryOp; @@ -284,14 +288,14 @@ export default class AstBuilder } visitArray(ctx: ArrayContext): ArrayNode { - const elements = ctx.expression().map((e) => this.visit(e)); + const elements = ctx.expression_list().map((e) => this.visit(e)); const array = new ArrayNode(elements); array.location = Location.fromCtx(ctx); return array; } visitIdentifier(ctx: IdentifierContext): IdentifierNode { - const identifier = new IdentifierNode((ctx.Identifier() as TerminalNode).text); + const identifier = new IdentifierNode(ctx.Identifier().getText()); identifier.location = Location.fromCtx(ctx); return identifier; } @@ -325,7 +329,7 @@ export default class AstBuilder } createBooleanLiteral(ctx: LiteralContext): BoolLiteralNode { - const boolString = (ctx.BooleanLiteral() as TerminalNode).text; + const boolString = ctx.BooleanLiteral().getText(); const boolValue = boolString === 'true'; const booleanLiteral = new BoolLiteralNode(boolValue); booleanLiteral.location = Location.fromCtx(ctx); @@ -333,9 +337,9 @@ export default class AstBuilder } createIntLiteral(ctx: LiteralContext): IntLiteralNode { - const numberCtx = ctx.numberLiteral() as NumberLiteralContext; - const numberString = numberCtx.NumberLiteral().text; - const numberUnit = numberCtx.NumberUnit()?.text; + const numberCtx = ctx.numberLiteral(); + const numberString = numberCtx.NumberLiteral().getText(); + const numberUnit = numberCtx.NumberUnit()?.getText(); const numberValue = BigInt(numberString) * BigInt(numberUnit ? NumberUnit[numberUnit.toUpperCase()] : 1); const intLiteral = new IntLiteralNode(numberValue); intLiteral.location = Location.fromCtx(ctx); @@ -343,7 +347,7 @@ export default class AstBuilder } createStringLiteral(ctx: LiteralContext): StringLiteralNode { - const rawString = (ctx.StringLiteral() as TerminalNode).text; + const rawString = ctx.StringLiteral().getText(); const stringValue = rawString.substring(1, rawString.length - 1); const quote = rawString.substring(0, 1); const stringLiteral = new StringLiteralNode(stringValue, quote); @@ -352,7 +356,7 @@ export default class AstBuilder } createDateLiteral(ctx: LiteralContext): IntLiteralNode { - const rawString = (ctx.DateLiteral() as TerminalNode).text; + const rawString = ctx.DateLiteral().getText(); const stringValue = rawString.substring(6, rawString.length - 2).trim(); if (!/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d$/.test(stringValue)) { @@ -371,10 +375,16 @@ export default class AstBuilder } createHexLiteral(ctx: LiteralContext): HexLiteralNode { - const hexString = (ctx.HexLiteral() as TerminalNode).text; + const hexString = ctx.HexLiteral().getText(); const hexValue = hexToBin(hexString.substring(2)); const hexLiteral = new HexLiteralNode(hexValue); hexLiteral.location = Location.fromCtx(ctx); return hexLiteral; } + + // For safety reasons, we throw an error when the "default" visitChildren is called. *All* nodes + // must have a custom visit method, so that we can be sure that we've covered all cases. + visitChildren(): Node { + throw new Error('Safety Warning: Unhandled node in AST builder'); + } } diff --git a/packages/cashc/src/ast/Location.ts b/packages/cashc/src/ast/Location.ts index 93109ea0..c1e59eaf 100644 --- a/packages/cashc/src/ast/Location.ts +++ b/packages/cashc/src/ast/Location.ts @@ -1,5 +1,4 @@ -import type { ParserRuleContext } from 'antlr4ts/ParserRuleContext.js'; -import type { Token } from 'antlr4ts'; +import type { ParserRuleContext, Token } from 'antlr4'; export class Location { constructor(public start: Point, public end: Point) {} @@ -8,8 +7,8 @@ export class Location { const stop = ctx.stop?.text ? ctx.stop : ctx.start; const textLength = (stop.text ?? '').length; - const start = new Point(ctx.start.line, ctx.start.charPositionInLine); - const end = new Point(stop.line, stop.charPositionInLine + textLength); + const start = new Point(ctx.start.line, ctx.start.column); + const end = new Point(stop.line, stop.column + textLength); return new Location(start, end); } @@ -17,8 +16,8 @@ export class Location { static fromToken(token: Token): Location | undefined { const textLength = (token.text ?? '').length; - const start = new Point(token.line, token.charPositionInLine); - const end = new Point(token.line, token.charPositionInLine + textLength); + const start = new Point(token.line, token.column); + const end = new Point(token.line, token.column + textLength); return new Location(start, end); } diff --git a/packages/cashc/src/ast/Pragma.ts b/packages/cashc/src/ast/Pragma.ts index 2b67694c..be0c9b19 100644 --- a/packages/cashc/src/ast/Pragma.ts +++ b/packages/cashc/src/ast/Pragma.ts @@ -1,4 +1,4 @@ -import { VersionOperatorContext } from '../grammar/CashScriptParser.js'; +import type { VersionOperatorContext } from '../grammar/CashScriptParser.js'; export enum PragmaName { CASHSCRIPT = 'cashscript', @@ -19,5 +19,5 @@ export function getPragmaName(name: string): PragmaName { } export function getVersionOpFromCtx(ctx?: VersionOperatorContext): VersionOp { - return (ctx ? ctx.text : '='); + return (ctx ? ctx.getText() : '='); } diff --git a/packages/cashc/src/ast/ThrowingErrorListener.ts b/packages/cashc/src/ast/ThrowingErrorListener.ts index dafe6530..9d07f81a 100644 --- a/packages/cashc/src/ast/ThrowingErrorListener.ts +++ b/packages/cashc/src/ast/ThrowingErrorListener.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -import { ANTLRErrorListener, RecognitionException, Recognizer } from 'antlr4ts'; +import { ErrorListener, RecognitionException, Recognizer } from 'antlr4'; import { ParseError } from '../Errors.js'; import { Point } from './Location.js'; @@ -7,12 +7,12 @@ import { Point } from './Location.js'; * ANTLR Error Listener that immediately throws on error. This is used so that * ANTLR doesn't attempt any error recovery during lexing/parsing and fails early. */ -export default class ThrowingErrorListener implements ANTLRErrorListener { +export default class ThrowingErrorListener extends ErrorListener { static readonly INSTANCE = new ThrowingErrorListener(); - syntaxError( - recognizer: Recognizer, - offendingSymbol: T, + syntaxError( + recognizer: Recognizer, + offendingSymbol: TSymbol, line: number, charPositionInLine: number, message: string, diff --git a/packages/cashc/src/compiler.ts b/packages/cashc/src/compiler.ts index e5779275..5f4d56d7 100644 --- a/packages/cashc/src/compiler.ts +++ b/packages/cashc/src/compiler.ts @@ -1,13 +1,13 @@ +import { CharStream, CommonTokenStream } from 'antlr4'; import { Artifact, optimiseBytecode } from '@cashscript/utils'; -import { ANTLRInputStream, CommonTokenStream } from 'antlr4ts'; import fs, { PathLike } from 'fs'; import { generateArtifact } from './artifact/Artifact.js'; import { Ast } from './ast/AST.js'; import AstBuilder from './ast/AstBuilder.js'; import ThrowingErrorListener from './ast/ThrowingErrorListener.js'; import GenerateTargetTraversal from './generation/GenerateTargetTraversal.js'; -import { CashScriptLexer } from './grammar/CashScriptLexer.js'; -import { CashScriptParser } from './grammar/CashScriptParser.js'; +import CashScriptLexer from './grammar/CashScriptLexer.js'; +import CashScriptParser from './grammar/CashScriptParser.js'; import SymbolTableTraversal from './semantic/SymbolTableTraversal.js'; import TypeCheckTraversal from './semantic/TypeCheckTraversal.js'; import EnsureFinalRequireTraversal from './semantic/EnsureFinalRequireTraversal.js'; @@ -39,7 +39,7 @@ export function compileFile(codeFile: PathLike): Artifact { export function parseCode(code: string): Ast { // Lexing (throwing on errors) - const inputStream = new ANTLRInputStream(code); + const inputStream = new CharStream(code); const lexer = new CashScriptLexer(inputStream); lexer.removeErrorListeners(); lexer.addErrorListener(ThrowingErrorListener.INSTANCE); diff --git a/packages/cashc/src/grammar/CashScript.interp b/packages/cashc/src/grammar/CashScript.interp index ae258f62..46ee4da6 100644 --- a/packages/cashc/src/grammar/CashScript.interp +++ b/packages/cashc/src/grammar/CashScript.interp @@ -175,4 +175,4 @@ typeName atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 73, 324, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 3, 2, 7, 2, 54, 10, 2, 12, 2, 14, 2, 57, 11, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 5, 5, 71, 10, 5, 3, 6, 5, 6, 74, 10, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 85, 10, 8, 12, 8, 14, 8, 88, 11, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 97, 10, 9, 12, 9, 14, 9, 100, 11, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 108, 10, 10, 12, 10, 14, 10, 111, 11, 10, 3, 10, 5, 10, 114, 10, 10, 5, 10, 116, 10, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 7, 12, 125, 10, 12, 12, 12, 14, 12, 128, 11, 12, 3, 12, 3, 12, 5, 12, 132, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 140, 10, 13, 3, 14, 3, 14, 7, 14, 144, 10, 14, 12, 14, 14, 14, 147, 11, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 5, 19, 189, 10, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 7, 21, 198, 10, 21, 12, 21, 14, 21, 201, 11, 21, 3, 21, 5, 21, 204, 10, 21, 5, 21, 206, 10, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 220, 10, 22, 3, 22, 5, 22, 223, 10, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 7, 22, 249, 10, 22, 12, 22, 14, 22, 252, 11, 22, 3, 22, 5, 22, 255, 10, 22, 5, 22, 257, 10, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 263, 10, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 7, 22, 304, 10, 22, 12, 22, 14, 22, 307, 11, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 5, 24, 316, 10, 24, 3, 25, 3, 25, 5, 25, 320, 10, 25, 3, 26, 3, 26, 3, 26, 2, 2, 3, 42, 27, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 2, 12, 3, 2, 6, 12, 3, 2, 27, 31, 4, 2, 27, 31, 33, 36, 3, 2, 40, 41, 3, 2, 42, 44, 4, 2, 41, 41, 45, 45, 3, 2, 8, 11, 3, 2, 46, 47, 3, 2, 37, 38, 4, 2, 53, 58, 63, 63, 2, 350, 2, 55, 3, 2, 2, 2, 4, 61, 3, 2, 2, 2, 6, 66, 3, 2, 2, 2, 8, 68, 3, 2, 2, 2, 10, 73, 3, 2, 2, 2, 12, 77, 3, 2, 2, 2, 14, 79, 3, 2, 2, 2, 16, 91, 3, 2, 2, 2, 18, 103, 3, 2, 2, 2, 20, 119, 3, 2, 2, 2, 22, 131, 3, 2, 2, 2, 24, 139, 3, 2, 2, 2, 26, 141, 3, 2, 2, 2, 28, 153, 3, 2, 2, 2, 30, 162, 3, 2, 2, 2, 32, 167, 3, 2, 2, 2, 34, 175, 3, 2, 2, 2, 36, 181, 3, 2, 2, 2, 38, 190, 3, 2, 2, 2, 40, 193, 3, 2, 2, 2, 42, 262, 3, 2, 2, 2, 44, 308, 3, 2, 2, 2, 46, 315, 3, 2, 2, 2, 48, 317, 3, 2, 2, 2, 50, 321, 3, 2, 2, 2, 52, 54, 5, 4, 3, 2, 53, 52, 3, 2, 2, 2, 54, 57, 3, 2, 2, 2, 55, 53, 3, 2, 2, 2, 55, 56, 3, 2, 2, 2, 56, 58, 3, 2, 2, 2, 57, 55, 3, 2, 2, 2, 58, 59, 5, 14, 8, 2, 59, 60, 7, 2, 2, 3, 60, 3, 3, 2, 2, 2, 61, 62, 7, 3, 2, 2, 62, 63, 5, 6, 4, 2, 63, 64, 5, 8, 5, 2, 64, 65, 7, 4, 2, 2, 65, 5, 3, 2, 2, 2, 66, 67, 7, 5, 2, 2, 67, 7, 3, 2, 2, 2, 68, 70, 5, 10, 6, 2, 69, 71, 5, 10, 6, 2, 70, 69, 3, 2, 2, 2, 70, 71, 3, 2, 2, 2, 71, 9, 3, 2, 2, 2, 72, 74, 5, 12, 7, 2, 73, 72, 3, 2, 2, 2, 73, 74, 3, 2, 2, 2, 74, 75, 3, 2, 2, 2, 75, 76, 7, 59, 2, 2, 76, 11, 3, 2, 2, 2, 77, 78, 9, 2, 2, 2, 78, 13, 3, 2, 2, 2, 79, 80, 7, 13, 2, 2, 80, 81, 7, 70, 2, 2, 81, 82, 5, 18, 10, 2, 82, 86, 7, 14, 2, 2, 83, 85, 5, 16, 9, 2, 84, 83, 3, 2, 2, 2, 85, 88, 3, 2, 2, 2, 86, 84, 3, 2, 2, 2, 86, 87, 3, 2, 2, 2, 87, 89, 3, 2, 2, 2, 88, 86, 3, 2, 2, 2, 89, 90, 7, 15, 2, 2, 90, 15, 3, 2, 2, 2, 91, 92, 7, 16, 2, 2, 92, 93, 7, 70, 2, 2, 93, 94, 5, 18, 10, 2, 94, 98, 7, 14, 2, 2, 95, 97, 5, 24, 13, 2, 96, 95, 3, 2, 2, 2, 97, 100, 3, 2, 2, 2, 98, 96, 3, 2, 2, 2, 98, 99, 3, 2, 2, 2, 99, 101, 3, 2, 2, 2, 100, 98, 3, 2, 2, 2, 101, 102, 7, 15, 2, 2, 102, 17, 3, 2, 2, 2, 103, 115, 7, 17, 2, 2, 104, 109, 5, 20, 11, 2, 105, 106, 7, 18, 2, 2, 106, 108, 5, 20, 11, 2, 107, 105, 3, 2, 2, 2, 108, 111, 3, 2, 2, 2, 109, 107, 3, 2, 2, 2, 109, 110, 3, 2, 2, 2, 110, 113, 3, 2, 2, 2, 111, 109, 3, 2, 2, 2, 112, 114, 7, 18, 2, 2, 113, 112, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 116, 3, 2, 2, 2, 115, 104, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 117, 3, 2, 2, 2, 117, 118, 7, 19, 2, 2, 118, 19, 3, 2, 2, 2, 119, 120, 5, 50, 26, 2, 120, 121, 7, 70, 2, 2, 121, 21, 3, 2, 2, 2, 122, 126, 7, 14, 2, 2, 123, 125, 5, 24, 13, 2, 124, 123, 3, 2, 2, 2, 125, 128, 3, 2, 2, 2, 126, 124, 3, 2, 2, 2, 126, 127, 3, 2, 2, 2, 127, 129, 3, 2, 2, 2, 128, 126, 3, 2, 2, 2, 129, 132, 7, 15, 2, 2, 130, 132, 5, 24, 13, 2, 131, 122, 3, 2, 2, 2, 131, 130, 3, 2, 2, 2, 132, 23, 3, 2, 2, 2, 133, 140, 5, 26, 14, 2, 134, 140, 5, 28, 15, 2, 135, 140, 5, 30, 16, 2, 136, 140, 5, 32, 17, 2, 137, 140, 5, 34, 18, 2, 138, 140, 5, 36, 19, 2, 139, 133, 3, 2, 2, 2, 139, 134, 3, 2, 2, 2, 139, 135, 3, 2, 2, 2, 139, 136, 3, 2, 2, 2, 139, 137, 3, 2, 2, 2, 139, 138, 3, 2, 2, 2, 140, 25, 3, 2, 2, 2, 141, 145, 5, 50, 26, 2, 142, 144, 5, 44, 23, 2, 143, 142, 3, 2, 2, 2, 144, 147, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 145, 146, 3, 2, 2, 2, 146, 148, 3, 2, 2, 2, 147, 145, 3, 2, 2, 2, 148, 149, 7, 70, 2, 2, 149, 150, 7, 12, 2, 2, 150, 151, 5, 42, 22, 2, 151, 152, 7, 4, 2, 2, 152, 27, 3, 2, 2, 2, 153, 154, 5, 50, 26, 2, 154, 155, 7, 70, 2, 2, 155, 156, 7, 18, 2, 2, 156, 157, 5, 50, 26, 2, 157, 158, 7, 70, 2, 2, 158, 159, 7, 12, 2, 2, 159, 160, 5, 42, 22, 2, 160, 161, 7, 4, 2, 2, 161, 29, 3, 2, 2, 2, 162, 163, 7, 70, 2, 2, 163, 164, 7, 12, 2, 2, 164, 165, 5, 42, 22, 2, 165, 166, 7, 4, 2, 2, 166, 31, 3, 2, 2, 2, 167, 168, 7, 20, 2, 2, 168, 169, 7, 17, 2, 2, 169, 170, 7, 68, 2, 2, 170, 171, 7, 8, 2, 2, 171, 172, 5, 42, 22, 2, 172, 173, 7, 19, 2, 2, 173, 174, 7, 4, 2, 2, 174, 33, 3, 2, 2, 2, 175, 176, 7, 20, 2, 2, 176, 177, 7, 17, 2, 2, 177, 178, 5, 42, 22, 2, 178, 179, 7, 19, 2, 2, 179, 180, 7, 4, 2, 2, 180, 35, 3, 2, 2, 2, 181, 182, 7, 21, 2, 2, 182, 183, 7, 17, 2, 2, 183, 184, 5, 42, 22, 2, 184, 185, 7, 19, 2, 2, 185, 188, 5, 22, 12, 2, 186, 187, 7, 22, 2, 2, 187, 189, 5, 22, 12, 2, 188, 186, 3, 2, 2, 2, 188, 189, 3, 2, 2, 2, 189, 37, 3, 2, 2, 2, 190, 191, 7, 70, 2, 2, 191, 192, 5, 40, 21, 2, 192, 39, 3, 2, 2, 2, 193, 205, 7, 17, 2, 2, 194, 199, 5, 42, 22, 2, 195, 196, 7, 18, 2, 2, 196, 198, 5, 42, 22, 2, 197, 195, 3, 2, 2, 2, 198, 201, 3, 2, 2, 2, 199, 197, 3, 2, 2, 2, 199, 200, 3, 2, 2, 2, 200, 203, 3, 2, 2, 2, 201, 199, 3, 2, 2, 2, 202, 204, 7, 18, 2, 2, 203, 202, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 206, 3, 2, 2, 2, 205, 194, 3, 2, 2, 2, 205, 206, 3, 2, 2, 2, 206, 207, 3, 2, 2, 2, 207, 208, 7, 19, 2, 2, 208, 41, 3, 2, 2, 2, 209, 210, 8, 22, 1, 2, 210, 211, 7, 17, 2, 2, 211, 212, 5, 42, 22, 2, 212, 213, 7, 19, 2, 2, 213, 263, 3, 2, 2, 2, 214, 215, 5, 50, 26, 2, 215, 216, 7, 17, 2, 2, 216, 219, 5, 42, 22, 2, 217, 218, 7, 18, 2, 2, 218, 220, 5, 42, 22, 2, 219, 217, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 222, 3, 2, 2, 2, 221, 223, 7, 18, 2, 2, 222, 221, 3, 2, 2, 2, 222, 223, 3, 2, 2, 2, 223, 224, 3, 2, 2, 2, 224, 225, 7, 19, 2, 2, 225, 263, 3, 2, 2, 2, 226, 263, 5, 38, 20, 2, 227, 228, 7, 23, 2, 2, 228, 229, 7, 70, 2, 2, 229, 263, 5, 40, 21, 2, 230, 231, 7, 26, 2, 2, 231, 232, 7, 24, 2, 2, 232, 233, 5, 42, 22, 2, 233, 234, 7, 25, 2, 2, 234, 235, 9, 3, 2, 2, 235, 263, 3, 2, 2, 2, 236, 237, 7, 32, 2, 2, 237, 238, 7, 24, 2, 2, 238, 239, 5, 42, 22, 2, 239, 240, 7, 25, 2, 2, 240, 241, 9, 4, 2, 2, 241, 263, 3, 2, 2, 2, 242, 243, 9, 5, 2, 2, 243, 263, 5, 42, 22, 16, 244, 256, 7, 24, 2, 2, 245, 250, 5, 42, 22, 2, 246, 247, 7, 18, 2, 2, 247, 249, 5, 42, 22, 2, 248, 246, 3, 2, 2, 2, 249, 252, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 254, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 253, 255, 7, 18, 2, 2, 254, 253, 3, 2, 2, 2, 254, 255, 3, 2, 2, 2, 255, 257, 3, 2, 2, 2, 256, 245, 3, 2, 2, 2, 256, 257, 3, 2, 2, 2, 257, 258, 3, 2, 2, 2, 258, 263, 7, 25, 2, 2, 259, 263, 7, 69, 2, 2, 260, 263, 7, 70, 2, 2, 261, 263, 5, 46, 24, 2, 262, 209, 3, 2, 2, 2, 262, 214, 3, 2, 2, 2, 262, 226, 3, 2, 2, 2, 262, 227, 3, 2, 2, 2, 262, 230, 3, 2, 2, 2, 262, 236, 3, 2, 2, 2, 262, 242, 3, 2, 2, 2, 262, 244, 3, 2, 2, 2, 262, 259, 3, 2, 2, 2, 262, 260, 3, 2, 2, 2, 262, 261, 3, 2, 2, 2, 263, 305, 3, 2, 2, 2, 264, 265, 12, 15, 2, 2, 265, 266, 9, 6, 2, 2, 266, 304, 5, 42, 22, 16, 267, 268, 12, 14, 2, 2, 268, 269, 9, 7, 2, 2, 269, 304, 5, 42, 22, 15, 270, 271, 12, 13, 2, 2, 271, 272, 9, 8, 2, 2, 272, 304, 5, 42, 22, 14, 273, 274, 12, 12, 2, 2, 274, 275, 9, 9, 2, 2, 275, 304, 5, 42, 22, 13, 276, 277, 12, 11, 2, 2, 277, 278, 7, 48, 2, 2, 278, 304, 5, 42, 22, 12, 279, 280, 12, 10, 2, 2, 280, 281, 7, 6, 2, 2, 281, 304, 5, 42, 22, 11, 282, 283, 12, 9, 2, 2, 283, 284, 7, 49, 2, 2, 284, 304, 5, 42, 22, 10, 285, 286, 12, 8, 2, 2, 286, 287, 7, 50, 2, 2, 287, 304, 5, 42, 22, 9, 288, 289, 12, 7, 2, 2, 289, 290, 7, 51, 2, 2, 290, 304, 5, 42, 22, 8, 291, 292, 12, 21, 2, 2, 292, 293, 7, 24, 2, 2, 293, 294, 7, 62, 2, 2, 294, 304, 7, 25, 2, 2, 295, 296, 12, 18, 2, 2, 296, 304, 9, 10, 2, 2, 297, 298, 12, 17, 2, 2, 298, 299, 7, 39, 2, 2, 299, 300, 7, 17, 2, 2, 300, 301, 5, 42, 22, 2, 301, 302, 7, 19, 2, 2, 302, 304, 3, 2, 2, 2, 303, 264, 3, 2, 2, 2, 303, 267, 3, 2, 2, 2, 303, 270, 3, 2, 2, 2, 303, 273, 3, 2, 2, 2, 303, 276, 3, 2, 2, 2, 303, 279, 3, 2, 2, 2, 303, 282, 3, 2, 2, 2, 303, 285, 3, 2, 2, 2, 303, 288, 3, 2, 2, 2, 303, 291, 3, 2, 2, 2, 303, 295, 3, 2, 2, 2, 303, 297, 3, 2, 2, 2, 304, 307, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 43, 3, 2, 2, 2, 307, 305, 3, 2, 2, 2, 308, 309, 7, 52, 2, 2, 309, 45, 3, 2, 2, 2, 310, 316, 7, 60, 2, 2, 311, 316, 5, 48, 25, 2, 312, 316, 7, 65, 2, 2, 313, 316, 7, 66, 2, 2, 314, 316, 7, 67, 2, 2, 315, 310, 3, 2, 2, 2, 315, 311, 3, 2, 2, 2, 315, 312, 3, 2, 2, 2, 315, 313, 3, 2, 2, 2, 315, 314, 3, 2, 2, 2, 316, 47, 3, 2, 2, 2, 317, 319, 7, 62, 2, 2, 318, 320, 7, 61, 2, 2, 319, 318, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 49, 3, 2, 2, 2, 321, 322, 9, 11, 2, 2, 322, 51, 3, 2, 2, 2, 28, 55, 70, 73, 86, 98, 109, 113, 115, 126, 131, 139, 145, 188, 199, 203, 205, 219, 222, 250, 254, 256, 262, 303, 305, 315, 319] \ No newline at end of file +[4, 1, 71, 322, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 1, 0, 5, 0, 52, 8, 0, 10, 0, 12, 0, 55, 9, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 3, 3, 69, 8, 3, 1, 4, 3, 4, 72, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 83, 8, 6, 10, 6, 12, 6, 86, 9, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 95, 8, 7, 10, 7, 12, 7, 98, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 106, 8, 8, 10, 8, 12, 8, 109, 9, 8, 1, 8, 3, 8, 112, 8, 8, 3, 8, 114, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 5, 10, 123, 8, 10, 10, 10, 12, 10, 126, 9, 10, 1, 10, 1, 10, 3, 10, 130, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 138, 8, 11, 1, 12, 1, 12, 5, 12, 142, 8, 12, 10, 12, 12, 12, 145, 9, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 187, 8, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 196, 8, 19, 10, 19, 12, 19, 199, 9, 19, 1, 19, 3, 19, 202, 8, 19, 3, 19, 204, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 218, 8, 20, 1, 20, 3, 20, 221, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 247, 8, 20, 10, 20, 12, 20, 250, 9, 20, 1, 20, 3, 20, 253, 8, 20, 3, 20, 255, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 261, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 302, 8, 20, 10, 20, 12, 20, 305, 9, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 314, 8, 22, 1, 23, 1, 23, 3, 23, 318, 8, 23, 1, 24, 1, 24, 1, 24, 0, 1, 40, 25, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 0, 10, 1, 0, 4, 10, 1, 0, 25, 29, 2, 0, 25, 29, 31, 34, 1, 0, 38, 39, 1, 0, 40, 42, 2, 0, 39, 39, 43, 43, 1, 0, 6, 9, 1, 0, 44, 45, 1, 0, 35, 36, 2, 0, 51, 56, 61, 61, 348, 0, 53, 1, 0, 0, 0, 2, 59, 1, 0, 0, 0, 4, 64, 1, 0, 0, 0, 6, 66, 1, 0, 0, 0, 8, 71, 1, 0, 0, 0, 10, 75, 1, 0, 0, 0, 12, 77, 1, 0, 0, 0, 14, 89, 1, 0, 0, 0, 16, 101, 1, 0, 0, 0, 18, 117, 1, 0, 0, 0, 20, 129, 1, 0, 0, 0, 22, 137, 1, 0, 0, 0, 24, 139, 1, 0, 0, 0, 26, 151, 1, 0, 0, 0, 28, 160, 1, 0, 0, 0, 30, 165, 1, 0, 0, 0, 32, 173, 1, 0, 0, 0, 34, 179, 1, 0, 0, 0, 36, 188, 1, 0, 0, 0, 38, 191, 1, 0, 0, 0, 40, 260, 1, 0, 0, 0, 42, 306, 1, 0, 0, 0, 44, 313, 1, 0, 0, 0, 46, 315, 1, 0, 0, 0, 48, 319, 1, 0, 0, 0, 50, 52, 3, 2, 1, 0, 51, 50, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 56, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, 57, 3, 12, 6, 0, 57, 58, 5, 0, 0, 1, 58, 1, 1, 0, 0, 0, 59, 60, 5, 1, 0, 0, 60, 61, 3, 4, 2, 0, 61, 62, 3, 6, 3, 0, 62, 63, 5, 2, 0, 0, 63, 3, 1, 0, 0, 0, 64, 65, 5, 3, 0, 0, 65, 5, 1, 0, 0, 0, 66, 68, 3, 8, 4, 0, 67, 69, 3, 8, 4, 0, 68, 67, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 7, 1, 0, 0, 0, 70, 72, 3, 10, 5, 0, 71, 70, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 73, 1, 0, 0, 0, 73, 74, 5, 57, 0, 0, 74, 9, 1, 0, 0, 0, 75, 76, 7, 0, 0, 0, 76, 11, 1, 0, 0, 0, 77, 78, 5, 11, 0, 0, 78, 79, 5, 68, 0, 0, 79, 80, 3, 16, 8, 0, 80, 84, 5, 12, 0, 0, 81, 83, 3, 14, 7, 0, 82, 81, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 87, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 5, 13, 0, 0, 88, 13, 1, 0, 0, 0, 89, 90, 5, 14, 0, 0, 90, 91, 5, 68, 0, 0, 91, 92, 3, 16, 8, 0, 92, 96, 5, 12, 0, 0, 93, 95, 3, 22, 11, 0, 94, 93, 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 99, 100, 5, 13, 0, 0, 100, 15, 1, 0, 0, 0, 101, 113, 5, 15, 0, 0, 102, 107, 3, 18, 9, 0, 103, 104, 5, 16, 0, 0, 104, 106, 3, 18, 9, 0, 105, 103, 1, 0, 0, 0, 106, 109, 1, 0, 0, 0, 107, 105, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 111, 1, 0, 0, 0, 109, 107, 1, 0, 0, 0, 110, 112, 5, 16, 0, 0, 111, 110, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 114, 1, 0, 0, 0, 113, 102, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 115, 1, 0, 0, 0, 115, 116, 5, 17, 0, 0, 116, 17, 1, 0, 0, 0, 117, 118, 3, 48, 24, 0, 118, 119, 5, 68, 0, 0, 119, 19, 1, 0, 0, 0, 120, 124, 5, 12, 0, 0, 121, 123, 3, 22, 11, 0, 122, 121, 1, 0, 0, 0, 123, 126, 1, 0, 0, 0, 124, 122, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 127, 1, 0, 0, 0, 126, 124, 1, 0, 0, 0, 127, 130, 5, 13, 0, 0, 128, 130, 3, 22, 11, 0, 129, 120, 1, 0, 0, 0, 129, 128, 1, 0, 0, 0, 130, 21, 1, 0, 0, 0, 131, 138, 3, 24, 12, 0, 132, 138, 3, 26, 13, 0, 133, 138, 3, 28, 14, 0, 134, 138, 3, 30, 15, 0, 135, 138, 3, 32, 16, 0, 136, 138, 3, 34, 17, 0, 137, 131, 1, 0, 0, 0, 137, 132, 1, 0, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 136, 1, 0, 0, 0, 138, 23, 1, 0, 0, 0, 139, 143, 3, 48, 24, 0, 140, 142, 3, 42, 21, 0, 141, 140, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 68, 0, 0, 147, 148, 5, 10, 0, 0, 148, 149, 3, 40, 20, 0, 149, 150, 5, 2, 0, 0, 150, 25, 1, 0, 0, 0, 151, 152, 3, 48, 24, 0, 152, 153, 5, 68, 0, 0, 153, 154, 5, 16, 0, 0, 154, 155, 3, 48, 24, 0, 155, 156, 5, 68, 0, 0, 156, 157, 5, 10, 0, 0, 157, 158, 3, 40, 20, 0, 158, 159, 5, 2, 0, 0, 159, 27, 1, 0, 0, 0, 160, 161, 5, 68, 0, 0, 161, 162, 5, 10, 0, 0, 162, 163, 3, 40, 20, 0, 163, 164, 5, 2, 0, 0, 164, 29, 1, 0, 0, 0, 165, 166, 5, 18, 0, 0, 166, 167, 5, 15, 0, 0, 167, 168, 5, 66, 0, 0, 168, 169, 5, 6, 0, 0, 169, 170, 3, 40, 20, 0, 170, 171, 5, 17, 0, 0, 171, 172, 5, 2, 0, 0, 172, 31, 1, 0, 0, 0, 173, 174, 5, 18, 0, 0, 174, 175, 5, 15, 0, 0, 175, 176, 3, 40, 20, 0, 176, 177, 5, 17, 0, 0, 177, 178, 5, 2, 0, 0, 178, 33, 1, 0, 0, 0, 179, 180, 5, 19, 0, 0, 180, 181, 5, 15, 0, 0, 181, 182, 3, 40, 20, 0, 182, 183, 5, 17, 0, 0, 183, 186, 3, 20, 10, 0, 184, 185, 5, 20, 0, 0, 185, 187, 3, 20, 10, 0, 186, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 35, 1, 0, 0, 0, 188, 189, 5, 68, 0, 0, 189, 190, 3, 38, 19, 0, 190, 37, 1, 0, 0, 0, 191, 203, 5, 15, 0, 0, 192, 197, 3, 40, 20, 0, 193, 194, 5, 16, 0, 0, 194, 196, 3, 40, 20, 0, 195, 193, 1, 0, 0, 0, 196, 199, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 201, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 200, 202, 5, 16, 0, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 204, 1, 0, 0, 0, 203, 192, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 206, 5, 17, 0, 0, 206, 39, 1, 0, 0, 0, 207, 208, 6, 20, -1, 0, 208, 209, 5, 15, 0, 0, 209, 210, 3, 40, 20, 0, 210, 211, 5, 17, 0, 0, 211, 261, 1, 0, 0, 0, 212, 213, 3, 48, 24, 0, 213, 214, 5, 15, 0, 0, 214, 217, 3, 40, 20, 0, 215, 216, 5, 16, 0, 0, 216, 218, 3, 40, 20, 0, 217, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 220, 1, 0, 0, 0, 219, 221, 5, 16, 0, 0, 220, 219, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 5, 17, 0, 0, 223, 261, 1, 0, 0, 0, 224, 261, 3, 36, 18, 0, 225, 226, 5, 21, 0, 0, 226, 227, 5, 68, 0, 0, 227, 261, 3, 38, 19, 0, 228, 229, 5, 24, 0, 0, 229, 230, 5, 22, 0, 0, 230, 231, 3, 40, 20, 0, 231, 232, 5, 23, 0, 0, 232, 233, 7, 1, 0, 0, 233, 261, 1, 0, 0, 0, 234, 235, 5, 30, 0, 0, 235, 236, 5, 22, 0, 0, 236, 237, 3, 40, 20, 0, 237, 238, 5, 23, 0, 0, 238, 239, 7, 2, 0, 0, 239, 261, 1, 0, 0, 0, 240, 241, 7, 3, 0, 0, 241, 261, 3, 40, 20, 14, 242, 254, 5, 22, 0, 0, 243, 248, 3, 40, 20, 0, 244, 245, 5, 16, 0, 0, 245, 247, 3, 40, 20, 0, 246, 244, 1, 0, 0, 0, 247, 250, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 252, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 253, 5, 16, 0, 0, 252, 251, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 243, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 261, 5, 23, 0, 0, 257, 261, 5, 67, 0, 0, 258, 261, 5, 68, 0, 0, 259, 261, 3, 44, 22, 0, 260, 207, 1, 0, 0, 0, 260, 212, 1, 0, 0, 0, 260, 224, 1, 0, 0, 0, 260, 225, 1, 0, 0, 0, 260, 228, 1, 0, 0, 0, 260, 234, 1, 0, 0, 0, 260, 240, 1, 0, 0, 0, 260, 242, 1, 0, 0, 0, 260, 257, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 260, 259, 1, 0, 0, 0, 261, 303, 1, 0, 0, 0, 262, 263, 10, 13, 0, 0, 263, 264, 7, 4, 0, 0, 264, 302, 3, 40, 20, 14, 265, 266, 10, 12, 0, 0, 266, 267, 7, 5, 0, 0, 267, 302, 3, 40, 20, 13, 268, 269, 10, 11, 0, 0, 269, 270, 7, 6, 0, 0, 270, 302, 3, 40, 20, 12, 271, 272, 10, 10, 0, 0, 272, 273, 7, 7, 0, 0, 273, 302, 3, 40, 20, 11, 274, 275, 10, 9, 0, 0, 275, 276, 5, 46, 0, 0, 276, 302, 3, 40, 20, 10, 277, 278, 10, 8, 0, 0, 278, 279, 5, 4, 0, 0, 279, 302, 3, 40, 20, 9, 280, 281, 10, 7, 0, 0, 281, 282, 5, 47, 0, 0, 282, 302, 3, 40, 20, 8, 283, 284, 10, 6, 0, 0, 284, 285, 5, 48, 0, 0, 285, 302, 3, 40, 20, 7, 286, 287, 10, 5, 0, 0, 287, 288, 5, 49, 0, 0, 288, 302, 3, 40, 20, 6, 289, 290, 10, 19, 0, 0, 290, 291, 5, 22, 0, 0, 291, 292, 5, 60, 0, 0, 292, 302, 5, 23, 0, 0, 293, 294, 10, 16, 0, 0, 294, 302, 7, 8, 0, 0, 295, 296, 10, 15, 0, 0, 296, 297, 5, 37, 0, 0, 297, 298, 5, 15, 0, 0, 298, 299, 3, 40, 20, 0, 299, 300, 5, 17, 0, 0, 300, 302, 1, 0, 0, 0, 301, 262, 1, 0, 0, 0, 301, 265, 1, 0, 0, 0, 301, 268, 1, 0, 0, 0, 301, 271, 1, 0, 0, 0, 301, 274, 1, 0, 0, 0, 301, 277, 1, 0, 0, 0, 301, 280, 1, 0, 0, 0, 301, 283, 1, 0, 0, 0, 301, 286, 1, 0, 0, 0, 301, 289, 1, 0, 0, 0, 301, 293, 1, 0, 0, 0, 301, 295, 1, 0, 0, 0, 302, 305, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 41, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 306, 307, 5, 50, 0, 0, 307, 43, 1, 0, 0, 0, 308, 314, 5, 58, 0, 0, 309, 314, 3, 46, 23, 0, 310, 314, 5, 63, 0, 0, 311, 314, 5, 64, 0, 0, 312, 314, 5, 65, 0, 0, 313, 308, 1, 0, 0, 0, 313, 309, 1, 0, 0, 0, 313, 310, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 313, 312, 1, 0, 0, 0, 314, 45, 1, 0, 0, 0, 315, 317, 5, 60, 0, 0, 316, 318, 5, 59, 0, 0, 317, 316, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 47, 1, 0, 0, 0, 319, 320, 7, 9, 0, 0, 320, 49, 1, 0, 0, 0, 26, 53, 68, 71, 84, 96, 107, 111, 113, 124, 129, 137, 143, 186, 197, 201, 203, 217, 220, 248, 252, 254, 260, 301, 303, 313, 317] \ No newline at end of file diff --git a/packages/cashc/src/grammar/CashScriptLexer.interp b/packages/cashc/src/grammar/CashScriptLexer.interp index 65c158ce..3670f3d0 100644 --- a/packages/cashc/src/grammar/CashScriptLexer.interp +++ b/packages/cashc/src/grammar/CashScriptLexer.interp @@ -227,4 +227,4 @@ mode names: DEFAULT_MODE atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 73, 808, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 6, 58, 496, 10, 58, 13, 58, 14, 58, 497, 3, 58, 3, 58, 6, 58, 502, 10, 58, 13, 58, 14, 58, 503, 3, 58, 3, 58, 6, 58, 508, 10, 58, 13, 58, 14, 58, 509, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 5, 59, 521, 10, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 5, 60, 580, 10, 60, 3, 61, 5, 61, 583, 10, 61, 3, 61, 6, 61, 586, 10, 61, 13, 61, 14, 61, 587, 3, 61, 3, 61, 6, 61, 592, 10, 61, 13, 61, 14, 61, 593, 5, 61, 596, 10, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 605, 10, 62, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 611, 10, 62, 3, 63, 3, 63, 7, 63, 615, 10, 63, 12, 63, 14, 63, 618, 11, 63, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 624, 10, 64, 12, 64, 14, 64, 627, 11, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 7, 64, 634, 10, 64, 12, 64, 14, 64, 637, 11, 64, 3, 64, 5, 64, 640, 10, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 7, 66, 654, 10, 66, 12, 66, 14, 66, 657, 11, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, 672, 10, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 768, 10, 68, 3, 69, 3, 69, 7, 69, 772, 10, 69, 12, 69, 14, 69, 775, 11, 69, 3, 70, 6, 70, 778, 10, 70, 13, 70, 14, 70, 779, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 7, 71, 788, 10, 71, 12, 71, 14, 71, 791, 11, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 7, 72, 802, 10, 72, 12, 72, 14, 72, 805, 11, 72, 3, 72, 3, 72, 5, 625, 635, 789, 2, 2, 73, 3, 2, 3, 5, 2, 4, 7, 2, 5, 9, 2, 6, 11, 2, 7, 13, 2, 8, 15, 2, 9, 17, 2, 10, 19, 2, 11, 21, 2, 12, 23, 2, 13, 25, 2, 14, 27, 2, 15, 29, 2, 16, 31, 2, 17, 33, 2, 18, 35, 2, 19, 37, 2, 20, 39, 2, 21, 41, 2, 22, 43, 2, 23, 45, 2, 24, 47, 2, 25, 49, 2, 26, 51, 2, 27, 53, 2, 28, 55, 2, 29, 57, 2, 30, 59, 2, 31, 61, 2, 32, 63, 2, 33, 65, 2, 34, 67, 2, 35, 69, 2, 36, 71, 2, 37, 73, 2, 38, 75, 2, 39, 77, 2, 40, 79, 2, 41, 81, 2, 42, 83, 2, 43, 85, 2, 44, 87, 2, 45, 89, 2, 46, 91, 2, 47, 93, 2, 48, 95, 2, 49, 97, 2, 50, 99, 2, 51, 101, 2, 52, 103, 2, 53, 105, 2, 54, 107, 2, 55, 109, 2, 56, 111, 2, 57, 113, 2, 58, 115, 2, 59, 117, 2, 60, 119, 2, 61, 121, 2, 62, 123, 2, 63, 125, 2, 64, 127, 2, 65, 129, 2, 66, 131, 2, 67, 133, 2, 68, 135, 2, 69, 137, 2, 70, 139, 2, 71, 141, 2, 72, 143, 2, 73, 3, 2, 14, 3, 2, 50, 59, 3, 2, 47, 47, 4, 2, 71, 71, 103, 103, 3, 2, 51, 59, 5, 2, 12, 12, 15, 15, 36, 36, 5, 2, 12, 12, 15, 15, 41, 41, 4, 2, 90, 90, 122, 122, 5, 2, 50, 59, 67, 72, 99, 104, 4, 2, 67, 92, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 5, 2, 11, 12, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 2, 843, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 3, 145, 3, 2, 2, 2, 5, 152, 3, 2, 2, 2, 7, 154, 3, 2, 2, 2, 9, 165, 3, 2, 2, 2, 11, 167, 3, 2, 2, 2, 13, 169, 3, 2, 2, 2, 15, 172, 3, 2, 2, 2, 17, 174, 3, 2, 2, 2, 19, 176, 3, 2, 2, 2, 21, 179, 3, 2, 2, 2, 23, 181, 3, 2, 2, 2, 25, 190, 3, 2, 2, 2, 27, 192, 3, 2, 2, 2, 29, 194, 3, 2, 2, 2, 31, 203, 3, 2, 2, 2, 33, 205, 3, 2, 2, 2, 35, 207, 3, 2, 2, 2, 37, 209, 3, 2, 2, 2, 39, 217, 3, 2, 2, 2, 41, 220, 3, 2, 2, 2, 43, 225, 3, 2, 2, 2, 45, 229, 3, 2, 2, 2, 47, 231, 3, 2, 2, 2, 49, 233, 3, 2, 2, 2, 51, 244, 3, 2, 2, 2, 53, 251, 3, 2, 2, 2, 55, 268, 3, 2, 2, 2, 57, 283, 3, 2, 2, 2, 59, 298, 3, 2, 2, 2, 61, 311, 3, 2, 2, 2, 63, 321, 3, 2, 2, 2, 65, 346, 3, 2, 2, 2, 67, 361, 3, 2, 2, 2, 69, 380, 3, 2, 2, 2, 71, 396, 3, 2, 2, 2, 73, 407, 3, 2, 2, 2, 75, 415, 3, 2, 2, 2, 77, 422, 3, 2, 2, 2, 79, 424, 3, 2, 2, 2, 81, 426, 3, 2, 2, 2, 83, 428, 3, 2, 2, 2, 85, 430, 3, 2, 2, 2, 87, 432, 3, 2, 2, 2, 89, 434, 3, 2, 2, 2, 91, 437, 3, 2, 2, 2, 93, 440, 3, 2, 2, 2, 95, 442, 3, 2, 2, 2, 97, 444, 3, 2, 2, 2, 99, 447, 3, 2, 2, 2, 101, 450, 3, 2, 2, 2, 103, 459, 3, 2, 2, 2, 105, 463, 3, 2, 2, 2, 107, 468, 3, 2, 2, 2, 109, 475, 3, 2, 2, 2, 111, 482, 3, 2, 2, 2, 113, 486, 3, 2, 2, 2, 115, 495, 3, 2, 2, 2, 117, 520, 3, 2, 2, 2, 119, 579, 3, 2, 2, 2, 121, 582, 3, 2, 2, 2, 123, 610, 3, 2, 2, 2, 125, 612, 3, 2, 2, 2, 127, 639, 3, 2, 2, 2, 129, 641, 3, 2, 2, 2, 131, 650, 3, 2, 2, 2, 133, 671, 3, 2, 2, 2, 135, 767, 3, 2, 2, 2, 137, 769, 3, 2, 2, 2, 139, 777, 3, 2, 2, 2, 141, 783, 3, 2, 2, 2, 143, 797, 3, 2, 2, 2, 145, 146, 7, 114, 2, 2, 146, 147, 7, 116, 2, 2, 147, 148, 7, 99, 2, 2, 148, 149, 7, 105, 2, 2, 149, 150, 7, 111, 2, 2, 150, 151, 7, 99, 2, 2, 151, 4, 3, 2, 2, 2, 152, 153, 7, 61, 2, 2, 153, 6, 3, 2, 2, 2, 154, 155, 7, 101, 2, 2, 155, 156, 7, 99, 2, 2, 156, 157, 7, 117, 2, 2, 157, 158, 7, 106, 2, 2, 158, 159, 7, 117, 2, 2, 159, 160, 7, 101, 2, 2, 160, 161, 7, 116, 2, 2, 161, 162, 7, 107, 2, 2, 162, 163, 7, 114, 2, 2, 163, 164, 7, 118, 2, 2, 164, 8, 3, 2, 2, 2, 165, 166, 7, 96, 2, 2, 166, 10, 3, 2, 2, 2, 167, 168, 7, 128, 2, 2, 168, 12, 3, 2, 2, 2, 169, 170, 7, 64, 2, 2, 170, 171, 7, 63, 2, 2, 171, 14, 3, 2, 2, 2, 172, 173, 7, 64, 2, 2, 173, 16, 3, 2, 2, 2, 174, 175, 7, 62, 2, 2, 175, 18, 3, 2, 2, 2, 176, 177, 7, 62, 2, 2, 177, 178, 7, 63, 2, 2, 178, 20, 3, 2, 2, 2, 179, 180, 7, 63, 2, 2, 180, 22, 3, 2, 2, 2, 181, 182, 7, 101, 2, 2, 182, 183, 7, 113, 2, 2, 183, 184, 7, 112, 2, 2, 184, 185, 7, 118, 2, 2, 185, 186, 7, 116, 2, 2, 186, 187, 7, 99, 2, 2, 187, 188, 7, 101, 2, 2, 188, 189, 7, 118, 2, 2, 189, 24, 3, 2, 2, 2, 190, 191, 7, 125, 2, 2, 191, 26, 3, 2, 2, 2, 192, 193, 7, 127, 2, 2, 193, 28, 3, 2, 2, 2, 194, 195, 7, 104, 2, 2, 195, 196, 7, 119, 2, 2, 196, 197, 7, 112, 2, 2, 197, 198, 7, 101, 2, 2, 198, 199, 7, 118, 2, 2, 199, 200, 7, 107, 2, 2, 200, 201, 7, 113, 2, 2, 201, 202, 7, 112, 2, 2, 202, 30, 3, 2, 2, 2, 203, 204, 7, 42, 2, 2, 204, 32, 3, 2, 2, 2, 205, 206, 7, 46, 2, 2, 206, 34, 3, 2, 2, 2, 207, 208, 7, 43, 2, 2, 208, 36, 3, 2, 2, 2, 209, 210, 7, 116, 2, 2, 210, 211, 7, 103, 2, 2, 211, 212, 7, 115, 2, 2, 212, 213, 7, 119, 2, 2, 213, 214, 7, 107, 2, 2, 214, 215, 7, 116, 2, 2, 215, 216, 7, 103, 2, 2, 216, 38, 3, 2, 2, 2, 217, 218, 7, 107, 2, 2, 218, 219, 7, 104, 2, 2, 219, 40, 3, 2, 2, 2, 220, 221, 7, 103, 2, 2, 221, 222, 7, 110, 2, 2, 222, 223, 7, 117, 2, 2, 223, 224, 7, 103, 2, 2, 224, 42, 3, 2, 2, 2, 225, 226, 7, 112, 2, 2, 226, 227, 7, 103, 2, 2, 227, 228, 7, 121, 2, 2, 228, 44, 3, 2, 2, 2, 229, 230, 7, 93, 2, 2, 230, 46, 3, 2, 2, 2, 231, 232, 7, 95, 2, 2, 232, 48, 3, 2, 2, 2, 233, 234, 7, 118, 2, 2, 234, 235, 7, 122, 2, 2, 235, 236, 7, 48, 2, 2, 236, 237, 7, 113, 2, 2, 237, 238, 7, 119, 2, 2, 238, 239, 7, 118, 2, 2, 239, 240, 7, 114, 2, 2, 240, 241, 7, 119, 2, 2, 241, 242, 7, 118, 2, 2, 242, 243, 7, 117, 2, 2, 243, 50, 3, 2, 2, 2, 244, 245, 7, 48, 2, 2, 245, 246, 7, 120, 2, 2, 246, 247, 7, 99, 2, 2, 247, 248, 7, 110, 2, 2, 248, 249, 7, 119, 2, 2, 249, 250, 7, 103, 2, 2, 250, 52, 3, 2, 2, 2, 251, 252, 7, 48, 2, 2, 252, 253, 7, 110, 2, 2, 253, 254, 7, 113, 2, 2, 254, 255, 7, 101, 2, 2, 255, 256, 7, 109, 2, 2, 256, 257, 7, 107, 2, 2, 257, 258, 7, 112, 2, 2, 258, 259, 7, 105, 2, 2, 259, 260, 7, 68, 2, 2, 260, 261, 7, 123, 2, 2, 261, 262, 7, 118, 2, 2, 262, 263, 7, 103, 2, 2, 263, 264, 7, 101, 2, 2, 264, 265, 7, 113, 2, 2, 265, 266, 7, 102, 2, 2, 266, 267, 7, 103, 2, 2, 267, 54, 3, 2, 2, 2, 268, 269, 7, 48, 2, 2, 269, 270, 7, 118, 2, 2, 270, 271, 7, 113, 2, 2, 271, 272, 7, 109, 2, 2, 272, 273, 7, 103, 2, 2, 273, 274, 7, 112, 2, 2, 274, 275, 7, 69, 2, 2, 275, 276, 7, 99, 2, 2, 276, 277, 7, 118, 2, 2, 277, 278, 7, 103, 2, 2, 278, 279, 7, 105, 2, 2, 279, 280, 7, 113, 2, 2, 280, 281, 7, 116, 2, 2, 281, 282, 7, 123, 2, 2, 282, 56, 3, 2, 2, 2, 283, 284, 7, 48, 2, 2, 284, 285, 7, 112, 2, 2, 285, 286, 7, 104, 2, 2, 286, 287, 7, 118, 2, 2, 287, 288, 7, 69, 2, 2, 288, 289, 7, 113, 2, 2, 289, 290, 7, 111, 2, 2, 290, 291, 7, 111, 2, 2, 291, 292, 7, 107, 2, 2, 292, 293, 7, 118, 2, 2, 293, 294, 7, 111, 2, 2, 294, 295, 7, 103, 2, 2, 295, 296, 7, 112, 2, 2, 296, 297, 7, 118, 2, 2, 297, 58, 3, 2, 2, 2, 298, 299, 7, 48, 2, 2, 299, 300, 7, 118, 2, 2, 300, 301, 7, 113, 2, 2, 301, 302, 7, 109, 2, 2, 302, 303, 7, 103, 2, 2, 303, 304, 7, 112, 2, 2, 304, 305, 7, 67, 2, 2, 305, 306, 7, 111, 2, 2, 306, 307, 7, 113, 2, 2, 307, 308, 7, 119, 2, 2, 308, 309, 7, 112, 2, 2, 309, 310, 7, 118, 2, 2, 310, 60, 3, 2, 2, 2, 311, 312, 7, 118, 2, 2, 312, 313, 7, 122, 2, 2, 313, 314, 7, 48, 2, 2, 314, 315, 7, 107, 2, 2, 315, 316, 7, 112, 2, 2, 316, 317, 7, 114, 2, 2, 317, 318, 7, 119, 2, 2, 318, 319, 7, 118, 2, 2, 319, 320, 7, 117, 2, 2, 320, 62, 3, 2, 2, 2, 321, 322, 7, 48, 2, 2, 322, 323, 7, 113, 2, 2, 323, 324, 7, 119, 2, 2, 324, 325, 7, 118, 2, 2, 325, 326, 7, 114, 2, 2, 326, 327, 7, 113, 2, 2, 327, 328, 7, 107, 2, 2, 328, 329, 7, 112, 2, 2, 329, 330, 7, 118, 2, 2, 330, 331, 7, 86, 2, 2, 331, 332, 7, 116, 2, 2, 332, 333, 7, 99, 2, 2, 333, 334, 7, 112, 2, 2, 334, 335, 7, 117, 2, 2, 335, 336, 7, 99, 2, 2, 336, 337, 7, 101, 2, 2, 337, 338, 7, 118, 2, 2, 338, 339, 7, 107, 2, 2, 339, 340, 7, 113, 2, 2, 340, 341, 7, 112, 2, 2, 341, 342, 7, 74, 2, 2, 342, 343, 7, 99, 2, 2, 343, 344, 7, 117, 2, 2, 344, 345, 7, 106, 2, 2, 345, 64, 3, 2, 2, 2, 346, 347, 7, 48, 2, 2, 347, 348, 7, 113, 2, 2, 348, 349, 7, 119, 2, 2, 349, 350, 7, 118, 2, 2, 350, 351, 7, 114, 2, 2, 351, 352, 7, 113, 2, 2, 352, 353, 7, 107, 2, 2, 353, 354, 7, 112, 2, 2, 354, 355, 7, 118, 2, 2, 355, 356, 7, 75, 2, 2, 356, 357, 7, 112, 2, 2, 357, 358, 7, 102, 2, 2, 358, 359, 7, 103, 2, 2, 359, 360, 7, 122, 2, 2, 360, 66, 3, 2, 2, 2, 361, 362, 7, 48, 2, 2, 362, 363, 7, 119, 2, 2, 363, 364, 7, 112, 2, 2, 364, 365, 7, 110, 2, 2, 365, 366, 7, 113, 2, 2, 366, 367, 7, 101, 2, 2, 367, 368, 7, 109, 2, 2, 368, 369, 7, 107, 2, 2, 369, 370, 7, 112, 2, 2, 370, 371, 7, 105, 2, 2, 371, 372, 7, 68, 2, 2, 372, 373, 7, 123, 2, 2, 373, 374, 7, 118, 2, 2, 374, 375, 7, 103, 2, 2, 375, 376, 7, 101, 2, 2, 376, 377, 7, 113, 2, 2, 377, 378, 7, 102, 2, 2, 378, 379, 7, 103, 2, 2, 379, 68, 3, 2, 2, 2, 380, 381, 7, 48, 2, 2, 381, 382, 7, 117, 2, 2, 382, 383, 7, 103, 2, 2, 383, 384, 7, 115, 2, 2, 384, 385, 7, 119, 2, 2, 385, 386, 7, 103, 2, 2, 386, 387, 7, 112, 2, 2, 387, 388, 7, 101, 2, 2, 388, 389, 7, 103, 2, 2, 389, 390, 7, 80, 2, 2, 390, 391, 7, 119, 2, 2, 391, 392, 7, 111, 2, 2, 392, 393, 7, 100, 2, 2, 393, 394, 7, 103, 2, 2, 394, 395, 7, 116, 2, 2, 395, 70, 3, 2, 2, 2, 396, 397, 7, 48, 2, 2, 397, 398, 7, 116, 2, 2, 398, 399, 7, 103, 2, 2, 399, 400, 7, 120, 2, 2, 400, 401, 7, 103, 2, 2, 401, 402, 7, 116, 2, 2, 402, 403, 7, 117, 2, 2, 403, 404, 7, 103, 2, 2, 404, 405, 7, 42, 2, 2, 405, 406, 7, 43, 2, 2, 406, 72, 3, 2, 2, 2, 407, 408, 7, 48, 2, 2, 408, 409, 7, 110, 2, 2, 409, 410, 7, 103, 2, 2, 410, 411, 7, 112, 2, 2, 411, 412, 7, 105, 2, 2, 412, 413, 7, 118, 2, 2, 413, 414, 7, 106, 2, 2, 414, 74, 3, 2, 2, 2, 415, 416, 7, 48, 2, 2, 416, 417, 7, 117, 2, 2, 417, 418, 7, 114, 2, 2, 418, 419, 7, 110, 2, 2, 419, 420, 7, 107, 2, 2, 420, 421, 7, 118, 2, 2, 421, 76, 3, 2, 2, 2, 422, 423, 7, 35, 2, 2, 423, 78, 3, 2, 2, 2, 424, 425, 7, 47, 2, 2, 425, 80, 3, 2, 2, 2, 426, 427, 7, 44, 2, 2, 427, 82, 3, 2, 2, 2, 428, 429, 7, 49, 2, 2, 429, 84, 3, 2, 2, 2, 430, 431, 7, 39, 2, 2, 431, 86, 3, 2, 2, 2, 432, 433, 7, 45, 2, 2, 433, 88, 3, 2, 2, 2, 434, 435, 7, 63, 2, 2, 435, 436, 7, 63, 2, 2, 436, 90, 3, 2, 2, 2, 437, 438, 7, 35, 2, 2, 438, 439, 7, 63, 2, 2, 439, 92, 3, 2, 2, 2, 440, 441, 7, 40, 2, 2, 441, 94, 3, 2, 2, 2, 442, 443, 7, 126, 2, 2, 443, 96, 3, 2, 2, 2, 444, 445, 7, 40, 2, 2, 445, 446, 7, 40, 2, 2, 446, 98, 3, 2, 2, 2, 447, 448, 7, 126, 2, 2, 448, 449, 7, 126, 2, 2, 449, 100, 3, 2, 2, 2, 450, 451, 7, 101, 2, 2, 451, 452, 7, 113, 2, 2, 452, 453, 7, 112, 2, 2, 453, 454, 7, 117, 2, 2, 454, 455, 7, 118, 2, 2, 455, 456, 7, 99, 2, 2, 456, 457, 7, 112, 2, 2, 457, 458, 7, 118, 2, 2, 458, 102, 3, 2, 2, 2, 459, 460, 7, 107, 2, 2, 460, 461, 7, 112, 2, 2, 461, 462, 7, 118, 2, 2, 462, 104, 3, 2, 2, 2, 463, 464, 7, 100, 2, 2, 464, 465, 7, 113, 2, 2, 465, 466, 7, 113, 2, 2, 466, 467, 7, 110, 2, 2, 467, 106, 3, 2, 2, 2, 468, 469, 7, 117, 2, 2, 469, 470, 7, 118, 2, 2, 470, 471, 7, 116, 2, 2, 471, 472, 7, 107, 2, 2, 472, 473, 7, 112, 2, 2, 473, 474, 7, 105, 2, 2, 474, 108, 3, 2, 2, 2, 475, 476, 7, 114, 2, 2, 476, 477, 7, 119, 2, 2, 477, 478, 7, 100, 2, 2, 478, 479, 7, 109, 2, 2, 479, 480, 7, 103, 2, 2, 480, 481, 7, 123, 2, 2, 481, 110, 3, 2, 2, 2, 482, 483, 7, 117, 2, 2, 483, 484, 7, 107, 2, 2, 484, 485, 7, 105, 2, 2, 485, 112, 3, 2, 2, 2, 486, 487, 7, 102, 2, 2, 487, 488, 7, 99, 2, 2, 488, 489, 7, 118, 2, 2, 489, 490, 7, 99, 2, 2, 490, 491, 7, 117, 2, 2, 491, 492, 7, 107, 2, 2, 492, 493, 7, 105, 2, 2, 493, 114, 3, 2, 2, 2, 494, 496, 9, 2, 2, 2, 495, 494, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 499, 3, 2, 2, 2, 499, 501, 7, 48, 2, 2, 500, 502, 9, 2, 2, 2, 501, 500, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 501, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 505, 3, 2, 2, 2, 505, 507, 7, 48, 2, 2, 506, 508, 9, 2, 2, 2, 507, 506, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 507, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 116, 3, 2, 2, 2, 511, 512, 7, 118, 2, 2, 512, 513, 7, 116, 2, 2, 513, 514, 7, 119, 2, 2, 514, 521, 7, 103, 2, 2, 515, 516, 7, 104, 2, 2, 516, 517, 7, 99, 2, 2, 517, 518, 7, 110, 2, 2, 518, 519, 7, 117, 2, 2, 519, 521, 7, 103, 2, 2, 520, 511, 3, 2, 2, 2, 520, 515, 3, 2, 2, 2, 521, 118, 3, 2, 2, 2, 522, 523, 7, 117, 2, 2, 523, 524, 7, 99, 2, 2, 524, 525, 7, 118, 2, 2, 525, 526, 7, 113, 2, 2, 526, 527, 7, 117, 2, 2, 527, 528, 7, 106, 2, 2, 528, 529, 7, 107, 2, 2, 529, 580, 7, 117, 2, 2, 530, 531, 7, 117, 2, 2, 531, 532, 7, 99, 2, 2, 532, 533, 7, 118, 2, 2, 533, 580, 7, 117, 2, 2, 534, 535, 7, 104, 2, 2, 535, 536, 7, 107, 2, 2, 536, 537, 7, 112, 2, 2, 537, 538, 7, 112, 2, 2, 538, 539, 7, 103, 2, 2, 539, 580, 7, 123, 2, 2, 540, 541, 7, 100, 2, 2, 541, 542, 7, 107, 2, 2, 542, 543, 7, 118, 2, 2, 543, 580, 7, 117, 2, 2, 544, 545, 7, 100, 2, 2, 545, 546, 7, 107, 2, 2, 546, 547, 7, 118, 2, 2, 547, 548, 7, 101, 2, 2, 548, 549, 7, 113, 2, 2, 549, 550, 7, 107, 2, 2, 550, 580, 7, 112, 2, 2, 551, 552, 7, 117, 2, 2, 552, 553, 7, 103, 2, 2, 553, 554, 7, 101, 2, 2, 554, 555, 7, 113, 2, 2, 555, 556, 7, 112, 2, 2, 556, 557, 7, 102, 2, 2, 557, 580, 7, 117, 2, 2, 558, 559, 7, 111, 2, 2, 559, 560, 7, 107, 2, 2, 560, 561, 7, 112, 2, 2, 561, 562, 7, 119, 2, 2, 562, 563, 7, 118, 2, 2, 563, 564, 7, 103, 2, 2, 564, 580, 7, 117, 2, 2, 565, 566, 7, 106, 2, 2, 566, 567, 7, 113, 2, 2, 567, 568, 7, 119, 2, 2, 568, 569, 7, 116, 2, 2, 569, 580, 7, 117, 2, 2, 570, 571, 7, 102, 2, 2, 571, 572, 7, 99, 2, 2, 572, 573, 7, 123, 2, 2, 573, 580, 7, 117, 2, 2, 574, 575, 7, 121, 2, 2, 575, 576, 7, 103, 2, 2, 576, 577, 7, 103, 2, 2, 577, 578, 7, 109, 2, 2, 578, 580, 7, 117, 2, 2, 579, 522, 3, 2, 2, 2, 579, 530, 3, 2, 2, 2, 579, 534, 3, 2, 2, 2, 579, 540, 3, 2, 2, 2, 579, 544, 3, 2, 2, 2, 579, 551, 3, 2, 2, 2, 579, 558, 3, 2, 2, 2, 579, 565, 3, 2, 2, 2, 579, 570, 3, 2, 2, 2, 579, 574, 3, 2, 2, 2, 580, 120, 3, 2, 2, 2, 581, 583, 9, 3, 2, 2, 582, 581, 3, 2, 2, 2, 582, 583, 3, 2, 2, 2, 583, 585, 3, 2, 2, 2, 584, 586, 9, 2, 2, 2, 585, 584, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 585, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 595, 3, 2, 2, 2, 589, 591, 9, 4, 2, 2, 590, 592, 9, 2, 2, 2, 591, 590, 3, 2, 2, 2, 592, 593, 3, 2, 2, 2, 593, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 596, 3, 2, 2, 2, 595, 589, 3, 2, 2, 2, 595, 596, 3, 2, 2, 2, 596, 122, 3, 2, 2, 2, 597, 598, 7, 100, 2, 2, 598, 599, 7, 123, 2, 2, 599, 600, 7, 118, 2, 2, 600, 601, 7, 103, 2, 2, 601, 602, 7, 117, 2, 2, 602, 604, 3, 2, 2, 2, 603, 605, 5, 125, 63, 2, 604, 603, 3, 2, 2, 2, 604, 605, 3, 2, 2, 2, 605, 611, 3, 2, 2, 2, 606, 607, 7, 100, 2, 2, 607, 608, 7, 123, 2, 2, 608, 609, 7, 118, 2, 2, 609, 611, 7, 103, 2, 2, 610, 597, 3, 2, 2, 2, 610, 606, 3, 2, 2, 2, 611, 124, 3, 2, 2, 2, 612, 616, 9, 5, 2, 2, 613, 615, 9, 2, 2, 2, 614, 613, 3, 2, 2, 2, 615, 618, 3, 2, 2, 2, 616, 614, 3, 2, 2, 2, 616, 617, 3, 2, 2, 2, 617, 126, 3, 2, 2, 2, 618, 616, 3, 2, 2, 2, 619, 625, 7, 36, 2, 2, 620, 621, 7, 94, 2, 2, 621, 624, 7, 36, 2, 2, 622, 624, 10, 6, 2, 2, 623, 620, 3, 2, 2, 2, 623, 622, 3, 2, 2, 2, 624, 627, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 626, 628, 3, 2, 2, 2, 627, 625, 3, 2, 2, 2, 628, 640, 7, 36, 2, 2, 629, 635, 7, 41, 2, 2, 630, 631, 7, 94, 2, 2, 631, 634, 7, 41, 2, 2, 632, 634, 10, 7, 2, 2, 633, 630, 3, 2, 2, 2, 633, 632, 3, 2, 2, 2, 634, 637, 3, 2, 2, 2, 635, 636, 3, 2, 2, 2, 635, 633, 3, 2, 2, 2, 636, 638, 3, 2, 2, 2, 637, 635, 3, 2, 2, 2, 638, 640, 7, 41, 2, 2, 639, 619, 3, 2, 2, 2, 639, 629, 3, 2, 2, 2, 640, 128, 3, 2, 2, 2, 641, 642, 7, 102, 2, 2, 642, 643, 7, 99, 2, 2, 643, 644, 7, 118, 2, 2, 644, 645, 7, 103, 2, 2, 645, 646, 7, 42, 2, 2, 646, 647, 3, 2, 2, 2, 647, 648, 5, 127, 64, 2, 648, 649, 7, 43, 2, 2, 649, 130, 3, 2, 2, 2, 650, 651, 7, 50, 2, 2, 651, 655, 9, 8, 2, 2, 652, 654, 9, 9, 2, 2, 653, 652, 3, 2, 2, 2, 654, 657, 3, 2, 2, 2, 655, 653, 3, 2, 2, 2, 655, 656, 3, 2, 2, 2, 656, 132, 3, 2, 2, 2, 657, 655, 3, 2, 2, 2, 658, 659, 7, 118, 2, 2, 659, 660, 7, 122, 2, 2, 660, 661, 7, 48, 2, 2, 661, 662, 7, 99, 2, 2, 662, 663, 7, 105, 2, 2, 663, 672, 7, 103, 2, 2, 664, 665, 7, 118, 2, 2, 665, 666, 7, 122, 2, 2, 666, 667, 7, 48, 2, 2, 667, 668, 7, 118, 2, 2, 668, 669, 7, 107, 2, 2, 669, 670, 7, 111, 2, 2, 670, 672, 7, 103, 2, 2, 671, 658, 3, 2, 2, 2, 671, 664, 3, 2, 2, 2, 672, 134, 3, 2, 2, 2, 673, 674, 7, 118, 2, 2, 674, 675, 7, 106, 2, 2, 675, 676, 7, 107, 2, 2, 676, 677, 7, 117, 2, 2, 677, 678, 7, 48, 2, 2, 678, 679, 7, 99, 2, 2, 679, 680, 7, 101, 2, 2, 680, 681, 7, 118, 2, 2, 681, 682, 7, 107, 2, 2, 682, 683, 7, 120, 2, 2, 683, 684, 7, 103, 2, 2, 684, 685, 7, 75, 2, 2, 685, 686, 7, 112, 2, 2, 686, 687, 7, 114, 2, 2, 687, 688, 7, 119, 2, 2, 688, 689, 7, 118, 2, 2, 689, 690, 7, 75, 2, 2, 690, 691, 7, 112, 2, 2, 691, 692, 7, 102, 2, 2, 692, 693, 7, 103, 2, 2, 693, 768, 7, 122, 2, 2, 694, 695, 7, 118, 2, 2, 695, 696, 7, 106, 2, 2, 696, 697, 7, 107, 2, 2, 697, 698, 7, 117, 2, 2, 698, 699, 7, 48, 2, 2, 699, 700, 7, 99, 2, 2, 700, 701, 7, 101, 2, 2, 701, 702, 7, 118, 2, 2, 702, 703, 7, 107, 2, 2, 703, 704, 7, 120, 2, 2, 704, 705, 7, 103, 2, 2, 705, 706, 7, 68, 2, 2, 706, 707, 7, 123, 2, 2, 707, 708, 7, 118, 2, 2, 708, 709, 7, 103, 2, 2, 709, 710, 7, 101, 2, 2, 710, 711, 7, 113, 2, 2, 711, 712, 7, 102, 2, 2, 712, 768, 7, 103, 2, 2, 713, 714, 7, 118, 2, 2, 714, 715, 7, 122, 2, 2, 715, 716, 7, 48, 2, 2, 716, 717, 7, 107, 2, 2, 717, 718, 7, 112, 2, 2, 718, 719, 7, 114, 2, 2, 719, 720, 7, 119, 2, 2, 720, 721, 7, 118, 2, 2, 721, 722, 7, 117, 2, 2, 722, 723, 7, 48, 2, 2, 723, 724, 7, 110, 2, 2, 724, 725, 7, 103, 2, 2, 725, 726, 7, 112, 2, 2, 726, 727, 7, 105, 2, 2, 727, 728, 7, 118, 2, 2, 728, 768, 7, 106, 2, 2, 729, 730, 7, 118, 2, 2, 730, 731, 7, 122, 2, 2, 731, 732, 7, 48, 2, 2, 732, 733, 7, 113, 2, 2, 733, 734, 7, 119, 2, 2, 734, 735, 7, 118, 2, 2, 735, 736, 7, 114, 2, 2, 736, 737, 7, 119, 2, 2, 737, 738, 7, 118, 2, 2, 738, 739, 7, 117, 2, 2, 739, 740, 7, 48, 2, 2, 740, 741, 7, 110, 2, 2, 741, 742, 7, 103, 2, 2, 742, 743, 7, 112, 2, 2, 743, 744, 7, 105, 2, 2, 744, 745, 7, 118, 2, 2, 745, 768, 7, 106, 2, 2, 746, 747, 7, 118, 2, 2, 747, 748, 7, 122, 2, 2, 748, 749, 7, 48, 2, 2, 749, 750, 7, 120, 2, 2, 750, 751, 7, 103, 2, 2, 751, 752, 7, 116, 2, 2, 752, 753, 7, 117, 2, 2, 753, 754, 7, 107, 2, 2, 754, 755, 7, 113, 2, 2, 755, 768, 7, 112, 2, 2, 756, 757, 7, 118, 2, 2, 757, 758, 7, 122, 2, 2, 758, 759, 7, 48, 2, 2, 759, 760, 7, 110, 2, 2, 760, 761, 7, 113, 2, 2, 761, 762, 7, 101, 2, 2, 762, 763, 7, 109, 2, 2, 763, 764, 7, 118, 2, 2, 764, 765, 7, 107, 2, 2, 765, 766, 7, 111, 2, 2, 766, 768, 7, 103, 2, 2, 767, 673, 3, 2, 2, 2, 767, 694, 3, 2, 2, 2, 767, 713, 3, 2, 2, 2, 767, 729, 3, 2, 2, 2, 767, 746, 3, 2, 2, 2, 767, 756, 3, 2, 2, 2, 768, 136, 3, 2, 2, 2, 769, 773, 9, 10, 2, 2, 770, 772, 9, 11, 2, 2, 771, 770, 3, 2, 2, 2, 772, 775, 3, 2, 2, 2, 773, 771, 3, 2, 2, 2, 773, 774, 3, 2, 2, 2, 774, 138, 3, 2, 2, 2, 775, 773, 3, 2, 2, 2, 776, 778, 9, 12, 2, 2, 777, 776, 3, 2, 2, 2, 778, 779, 3, 2, 2, 2, 779, 777, 3, 2, 2, 2, 779, 780, 3, 2, 2, 2, 780, 781, 3, 2, 2, 2, 781, 782, 8, 70, 2, 2, 782, 140, 3, 2, 2, 2, 783, 784, 7, 49, 2, 2, 784, 785, 7, 44, 2, 2, 785, 789, 3, 2, 2, 2, 786, 788, 11, 2, 2, 2, 787, 786, 3, 2, 2, 2, 788, 791, 3, 2, 2, 2, 789, 790, 3, 2, 2, 2, 789, 787, 3, 2, 2, 2, 790, 792, 3, 2, 2, 2, 791, 789, 3, 2, 2, 2, 792, 793, 7, 44, 2, 2, 793, 794, 7, 49, 2, 2, 794, 795, 3, 2, 2, 2, 795, 796, 8, 71, 3, 2, 796, 142, 3, 2, 2, 2, 797, 798, 7, 49, 2, 2, 798, 799, 7, 49, 2, 2, 799, 803, 3, 2, 2, 2, 800, 802, 10, 13, 2, 2, 801, 800, 3, 2, 2, 2, 802, 805, 3, 2, 2, 2, 803, 801, 3, 2, 2, 2, 803, 804, 3, 2, 2, 2, 804, 806, 3, 2, 2, 2, 805, 803, 3, 2, 2, 2, 806, 807, 8, 72, 3, 2, 807, 144, 3, 2, 2, 2, 27, 2, 497, 503, 509, 520, 579, 582, 587, 593, 595, 604, 610, 616, 623, 625, 633, 635, 639, 655, 671, 767, 773, 779, 789, 803, 4, 8, 2, 2, 2, 3, 2] \ No newline at end of file +[4, 0, 71, 806, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 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, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 4, 56, 494, 8, 56, 11, 56, 12, 56, 495, 1, 56, 1, 56, 4, 56, 500, 8, 56, 11, 56, 12, 56, 501, 1, 56, 1, 56, 4, 56, 506, 8, 56, 11, 56, 12, 56, 507, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 519, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 578, 8, 58, 1, 59, 3, 59, 581, 8, 59, 1, 59, 4, 59, 584, 8, 59, 11, 59, 12, 59, 585, 1, 59, 1, 59, 4, 59, 590, 8, 59, 11, 59, 12, 59, 591, 3, 59, 594, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 603, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 609, 8, 60, 1, 61, 1, 61, 5, 61, 613, 8, 61, 10, 61, 12, 61, 616, 9, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 622, 8, 62, 10, 62, 12, 62, 625, 9, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 632, 8, 62, 10, 62, 12, 62, 635, 9, 62, 1, 62, 3, 62, 638, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 5, 64, 652, 8, 64, 10, 64, 12, 64, 655, 9, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 670, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 766, 8, 66, 1, 67, 1, 67, 5, 67, 770, 8, 67, 10, 67, 12, 67, 773, 9, 67, 1, 68, 4, 68, 776, 8, 68, 11, 68, 12, 68, 777, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 5, 69, 786, 8, 69, 10, 69, 12, 69, 789, 9, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 800, 8, 70, 10, 70, 12, 70, 803, 9, 70, 1, 70, 1, 70, 3, 623, 633, 787, 0, 71, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 1, 0, 12, 1, 0, 48, 57, 1, 0, 45, 45, 2, 0, 69, 69, 101, 101, 1, 0, 49, 57, 3, 0, 10, 10, 13, 13, 34, 34, 3, 0, 10, 10, 13, 13, 39, 39, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 65, 90, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 841, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 1, 143, 1, 0, 0, 0, 3, 150, 1, 0, 0, 0, 5, 152, 1, 0, 0, 0, 7, 163, 1, 0, 0, 0, 9, 165, 1, 0, 0, 0, 11, 167, 1, 0, 0, 0, 13, 170, 1, 0, 0, 0, 15, 172, 1, 0, 0, 0, 17, 174, 1, 0, 0, 0, 19, 177, 1, 0, 0, 0, 21, 179, 1, 0, 0, 0, 23, 188, 1, 0, 0, 0, 25, 190, 1, 0, 0, 0, 27, 192, 1, 0, 0, 0, 29, 201, 1, 0, 0, 0, 31, 203, 1, 0, 0, 0, 33, 205, 1, 0, 0, 0, 35, 207, 1, 0, 0, 0, 37, 215, 1, 0, 0, 0, 39, 218, 1, 0, 0, 0, 41, 223, 1, 0, 0, 0, 43, 227, 1, 0, 0, 0, 45, 229, 1, 0, 0, 0, 47, 231, 1, 0, 0, 0, 49, 242, 1, 0, 0, 0, 51, 249, 1, 0, 0, 0, 53, 266, 1, 0, 0, 0, 55, 281, 1, 0, 0, 0, 57, 296, 1, 0, 0, 0, 59, 309, 1, 0, 0, 0, 61, 319, 1, 0, 0, 0, 63, 344, 1, 0, 0, 0, 65, 359, 1, 0, 0, 0, 67, 378, 1, 0, 0, 0, 69, 394, 1, 0, 0, 0, 71, 405, 1, 0, 0, 0, 73, 413, 1, 0, 0, 0, 75, 420, 1, 0, 0, 0, 77, 422, 1, 0, 0, 0, 79, 424, 1, 0, 0, 0, 81, 426, 1, 0, 0, 0, 83, 428, 1, 0, 0, 0, 85, 430, 1, 0, 0, 0, 87, 432, 1, 0, 0, 0, 89, 435, 1, 0, 0, 0, 91, 438, 1, 0, 0, 0, 93, 440, 1, 0, 0, 0, 95, 442, 1, 0, 0, 0, 97, 445, 1, 0, 0, 0, 99, 448, 1, 0, 0, 0, 101, 457, 1, 0, 0, 0, 103, 461, 1, 0, 0, 0, 105, 466, 1, 0, 0, 0, 107, 473, 1, 0, 0, 0, 109, 480, 1, 0, 0, 0, 111, 484, 1, 0, 0, 0, 113, 493, 1, 0, 0, 0, 115, 518, 1, 0, 0, 0, 117, 577, 1, 0, 0, 0, 119, 580, 1, 0, 0, 0, 121, 608, 1, 0, 0, 0, 123, 610, 1, 0, 0, 0, 125, 637, 1, 0, 0, 0, 127, 639, 1, 0, 0, 0, 129, 648, 1, 0, 0, 0, 131, 669, 1, 0, 0, 0, 133, 765, 1, 0, 0, 0, 135, 767, 1, 0, 0, 0, 137, 775, 1, 0, 0, 0, 139, 781, 1, 0, 0, 0, 141, 795, 1, 0, 0, 0, 143, 144, 5, 112, 0, 0, 144, 145, 5, 114, 0, 0, 145, 146, 5, 97, 0, 0, 146, 147, 5, 103, 0, 0, 147, 148, 5, 109, 0, 0, 148, 149, 5, 97, 0, 0, 149, 2, 1, 0, 0, 0, 150, 151, 5, 59, 0, 0, 151, 4, 1, 0, 0, 0, 152, 153, 5, 99, 0, 0, 153, 154, 5, 97, 0, 0, 154, 155, 5, 115, 0, 0, 155, 156, 5, 104, 0, 0, 156, 157, 5, 115, 0, 0, 157, 158, 5, 99, 0, 0, 158, 159, 5, 114, 0, 0, 159, 160, 5, 105, 0, 0, 160, 161, 5, 112, 0, 0, 161, 162, 5, 116, 0, 0, 162, 6, 1, 0, 0, 0, 163, 164, 5, 94, 0, 0, 164, 8, 1, 0, 0, 0, 165, 166, 5, 126, 0, 0, 166, 10, 1, 0, 0, 0, 167, 168, 5, 62, 0, 0, 168, 169, 5, 61, 0, 0, 169, 12, 1, 0, 0, 0, 170, 171, 5, 62, 0, 0, 171, 14, 1, 0, 0, 0, 172, 173, 5, 60, 0, 0, 173, 16, 1, 0, 0, 0, 174, 175, 5, 60, 0, 0, 175, 176, 5, 61, 0, 0, 176, 18, 1, 0, 0, 0, 177, 178, 5, 61, 0, 0, 178, 20, 1, 0, 0, 0, 179, 180, 5, 99, 0, 0, 180, 181, 5, 111, 0, 0, 181, 182, 5, 110, 0, 0, 182, 183, 5, 116, 0, 0, 183, 184, 5, 114, 0, 0, 184, 185, 5, 97, 0, 0, 185, 186, 5, 99, 0, 0, 186, 187, 5, 116, 0, 0, 187, 22, 1, 0, 0, 0, 188, 189, 5, 123, 0, 0, 189, 24, 1, 0, 0, 0, 190, 191, 5, 125, 0, 0, 191, 26, 1, 0, 0, 0, 192, 193, 5, 102, 0, 0, 193, 194, 5, 117, 0, 0, 194, 195, 5, 110, 0, 0, 195, 196, 5, 99, 0, 0, 196, 197, 5, 116, 0, 0, 197, 198, 5, 105, 0, 0, 198, 199, 5, 111, 0, 0, 199, 200, 5, 110, 0, 0, 200, 28, 1, 0, 0, 0, 201, 202, 5, 40, 0, 0, 202, 30, 1, 0, 0, 0, 203, 204, 5, 44, 0, 0, 204, 32, 1, 0, 0, 0, 205, 206, 5, 41, 0, 0, 206, 34, 1, 0, 0, 0, 207, 208, 5, 114, 0, 0, 208, 209, 5, 101, 0, 0, 209, 210, 5, 113, 0, 0, 210, 211, 5, 117, 0, 0, 211, 212, 5, 105, 0, 0, 212, 213, 5, 114, 0, 0, 213, 214, 5, 101, 0, 0, 214, 36, 1, 0, 0, 0, 215, 216, 5, 105, 0, 0, 216, 217, 5, 102, 0, 0, 217, 38, 1, 0, 0, 0, 218, 219, 5, 101, 0, 0, 219, 220, 5, 108, 0, 0, 220, 221, 5, 115, 0, 0, 221, 222, 5, 101, 0, 0, 222, 40, 1, 0, 0, 0, 223, 224, 5, 110, 0, 0, 224, 225, 5, 101, 0, 0, 225, 226, 5, 119, 0, 0, 226, 42, 1, 0, 0, 0, 227, 228, 5, 91, 0, 0, 228, 44, 1, 0, 0, 0, 229, 230, 5, 93, 0, 0, 230, 46, 1, 0, 0, 0, 231, 232, 5, 116, 0, 0, 232, 233, 5, 120, 0, 0, 233, 234, 5, 46, 0, 0, 234, 235, 5, 111, 0, 0, 235, 236, 5, 117, 0, 0, 236, 237, 5, 116, 0, 0, 237, 238, 5, 112, 0, 0, 238, 239, 5, 117, 0, 0, 239, 240, 5, 116, 0, 0, 240, 241, 5, 115, 0, 0, 241, 48, 1, 0, 0, 0, 242, 243, 5, 46, 0, 0, 243, 244, 5, 118, 0, 0, 244, 245, 5, 97, 0, 0, 245, 246, 5, 108, 0, 0, 246, 247, 5, 117, 0, 0, 247, 248, 5, 101, 0, 0, 248, 50, 1, 0, 0, 0, 249, 250, 5, 46, 0, 0, 250, 251, 5, 108, 0, 0, 251, 252, 5, 111, 0, 0, 252, 253, 5, 99, 0, 0, 253, 254, 5, 107, 0, 0, 254, 255, 5, 105, 0, 0, 255, 256, 5, 110, 0, 0, 256, 257, 5, 103, 0, 0, 257, 258, 5, 66, 0, 0, 258, 259, 5, 121, 0, 0, 259, 260, 5, 116, 0, 0, 260, 261, 5, 101, 0, 0, 261, 262, 5, 99, 0, 0, 262, 263, 5, 111, 0, 0, 263, 264, 5, 100, 0, 0, 264, 265, 5, 101, 0, 0, 265, 52, 1, 0, 0, 0, 266, 267, 5, 46, 0, 0, 267, 268, 5, 116, 0, 0, 268, 269, 5, 111, 0, 0, 269, 270, 5, 107, 0, 0, 270, 271, 5, 101, 0, 0, 271, 272, 5, 110, 0, 0, 272, 273, 5, 67, 0, 0, 273, 274, 5, 97, 0, 0, 274, 275, 5, 116, 0, 0, 275, 276, 5, 101, 0, 0, 276, 277, 5, 103, 0, 0, 277, 278, 5, 111, 0, 0, 278, 279, 5, 114, 0, 0, 279, 280, 5, 121, 0, 0, 280, 54, 1, 0, 0, 0, 281, 282, 5, 46, 0, 0, 282, 283, 5, 110, 0, 0, 283, 284, 5, 102, 0, 0, 284, 285, 5, 116, 0, 0, 285, 286, 5, 67, 0, 0, 286, 287, 5, 111, 0, 0, 287, 288, 5, 109, 0, 0, 288, 289, 5, 109, 0, 0, 289, 290, 5, 105, 0, 0, 290, 291, 5, 116, 0, 0, 291, 292, 5, 109, 0, 0, 292, 293, 5, 101, 0, 0, 293, 294, 5, 110, 0, 0, 294, 295, 5, 116, 0, 0, 295, 56, 1, 0, 0, 0, 296, 297, 5, 46, 0, 0, 297, 298, 5, 116, 0, 0, 298, 299, 5, 111, 0, 0, 299, 300, 5, 107, 0, 0, 300, 301, 5, 101, 0, 0, 301, 302, 5, 110, 0, 0, 302, 303, 5, 65, 0, 0, 303, 304, 5, 109, 0, 0, 304, 305, 5, 111, 0, 0, 305, 306, 5, 117, 0, 0, 306, 307, 5, 110, 0, 0, 307, 308, 5, 116, 0, 0, 308, 58, 1, 0, 0, 0, 309, 310, 5, 116, 0, 0, 310, 311, 5, 120, 0, 0, 311, 312, 5, 46, 0, 0, 312, 313, 5, 105, 0, 0, 313, 314, 5, 110, 0, 0, 314, 315, 5, 112, 0, 0, 315, 316, 5, 117, 0, 0, 316, 317, 5, 116, 0, 0, 317, 318, 5, 115, 0, 0, 318, 60, 1, 0, 0, 0, 319, 320, 5, 46, 0, 0, 320, 321, 5, 111, 0, 0, 321, 322, 5, 117, 0, 0, 322, 323, 5, 116, 0, 0, 323, 324, 5, 112, 0, 0, 324, 325, 5, 111, 0, 0, 325, 326, 5, 105, 0, 0, 326, 327, 5, 110, 0, 0, 327, 328, 5, 116, 0, 0, 328, 329, 5, 84, 0, 0, 329, 330, 5, 114, 0, 0, 330, 331, 5, 97, 0, 0, 331, 332, 5, 110, 0, 0, 332, 333, 5, 115, 0, 0, 333, 334, 5, 97, 0, 0, 334, 335, 5, 99, 0, 0, 335, 336, 5, 116, 0, 0, 336, 337, 5, 105, 0, 0, 337, 338, 5, 111, 0, 0, 338, 339, 5, 110, 0, 0, 339, 340, 5, 72, 0, 0, 340, 341, 5, 97, 0, 0, 341, 342, 5, 115, 0, 0, 342, 343, 5, 104, 0, 0, 343, 62, 1, 0, 0, 0, 344, 345, 5, 46, 0, 0, 345, 346, 5, 111, 0, 0, 346, 347, 5, 117, 0, 0, 347, 348, 5, 116, 0, 0, 348, 349, 5, 112, 0, 0, 349, 350, 5, 111, 0, 0, 350, 351, 5, 105, 0, 0, 351, 352, 5, 110, 0, 0, 352, 353, 5, 116, 0, 0, 353, 354, 5, 73, 0, 0, 354, 355, 5, 110, 0, 0, 355, 356, 5, 100, 0, 0, 356, 357, 5, 101, 0, 0, 357, 358, 5, 120, 0, 0, 358, 64, 1, 0, 0, 0, 359, 360, 5, 46, 0, 0, 360, 361, 5, 117, 0, 0, 361, 362, 5, 110, 0, 0, 362, 363, 5, 108, 0, 0, 363, 364, 5, 111, 0, 0, 364, 365, 5, 99, 0, 0, 365, 366, 5, 107, 0, 0, 366, 367, 5, 105, 0, 0, 367, 368, 5, 110, 0, 0, 368, 369, 5, 103, 0, 0, 369, 370, 5, 66, 0, 0, 370, 371, 5, 121, 0, 0, 371, 372, 5, 116, 0, 0, 372, 373, 5, 101, 0, 0, 373, 374, 5, 99, 0, 0, 374, 375, 5, 111, 0, 0, 375, 376, 5, 100, 0, 0, 376, 377, 5, 101, 0, 0, 377, 66, 1, 0, 0, 0, 378, 379, 5, 46, 0, 0, 379, 380, 5, 115, 0, 0, 380, 381, 5, 101, 0, 0, 381, 382, 5, 113, 0, 0, 382, 383, 5, 117, 0, 0, 383, 384, 5, 101, 0, 0, 384, 385, 5, 110, 0, 0, 385, 386, 5, 99, 0, 0, 386, 387, 5, 101, 0, 0, 387, 388, 5, 78, 0, 0, 388, 389, 5, 117, 0, 0, 389, 390, 5, 109, 0, 0, 390, 391, 5, 98, 0, 0, 391, 392, 5, 101, 0, 0, 392, 393, 5, 114, 0, 0, 393, 68, 1, 0, 0, 0, 394, 395, 5, 46, 0, 0, 395, 396, 5, 114, 0, 0, 396, 397, 5, 101, 0, 0, 397, 398, 5, 118, 0, 0, 398, 399, 5, 101, 0, 0, 399, 400, 5, 114, 0, 0, 400, 401, 5, 115, 0, 0, 401, 402, 5, 101, 0, 0, 402, 403, 5, 40, 0, 0, 403, 404, 5, 41, 0, 0, 404, 70, 1, 0, 0, 0, 405, 406, 5, 46, 0, 0, 406, 407, 5, 108, 0, 0, 407, 408, 5, 101, 0, 0, 408, 409, 5, 110, 0, 0, 409, 410, 5, 103, 0, 0, 410, 411, 5, 116, 0, 0, 411, 412, 5, 104, 0, 0, 412, 72, 1, 0, 0, 0, 413, 414, 5, 46, 0, 0, 414, 415, 5, 115, 0, 0, 415, 416, 5, 112, 0, 0, 416, 417, 5, 108, 0, 0, 417, 418, 5, 105, 0, 0, 418, 419, 5, 116, 0, 0, 419, 74, 1, 0, 0, 0, 420, 421, 5, 33, 0, 0, 421, 76, 1, 0, 0, 0, 422, 423, 5, 45, 0, 0, 423, 78, 1, 0, 0, 0, 424, 425, 5, 42, 0, 0, 425, 80, 1, 0, 0, 0, 426, 427, 5, 47, 0, 0, 427, 82, 1, 0, 0, 0, 428, 429, 5, 37, 0, 0, 429, 84, 1, 0, 0, 0, 430, 431, 5, 43, 0, 0, 431, 86, 1, 0, 0, 0, 432, 433, 5, 61, 0, 0, 433, 434, 5, 61, 0, 0, 434, 88, 1, 0, 0, 0, 435, 436, 5, 33, 0, 0, 436, 437, 5, 61, 0, 0, 437, 90, 1, 0, 0, 0, 438, 439, 5, 38, 0, 0, 439, 92, 1, 0, 0, 0, 440, 441, 5, 124, 0, 0, 441, 94, 1, 0, 0, 0, 442, 443, 5, 38, 0, 0, 443, 444, 5, 38, 0, 0, 444, 96, 1, 0, 0, 0, 445, 446, 5, 124, 0, 0, 446, 447, 5, 124, 0, 0, 447, 98, 1, 0, 0, 0, 448, 449, 5, 99, 0, 0, 449, 450, 5, 111, 0, 0, 450, 451, 5, 110, 0, 0, 451, 452, 5, 115, 0, 0, 452, 453, 5, 116, 0, 0, 453, 454, 5, 97, 0, 0, 454, 455, 5, 110, 0, 0, 455, 456, 5, 116, 0, 0, 456, 100, 1, 0, 0, 0, 457, 458, 5, 105, 0, 0, 458, 459, 5, 110, 0, 0, 459, 460, 5, 116, 0, 0, 460, 102, 1, 0, 0, 0, 461, 462, 5, 98, 0, 0, 462, 463, 5, 111, 0, 0, 463, 464, 5, 111, 0, 0, 464, 465, 5, 108, 0, 0, 465, 104, 1, 0, 0, 0, 466, 467, 5, 115, 0, 0, 467, 468, 5, 116, 0, 0, 468, 469, 5, 114, 0, 0, 469, 470, 5, 105, 0, 0, 470, 471, 5, 110, 0, 0, 471, 472, 5, 103, 0, 0, 472, 106, 1, 0, 0, 0, 473, 474, 5, 112, 0, 0, 474, 475, 5, 117, 0, 0, 475, 476, 5, 98, 0, 0, 476, 477, 5, 107, 0, 0, 477, 478, 5, 101, 0, 0, 478, 479, 5, 121, 0, 0, 479, 108, 1, 0, 0, 0, 480, 481, 5, 115, 0, 0, 481, 482, 5, 105, 0, 0, 482, 483, 5, 103, 0, 0, 483, 110, 1, 0, 0, 0, 484, 485, 5, 100, 0, 0, 485, 486, 5, 97, 0, 0, 486, 487, 5, 116, 0, 0, 487, 488, 5, 97, 0, 0, 488, 489, 5, 115, 0, 0, 489, 490, 5, 105, 0, 0, 490, 491, 5, 103, 0, 0, 491, 112, 1, 0, 0, 0, 492, 494, 7, 0, 0, 0, 493, 492, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 499, 5, 46, 0, 0, 498, 500, 7, 0, 0, 0, 499, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 499, 1, 0, 0, 0, 501, 502, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 505, 5, 46, 0, 0, 504, 506, 7, 0, 0, 0, 505, 504, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 114, 1, 0, 0, 0, 509, 510, 5, 116, 0, 0, 510, 511, 5, 114, 0, 0, 511, 512, 5, 117, 0, 0, 512, 519, 5, 101, 0, 0, 513, 514, 5, 102, 0, 0, 514, 515, 5, 97, 0, 0, 515, 516, 5, 108, 0, 0, 516, 517, 5, 115, 0, 0, 517, 519, 5, 101, 0, 0, 518, 509, 1, 0, 0, 0, 518, 513, 1, 0, 0, 0, 519, 116, 1, 0, 0, 0, 520, 521, 5, 115, 0, 0, 521, 522, 5, 97, 0, 0, 522, 523, 5, 116, 0, 0, 523, 524, 5, 111, 0, 0, 524, 525, 5, 115, 0, 0, 525, 526, 5, 104, 0, 0, 526, 527, 5, 105, 0, 0, 527, 578, 5, 115, 0, 0, 528, 529, 5, 115, 0, 0, 529, 530, 5, 97, 0, 0, 530, 531, 5, 116, 0, 0, 531, 578, 5, 115, 0, 0, 532, 533, 5, 102, 0, 0, 533, 534, 5, 105, 0, 0, 534, 535, 5, 110, 0, 0, 535, 536, 5, 110, 0, 0, 536, 537, 5, 101, 0, 0, 537, 578, 5, 121, 0, 0, 538, 539, 5, 98, 0, 0, 539, 540, 5, 105, 0, 0, 540, 541, 5, 116, 0, 0, 541, 578, 5, 115, 0, 0, 542, 543, 5, 98, 0, 0, 543, 544, 5, 105, 0, 0, 544, 545, 5, 116, 0, 0, 545, 546, 5, 99, 0, 0, 546, 547, 5, 111, 0, 0, 547, 548, 5, 105, 0, 0, 548, 578, 5, 110, 0, 0, 549, 550, 5, 115, 0, 0, 550, 551, 5, 101, 0, 0, 551, 552, 5, 99, 0, 0, 552, 553, 5, 111, 0, 0, 553, 554, 5, 110, 0, 0, 554, 555, 5, 100, 0, 0, 555, 578, 5, 115, 0, 0, 556, 557, 5, 109, 0, 0, 557, 558, 5, 105, 0, 0, 558, 559, 5, 110, 0, 0, 559, 560, 5, 117, 0, 0, 560, 561, 5, 116, 0, 0, 561, 562, 5, 101, 0, 0, 562, 578, 5, 115, 0, 0, 563, 564, 5, 104, 0, 0, 564, 565, 5, 111, 0, 0, 565, 566, 5, 117, 0, 0, 566, 567, 5, 114, 0, 0, 567, 578, 5, 115, 0, 0, 568, 569, 5, 100, 0, 0, 569, 570, 5, 97, 0, 0, 570, 571, 5, 121, 0, 0, 571, 578, 5, 115, 0, 0, 572, 573, 5, 119, 0, 0, 573, 574, 5, 101, 0, 0, 574, 575, 5, 101, 0, 0, 575, 576, 5, 107, 0, 0, 576, 578, 5, 115, 0, 0, 577, 520, 1, 0, 0, 0, 577, 528, 1, 0, 0, 0, 577, 532, 1, 0, 0, 0, 577, 538, 1, 0, 0, 0, 577, 542, 1, 0, 0, 0, 577, 549, 1, 0, 0, 0, 577, 556, 1, 0, 0, 0, 577, 563, 1, 0, 0, 0, 577, 568, 1, 0, 0, 0, 577, 572, 1, 0, 0, 0, 578, 118, 1, 0, 0, 0, 579, 581, 7, 1, 0, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 583, 1, 0, 0, 0, 582, 584, 7, 0, 0, 0, 583, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 593, 1, 0, 0, 0, 587, 589, 7, 2, 0, 0, 588, 590, 7, 0, 0, 0, 589, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 1, 0, 0, 0, 593, 587, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 120, 1, 0, 0, 0, 595, 596, 5, 98, 0, 0, 596, 597, 5, 121, 0, 0, 597, 598, 5, 116, 0, 0, 598, 599, 5, 101, 0, 0, 599, 600, 5, 115, 0, 0, 600, 602, 1, 0, 0, 0, 601, 603, 3, 123, 61, 0, 602, 601, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 609, 1, 0, 0, 0, 604, 605, 5, 98, 0, 0, 605, 606, 5, 121, 0, 0, 606, 607, 5, 116, 0, 0, 607, 609, 5, 101, 0, 0, 608, 595, 1, 0, 0, 0, 608, 604, 1, 0, 0, 0, 609, 122, 1, 0, 0, 0, 610, 614, 7, 3, 0, 0, 611, 613, 7, 0, 0, 0, 612, 611, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 124, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 623, 5, 34, 0, 0, 618, 619, 5, 92, 0, 0, 619, 622, 5, 34, 0, 0, 620, 622, 8, 4, 0, 0, 621, 618, 1, 0, 0, 0, 621, 620, 1, 0, 0, 0, 622, 625, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 623, 621, 1, 0, 0, 0, 624, 626, 1, 0, 0, 0, 625, 623, 1, 0, 0, 0, 626, 638, 5, 34, 0, 0, 627, 633, 5, 39, 0, 0, 628, 629, 5, 92, 0, 0, 629, 632, 5, 39, 0, 0, 630, 632, 8, 5, 0, 0, 631, 628, 1, 0, 0, 0, 631, 630, 1, 0, 0, 0, 632, 635, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 634, 636, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 636, 638, 5, 39, 0, 0, 637, 617, 1, 0, 0, 0, 637, 627, 1, 0, 0, 0, 638, 126, 1, 0, 0, 0, 639, 640, 5, 100, 0, 0, 640, 641, 5, 97, 0, 0, 641, 642, 5, 116, 0, 0, 642, 643, 5, 101, 0, 0, 643, 644, 5, 40, 0, 0, 644, 645, 1, 0, 0, 0, 645, 646, 3, 125, 62, 0, 646, 647, 5, 41, 0, 0, 647, 128, 1, 0, 0, 0, 648, 649, 5, 48, 0, 0, 649, 653, 7, 6, 0, 0, 650, 652, 7, 7, 0, 0, 651, 650, 1, 0, 0, 0, 652, 655, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 130, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 656, 657, 5, 116, 0, 0, 657, 658, 5, 120, 0, 0, 658, 659, 5, 46, 0, 0, 659, 660, 5, 97, 0, 0, 660, 661, 5, 103, 0, 0, 661, 670, 5, 101, 0, 0, 662, 663, 5, 116, 0, 0, 663, 664, 5, 120, 0, 0, 664, 665, 5, 46, 0, 0, 665, 666, 5, 116, 0, 0, 666, 667, 5, 105, 0, 0, 667, 668, 5, 109, 0, 0, 668, 670, 5, 101, 0, 0, 669, 656, 1, 0, 0, 0, 669, 662, 1, 0, 0, 0, 670, 132, 1, 0, 0, 0, 671, 672, 5, 116, 0, 0, 672, 673, 5, 104, 0, 0, 673, 674, 5, 105, 0, 0, 674, 675, 5, 115, 0, 0, 675, 676, 5, 46, 0, 0, 676, 677, 5, 97, 0, 0, 677, 678, 5, 99, 0, 0, 678, 679, 5, 116, 0, 0, 679, 680, 5, 105, 0, 0, 680, 681, 5, 118, 0, 0, 681, 682, 5, 101, 0, 0, 682, 683, 5, 73, 0, 0, 683, 684, 5, 110, 0, 0, 684, 685, 5, 112, 0, 0, 685, 686, 5, 117, 0, 0, 686, 687, 5, 116, 0, 0, 687, 688, 5, 73, 0, 0, 688, 689, 5, 110, 0, 0, 689, 690, 5, 100, 0, 0, 690, 691, 5, 101, 0, 0, 691, 766, 5, 120, 0, 0, 692, 693, 5, 116, 0, 0, 693, 694, 5, 104, 0, 0, 694, 695, 5, 105, 0, 0, 695, 696, 5, 115, 0, 0, 696, 697, 5, 46, 0, 0, 697, 698, 5, 97, 0, 0, 698, 699, 5, 99, 0, 0, 699, 700, 5, 116, 0, 0, 700, 701, 5, 105, 0, 0, 701, 702, 5, 118, 0, 0, 702, 703, 5, 101, 0, 0, 703, 704, 5, 66, 0, 0, 704, 705, 5, 121, 0, 0, 705, 706, 5, 116, 0, 0, 706, 707, 5, 101, 0, 0, 707, 708, 5, 99, 0, 0, 708, 709, 5, 111, 0, 0, 709, 710, 5, 100, 0, 0, 710, 766, 5, 101, 0, 0, 711, 712, 5, 116, 0, 0, 712, 713, 5, 120, 0, 0, 713, 714, 5, 46, 0, 0, 714, 715, 5, 105, 0, 0, 715, 716, 5, 110, 0, 0, 716, 717, 5, 112, 0, 0, 717, 718, 5, 117, 0, 0, 718, 719, 5, 116, 0, 0, 719, 720, 5, 115, 0, 0, 720, 721, 5, 46, 0, 0, 721, 722, 5, 108, 0, 0, 722, 723, 5, 101, 0, 0, 723, 724, 5, 110, 0, 0, 724, 725, 5, 103, 0, 0, 725, 726, 5, 116, 0, 0, 726, 766, 5, 104, 0, 0, 727, 728, 5, 116, 0, 0, 728, 729, 5, 120, 0, 0, 729, 730, 5, 46, 0, 0, 730, 731, 5, 111, 0, 0, 731, 732, 5, 117, 0, 0, 732, 733, 5, 116, 0, 0, 733, 734, 5, 112, 0, 0, 734, 735, 5, 117, 0, 0, 735, 736, 5, 116, 0, 0, 736, 737, 5, 115, 0, 0, 737, 738, 5, 46, 0, 0, 738, 739, 5, 108, 0, 0, 739, 740, 5, 101, 0, 0, 740, 741, 5, 110, 0, 0, 741, 742, 5, 103, 0, 0, 742, 743, 5, 116, 0, 0, 743, 766, 5, 104, 0, 0, 744, 745, 5, 116, 0, 0, 745, 746, 5, 120, 0, 0, 746, 747, 5, 46, 0, 0, 747, 748, 5, 118, 0, 0, 748, 749, 5, 101, 0, 0, 749, 750, 5, 114, 0, 0, 750, 751, 5, 115, 0, 0, 751, 752, 5, 105, 0, 0, 752, 753, 5, 111, 0, 0, 753, 766, 5, 110, 0, 0, 754, 755, 5, 116, 0, 0, 755, 756, 5, 120, 0, 0, 756, 757, 5, 46, 0, 0, 757, 758, 5, 108, 0, 0, 758, 759, 5, 111, 0, 0, 759, 760, 5, 99, 0, 0, 760, 761, 5, 107, 0, 0, 761, 762, 5, 116, 0, 0, 762, 763, 5, 105, 0, 0, 763, 764, 5, 109, 0, 0, 764, 766, 5, 101, 0, 0, 765, 671, 1, 0, 0, 0, 765, 692, 1, 0, 0, 0, 765, 711, 1, 0, 0, 0, 765, 727, 1, 0, 0, 0, 765, 744, 1, 0, 0, 0, 765, 754, 1, 0, 0, 0, 766, 134, 1, 0, 0, 0, 767, 771, 7, 8, 0, 0, 768, 770, 7, 9, 0, 0, 769, 768, 1, 0, 0, 0, 770, 773, 1, 0, 0, 0, 771, 769, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 136, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 774, 776, 7, 10, 0, 0, 775, 774, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 775, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 6, 68, 0, 0, 780, 138, 1, 0, 0, 0, 781, 782, 5, 47, 0, 0, 782, 783, 5, 42, 0, 0, 783, 787, 1, 0, 0, 0, 784, 786, 9, 0, 0, 0, 785, 784, 1, 0, 0, 0, 786, 789, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 788, 790, 1, 0, 0, 0, 789, 787, 1, 0, 0, 0, 790, 791, 5, 42, 0, 0, 791, 792, 5, 47, 0, 0, 792, 793, 1, 0, 0, 0, 793, 794, 6, 69, 1, 0, 794, 140, 1, 0, 0, 0, 795, 796, 5, 47, 0, 0, 796, 797, 5, 47, 0, 0, 797, 801, 1, 0, 0, 0, 798, 800, 8, 11, 0, 0, 799, 798, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 804, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 804, 805, 6, 70, 1, 0, 805, 142, 1, 0, 0, 0, 25, 0, 495, 501, 507, 518, 577, 580, 585, 591, 593, 602, 608, 614, 621, 623, 631, 633, 637, 653, 669, 765, 771, 777, 787, 801, 2, 6, 0, 0, 0, 1, 0] \ No newline at end of file diff --git a/packages/cashc/src/grammar/CashScriptLexer.ts b/packages/cashc/src/grammar/CashScriptLexer.ts index 43c82253..5fc6f298 100644 --- a/packages/cashc/src/grammar/CashScriptLexer.ts +++ b/packages/cashc/src/grammar/CashScriptLexer.ts @@ -1,21 +1,17 @@ -// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN.js"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer.js"; -import { CharStream } from "antlr4ts/CharStream.js"; -import { Lexer } from "antlr4ts/Lexer.js"; -import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator.js"; -import { NotNull } from "antlr4ts/Decorators.js"; -import { Override } from "antlr4ts/Decorators.js"; -import { RuleContext } from "antlr4ts/RuleContext.js"; -import { Vocabulary } from "antlr4ts/Vocabulary.js"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl.js"; - -import * as Utils from "antlr4ts/misc/Utils.js"; - - -export class CashScriptLexer extends Lexer { +// Generated from src/grammar/CashScript.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols +import { + ATN, + ATNDeserializer, + CharStream, + DecisionState, DFA, + Lexer, + LexerATNSimulator, + RuleContext, + PredictionContextCache, + Token +} from "antlr4"; +export default class CashScriptLexer extends Lexer { public static readonly T__0 = 1; public static readonly T__1 = 2; public static readonly T__2 = 3; @@ -87,16 +83,88 @@ export class CashScriptLexer extends Lexer { public static readonly WHITESPACE = 69; public static readonly COMMENT = 70; public static readonly LINE_COMMENT = 71; + public static readonly EOF = Token.EOF; - // tslint:disable:no-trailing-whitespace - public static readonly channelNames: string[] = [ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", - ]; - - // tslint:disable:no-trailing-whitespace - public static readonly modeNames: string[] = [ - "DEFAULT_MODE", - ]; + public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; + public static readonly literalNames: (string | null)[] = [ null, "'pragma'", + "';'", "'cashscript'", + "'^'", "'~'", + "'>='", "'>'", + "'<'", "'<='", + "'='", "'contract'", + "'{'", "'}'", + "'function'", + "'('", "','", + "')'", "'require'", + "'if'", "'else'", + "'new'", "'['", + "']'", "'tx.outputs'", + "'.value'", + "'.lockingBytecode'", + "'.tokenCategory'", + "'.nftCommitment'", + "'.tokenAmount'", + "'tx.inputs'", + "'.outpointTransactionHash'", + "'.outpointIndex'", + "'.unlockingBytecode'", + "'.sequenceNumber'", + "'.reverse()'", + "'.length'", + "'.split'", + "'!'", "'-'", + "'*'", "'/'", + "'%'", "'+'", + "'=='", "'!='", + "'&'", "'|'", + "'&&'", "'||'", + "'constant'", + "'int'", "'bool'", + "'string'", + "'pubkey'", + "'sig'", "'datasig'" ]; + public static readonly symbolicNames: (string | null)[] = [ null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, "VersionLiteral", + "BooleanLiteral", + "NumberUnit", + "NumberLiteral", + "Bytes", "Bound", + "StringLiteral", + "DateLiteral", + "HexLiteral", + "TxVar", "NullaryOp", + "Identifier", + "WHITESPACE", + "COMMENT", + "LINE_COMMENT" ]; + public static readonly modeNames: string[] = [ "DEFAULT_MODE", ]; public static readonly ruleNames: string[] = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", @@ -111,452 +179,299 @@ export class CashScriptLexer extends Lexer { "COMMENT", "LINE_COMMENT", ]; - private static readonly _LITERAL_NAMES: Array = [ - undefined, "'pragma'", "';'", "'cashscript'", "'^'", "'~'", "'>='", "'>'", - "'<'", "'<='", "'='", "'contract'", "'{'", "'}'", "'function'", "'('", - "','", "')'", "'require'", "'if'", "'else'", "'new'", "'['", "']'", "'tx.outputs'", - "'.value'", "'.lockingBytecode'", "'.tokenCategory'", "'.nftCommitment'", - "'.tokenAmount'", "'tx.inputs'", "'.outpointTransactionHash'", "'.outpointIndex'", - "'.unlockingBytecode'", "'.sequenceNumber'", "'.reverse()'", "'.length'", - "'.split'", "'!'", "'-'", "'*'", "'/'", "'%'", "'+'", "'=='", "'!='", - "'&'", "'|'", "'&&'", "'||'", "'constant'", "'int'", "'bool'", "'string'", - "'pubkey'", "'sig'", "'datasig'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, "VersionLiteral", "BooleanLiteral", "NumberUnit", "NumberLiteral", - "Bytes", "Bound", "StringLiteral", "DateLiteral", "HexLiteral", "TxVar", - "NullaryOp", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(CashScriptLexer._LITERAL_NAMES, CashScriptLexer._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return CashScriptLexer.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - constructor(input: CharStream) { super(input); - this._interp = new LexerATNSimulator(CashScriptLexer._ATN, this); + this._interp = new LexerATNSimulator(this, CashScriptLexer._ATN, CashScriptLexer.DecisionsToDFA, new PredictionContextCache()); } - // @Override public get grammarFileName(): string { return "CashScript.g4"; } - // @Override + public get literalNames(): (string | null)[] { return CashScriptLexer.literalNames; } + public get symbolicNames(): (string | null)[] { return CashScriptLexer.symbolicNames; } public get ruleNames(): string[] { return CashScriptLexer.ruleNames; } - // @Override - public get serializedATN(): string { return CashScriptLexer._serializedATN; } + public get serializedATN(): number[] { return CashScriptLexer._serializedATN; } - // @Override public get channelNames(): string[] { return CashScriptLexer.channelNames; } - // @Override public get modeNames(): string[] { return CashScriptLexer.modeNames; } - private static readonly _serializedATNSegments: number = 2; - private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02I\u0328\b\x01" + - "\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" + - "\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" + - "\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" + - "\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t" + - "\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t" + - "\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t" + - "\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04" + - "+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" + - "4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" + - "=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" + - "F\tF\x04G\tG\x04H\tH\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03" + - "\x02\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03" + - "\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03" + - "\x07\x03\x07\x03\x07\x03\b\x03\b\x03\t\x03\t\x03\n\x03\n\x03\n\x03\v\x03" + - "\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03" + - "\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03" + - "\x0F\x03\x0F\x03\x10\x03\x10\x03\x11\x03\x11\x03\x12\x03\x12\x03\x13\x03" + - "\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03" + - "\x14\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03" + - "\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03\x19\x03" + - "\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03" + - "\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03" + - "\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03" + - "\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03" + - "\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03" + - "\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03" + - "\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03" + - "\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x03" + - "\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03\x1F\x03" + - "\x1F\x03\x1F\x03\x1F\x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03" + - " \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03 \x03" + - " \x03 \x03!\x03!\x03!\x03!\x03!\x03!\x03!\x03!\x03!\x03!\x03!\x03!\x03" + - "!\x03!\x03!\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03" + - "\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03\"\x03#\x03#\x03" + - "#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03#\x03" + - "$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03$\x03%\x03%\x03%\x03" + - "%\x03%\x03%\x03%\x03%\x03&\x03&\x03&\x03&\x03&\x03&\x03&\x03\'\x03\'\x03" + - "(\x03(\x03)\x03)\x03*\x03*\x03+\x03+\x03,\x03,\x03-\x03-\x03-\x03.\x03" + - ".\x03.\x03/\x03/\x030\x030\x031\x031\x031\x032\x032\x032\x033\x033\x03" + - "3\x033\x033\x033\x033\x033\x033\x034\x034\x034\x034\x035\x035\x035\x03" + - "5\x035\x036\x036\x036\x036\x036\x036\x036\x037\x037\x037\x037\x037\x03" + - "7\x037\x038\x038\x038\x038\x039\x039\x039\x039\x039\x039\x039\x039\x03" + - ":\x06:\u01F0\n:\r:\x0E:\u01F1\x03:\x03:\x06:\u01F6\n:\r:\x0E:\u01F7\x03" + - ":\x03:\x06:\u01FC\n:\r:\x0E:\u01FD\x03;\x03;\x03;\x03;\x03;\x03;\x03;" + - "\x03;\x03;\x05;\u0209\n;\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<" + - "\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03" + - "<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03" + - "<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03<\x03" + - "<\x03<\x03<\x03<\x03<\x03<\x03<\x05<\u0244\n<\x03=\x05=\u0247\n=\x03=" + - "\x06=\u024A\n=\r=\x0E=\u024B\x03=\x03=\x06=\u0250\n=\r=\x0E=\u0251\x05" + - "=\u0254\n=\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x05>\u025D\n>\x03>\x03>" + - "\x03>\x03>\x05>\u0263\n>\x03?\x03?\x07?\u0267\n?\f?\x0E?\u026A\v?\x03" + - "@\x03@\x03@\x03@\x07@\u0270\n@\f@\x0E@\u0273\v@\x03@\x03@\x03@\x03@\x03" + - "@\x07@\u027A\n@\f@\x0E@\u027D\v@\x03@\x05@\u0280\n@\x03A\x03A\x03A\x03" + - "A\x03A\x03A\x03A\x03A\x03A\x03B\x03B\x03B\x07B\u028E\nB\fB\x0EB\u0291" + - "\vB\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x05" + - "C\u02A0\nC\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03" + - "D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03" + - "D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03" + - "D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03" + - "D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03" + - "D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03" + - "D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x03D\x05D\u0300" + - "\nD\x03E\x03E\x07E\u0304\nE\fE\x0EE\u0307\vE\x03F\x06F\u030A\nF\rF\x0E" + - "F\u030B\x03F\x03F\x03G\x03G\x03G\x03G\x07G\u0314\nG\fG\x0EG\u0317\vG\x03" + - "G\x03G\x03G\x03G\x03G\x03H\x03H\x03H\x03H\x07H\u0322\nH\fH\x0EH\u0325" + - "\vH\x03H\x03H\x05\u0271\u027B\u0315\x02\x02I\x03\x02\x03\x05\x02\x04\x07" + - "\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15" + - "\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02" + - "\x12#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17-\x02\x18/\x02\x191" + - "\x02\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F=\x02 ?\x02!A\x02" + - "\"C\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S\x02+U\x02,W\x02-" + - "Y\x02.[\x02/]\x020_\x021a\x022c\x023e\x024g\x025i\x026k\x027m\x028o\x02" + - "9q\x02:s\x02;u\x02{\x02?}\x02@\x7F\x02A\x81\x02B\x83\x02" + - "C\x85\x02D\x87\x02E\x89\x02F\x8B\x02G\x8D\x02H\x8F\x02I\x03\x02\x0E\x03" + - "\x022;\x03\x02//\x04\x02GGgg\x03\x023;\x05\x02\f\f\x0F\x0F$$\x05\x02\f" + - "\f\x0F\x0F))\x04\x02ZZzz\x05\x022;CHch\x04\x02C\\c|\x06\x022;C\\aac|\x05" + - "\x02\v\f\x0E\x0F\"\"\x04\x02\f\f\x0F\x0F\x02\u034B\x02\x03\x03\x02\x02" + - "\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02" + - "\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02" + - "\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02" + - "\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02" + - "\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02!\x03\x02\x02\x02" + - "\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x02)" + - "\x03\x02\x02\x02\x02+\x03\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02" + - "\x02\x02\x021\x03\x02\x02\x02\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02" + - "\x027\x03\x02\x02\x02\x029\x03\x02\x02\x02\x02;\x03\x02\x02\x02\x02=\x03" + - "\x02\x02\x02\x02?\x03\x02\x02\x02\x02A\x03\x02\x02\x02\x02C\x03\x02\x02" + - "\x02\x02E\x03\x02\x02\x02\x02G\x03\x02\x02\x02\x02I\x03\x02\x02\x02\x02" + - "K\x03\x02\x02\x02\x02M\x03\x02\x02\x02\x02O\x03\x02\x02\x02\x02Q\x03\x02" + - "\x02\x02\x02S\x03\x02\x02\x02\x02U\x03\x02\x02\x02\x02W\x03\x02\x02\x02" + - "\x02Y\x03\x02\x02\x02\x02[\x03\x02\x02\x02\x02]\x03\x02\x02\x02\x02_\x03" + - "\x02\x02\x02\x02a\x03\x02\x02\x02\x02c\x03\x02\x02\x02\x02e\x03\x02\x02" + - "\x02\x02g\x03\x02\x02\x02\x02i\x03\x02\x02\x02\x02k\x03\x02\x02\x02\x02" + - "m\x03\x02\x02\x02\x02o\x03\x02\x02\x02\x02q\x03\x02\x02\x02\x02s\x03\x02" + - "\x02\x02\x02u\x03\x02\x02\x02\x02w\x03\x02\x02\x02\x02y\x03\x02\x02\x02" + - "\x02{\x03\x02\x02\x02\x02}\x03\x02\x02\x02\x02\x7F\x03\x02\x02\x02\x02" + - "\x81\x03\x02\x02\x02\x02\x83\x03\x02\x02\x02\x02\x85\x03\x02\x02\x02\x02" + - "\x87\x03\x02\x02\x02\x02\x89\x03\x02\x02\x02\x02\x8B\x03\x02\x02\x02\x02" + - "\x8D\x03\x02\x02\x02\x02\x8F\x03\x02\x02\x02\x03\x91\x03\x02\x02\x02\x05" + - "\x98\x03\x02\x02\x02\x07\x9A\x03\x02\x02\x02\t\xA5\x03\x02\x02\x02\v\xA7" + - "\x03\x02\x02\x02\r\xA9\x03\x02\x02\x02\x0F\xAC\x03\x02\x02\x02\x11\xAE" + - "\x03\x02\x02\x02\x13\xB0\x03\x02\x02\x02\x15\xB3\x03\x02\x02\x02\x17\xB5" + - "\x03\x02\x02\x02\x19\xBE\x03\x02\x02\x02\x1B\xC0\x03\x02\x02\x02\x1D\xC2" + - "\x03\x02\x02\x02\x1F\xCB\x03\x02\x02\x02!\xCD\x03\x02\x02\x02#\xCF\x03" + - "\x02\x02\x02%\xD1\x03\x02\x02\x02\'\xD9\x03\x02\x02\x02)\xDC\x03\x02\x02" + - "\x02+\xE1\x03\x02\x02\x02-\xE5\x03\x02\x02\x02/\xE7\x03\x02\x02\x021\xE9" + - "\x03\x02\x02\x023\xF4\x03\x02\x02\x025\xFB\x03\x02\x02\x027\u010C\x03" + - "\x02\x02\x029\u011B\x03\x02\x02\x02;\u012A\x03\x02\x02\x02=\u0137\x03" + - "\x02\x02\x02?\u0141\x03\x02\x02\x02A\u015A\x03\x02\x02\x02C\u0169\x03" + - "\x02\x02\x02E\u017C\x03\x02\x02\x02G\u018C\x03\x02\x02\x02I\u0197\x03" + - "\x02\x02\x02K\u019F\x03\x02\x02\x02M\u01A6\x03\x02\x02\x02O\u01A8\x03" + - "\x02\x02\x02Q\u01AA\x03\x02\x02\x02S\u01AC\x03\x02\x02\x02U\u01AE\x03" + - "\x02\x02\x02W\u01B0\x03\x02\x02\x02Y\u01B2\x03\x02\x02\x02[\u01B5\x03" + - "\x02\x02\x02]\u01B8\x03\x02\x02\x02_\u01BA\x03\x02\x02\x02a\u01BC\x03" + - "\x02\x02\x02c\u01BF\x03\x02\x02\x02e\u01C2\x03\x02\x02\x02g\u01CB\x03" + - "\x02\x02\x02i\u01CF\x03\x02\x02\x02k\u01D4\x03\x02\x02\x02m\u01DB\x03" + - "\x02\x02\x02o\u01E2\x03\x02\x02\x02q\u01E6\x03\x02\x02\x02s\u01EF\x03" + - "\x02\x02\x02u\u0208\x03\x02\x02\x02w\u0243\x03\x02\x02\x02y\u0246\x03" + - "\x02\x02\x02{\u0262\x03\x02\x02\x02}\u0264\x03\x02\x02\x02\x7F\u027F\x03" + - "\x02\x02\x02\x81\u0281\x03\x02\x02\x02\x83\u028A\x03\x02\x02\x02\x85\u029F" + - "\x03\x02\x02\x02\x87\u02FF\x03\x02\x02\x02\x89\u0301\x03\x02\x02\x02\x8B" + - "\u0309\x03\x02\x02\x02\x8D\u030F\x03\x02\x02\x02\x8F\u031D\x03\x02\x02" + - "\x02\x91\x92\x07r\x02\x02\x92\x93\x07t\x02\x02\x93\x94\x07c\x02\x02\x94" + - "\x95\x07i\x02\x02\x95\x96\x07o\x02\x02\x96\x97\x07c\x02\x02\x97\x04\x03" + - "\x02\x02\x02\x98\x99\x07=\x02\x02\x99\x06\x03\x02\x02\x02\x9A\x9B\x07" + - "e\x02\x02\x9B\x9C\x07c\x02\x02\x9C\x9D\x07u\x02\x02\x9D\x9E\x07j\x02\x02" + - "\x9E\x9F\x07u\x02\x02\x9F\xA0\x07e\x02\x02\xA0\xA1\x07t\x02\x02\xA1\xA2" + - "\x07k\x02\x02\xA2\xA3\x07r\x02\x02\xA3\xA4\x07v\x02\x02\xA4\b\x03\x02" + - "\x02\x02\xA5\xA6\x07`\x02\x02\xA6\n\x03\x02\x02\x02\xA7\xA8\x07\x80\x02" + - "\x02\xA8\f\x03\x02\x02\x02\xA9\xAA\x07@\x02\x02\xAA\xAB\x07?\x02\x02\xAB" + - "\x0E\x03\x02\x02\x02\xAC\xAD\x07@\x02\x02\xAD\x10\x03\x02\x02\x02\xAE" + - "\xAF\x07>\x02\x02\xAF\x12\x03\x02\x02\x02\xB0\xB1\x07>\x02\x02\xB1\xB2" + - "\x07?\x02\x02\xB2\x14\x03\x02\x02\x02\xB3\xB4\x07?\x02\x02\xB4\x16\x03" + - "\x02\x02\x02\xB5\xB6\x07e\x02\x02\xB6\xB7\x07q\x02\x02\xB7\xB8\x07p\x02" + - "\x02\xB8\xB9\x07v\x02\x02\xB9\xBA\x07t\x02\x02\xBA\xBB\x07c\x02\x02\xBB" + - "\xBC\x07e\x02\x02\xBC\xBD\x07v\x02\x02\xBD\x18\x03\x02\x02\x02\xBE\xBF" + - "\x07}\x02\x02\xBF\x1A\x03\x02\x02\x02\xC0\xC1\x07\x7F\x02\x02\xC1\x1C" + - "\x03\x02\x02\x02\xC2\xC3\x07h\x02\x02\xC3\xC4\x07w\x02\x02\xC4\xC5\x07" + - "p\x02\x02\xC5\xC6\x07e\x02\x02\xC6\xC7\x07v\x02\x02\xC7\xC8\x07k\x02\x02" + - "\xC8\xC9\x07q\x02\x02\xC9\xCA\x07p\x02\x02\xCA\x1E\x03\x02\x02\x02\xCB" + - "\xCC\x07*\x02\x02\xCC \x03\x02\x02\x02\xCD\xCE\x07.\x02\x02\xCE\"\x03" + - "\x02\x02\x02\xCF\xD0\x07+\x02\x02\xD0$\x03\x02\x02\x02\xD1\xD2\x07t\x02" + - "\x02\xD2\xD3\x07g\x02\x02\xD3\xD4\x07s\x02\x02\xD4\xD5\x07w\x02\x02\xD5" + - "\xD6\x07k\x02\x02\xD6\xD7\x07t\x02\x02\xD7\xD8\x07g\x02\x02\xD8&\x03\x02" + - "\x02\x02\xD9\xDA\x07k\x02\x02\xDA\xDB\x07h\x02\x02\xDB(\x03\x02\x02\x02" + - "\xDC\xDD\x07g\x02\x02\xDD\xDE\x07n\x02\x02\xDE\xDF\x07u\x02\x02\xDF\xE0" + - "\x07g\x02\x02\xE0*\x03\x02\x02\x02\xE1\xE2\x07p\x02\x02\xE2\xE3\x07g\x02" + - "\x02\xE3\xE4\x07y\x02\x02\xE4,\x03\x02\x02\x02\xE5\xE6\x07]\x02\x02\xE6" + - ".\x03\x02\x02\x02\xE7\xE8\x07_\x02\x02\xE80\x03\x02\x02\x02\xE9\xEA\x07" + - "v\x02\x02\xEA\xEB\x07z\x02\x02\xEB\xEC\x070\x02\x02\xEC\xED\x07q\x02\x02" + - "\xED\xEE\x07w\x02\x02\xEE\xEF\x07v\x02\x02\xEF\xF0\x07r\x02\x02\xF0\xF1" + - "\x07w\x02\x02\xF1\xF2\x07v\x02\x02\xF2\xF3\x07u\x02\x02\xF32\x03\x02\x02" + - "\x02\xF4\xF5\x070\x02\x02\xF5\xF6\x07x\x02\x02\xF6\xF7\x07c\x02\x02\xF7" + - "\xF8\x07n\x02\x02\xF8\xF9\x07w\x02\x02\xF9\xFA\x07g\x02\x02\xFA4\x03\x02" + - "\x02\x02\xFB\xFC\x070\x02\x02\xFC\xFD\x07n\x02\x02\xFD\xFE\x07q\x02\x02" + - "\xFE\xFF\x07e\x02\x02\xFF\u0100\x07m\x02\x02\u0100\u0101\x07k\x02\x02" + - "\u0101\u0102\x07p\x02\x02\u0102\u0103\x07i\x02\x02\u0103\u0104\x07D\x02" + - "\x02\u0104\u0105\x07{\x02\x02\u0105\u0106\x07v\x02\x02\u0106\u0107\x07" + - "g\x02\x02\u0107\u0108\x07e\x02\x02\u0108\u0109\x07q\x02\x02\u0109\u010A" + - "\x07f\x02\x02\u010A\u010B\x07g\x02\x02\u010B6\x03\x02\x02\x02\u010C\u010D" + - "\x070\x02\x02\u010D\u010E\x07v\x02\x02\u010E\u010F\x07q\x02\x02\u010F" + - "\u0110\x07m\x02\x02\u0110\u0111\x07g\x02\x02\u0111\u0112\x07p\x02\x02" + - "\u0112\u0113\x07E\x02\x02\u0113\u0114\x07c\x02\x02\u0114\u0115\x07v\x02" + - "\x02\u0115\u0116\x07g\x02\x02\u0116\u0117\x07i\x02\x02\u0117\u0118\x07" + - "q\x02\x02\u0118\u0119\x07t\x02\x02\u0119\u011A\x07{\x02\x02\u011A8\x03" + - "\x02\x02\x02\u011B\u011C\x070\x02\x02\u011C\u011D\x07p\x02\x02\u011D\u011E" + - "\x07h\x02\x02\u011E\u011F\x07v\x02\x02\u011F\u0120\x07E\x02\x02\u0120" + - "\u0121\x07q\x02\x02\u0121\u0122\x07o\x02\x02\u0122\u0123\x07o\x02\x02" + - "\u0123\u0124\x07k\x02\x02\u0124\u0125\x07v\x02\x02\u0125\u0126\x07o\x02" + - "\x02\u0126\u0127\x07g\x02\x02\u0127\u0128\x07p\x02\x02\u0128\u0129\x07" + - "v\x02\x02\u0129:\x03\x02\x02\x02\u012A\u012B\x070\x02\x02\u012B\u012C" + - "\x07v\x02\x02\u012C\u012D\x07q\x02\x02\u012D\u012E\x07m\x02\x02\u012E" + - "\u012F\x07g\x02\x02\u012F\u0130\x07p\x02\x02\u0130\u0131\x07C\x02\x02" + - "\u0131\u0132\x07o\x02\x02\u0132\u0133\x07q\x02\x02\u0133\u0134\x07w\x02" + - "\x02\u0134\u0135\x07p\x02\x02\u0135\u0136\x07v\x02\x02\u0136<\x03\x02" + - "\x02\x02\u0137\u0138\x07v\x02\x02\u0138\u0139\x07z\x02\x02\u0139\u013A" + - "\x070\x02\x02\u013A\u013B\x07k\x02\x02\u013B\u013C\x07p\x02\x02\u013C" + - "\u013D\x07r\x02\x02\u013D\u013E\x07w\x02\x02\u013E\u013F\x07v\x02\x02" + - "\u013F\u0140\x07u\x02\x02\u0140>\x03\x02\x02\x02\u0141\u0142\x070\x02" + - "\x02\u0142\u0143\x07q\x02\x02\u0143\u0144\x07w\x02\x02\u0144\u0145\x07" + - "v\x02\x02\u0145\u0146\x07r\x02\x02\u0146\u0147\x07q\x02\x02\u0147\u0148" + - "\x07k\x02\x02\u0148\u0149\x07p\x02\x02\u0149\u014A\x07v\x02\x02\u014A" + - "\u014B\x07V\x02\x02\u014B\u014C\x07t\x02\x02\u014C\u014D\x07c\x02\x02" + - "\u014D\u014E\x07p\x02\x02\u014E\u014F\x07u\x02\x02\u014F\u0150\x07c\x02" + - "\x02\u0150\u0151\x07e\x02\x02\u0151\u0152\x07v\x02\x02\u0152\u0153\x07" + - "k\x02\x02\u0153\u0154\x07q\x02\x02\u0154\u0155\x07p\x02\x02\u0155\u0156" + - "\x07J\x02\x02\u0156\u0157\x07c\x02\x02\u0157\u0158\x07u\x02\x02\u0158" + - "\u0159\x07j\x02\x02\u0159@\x03\x02\x02\x02\u015A\u015B\x070\x02\x02\u015B" + - "\u015C\x07q\x02\x02\u015C\u015D\x07w\x02\x02\u015D\u015E\x07v\x02\x02" + - "\u015E\u015F\x07r\x02\x02\u015F\u0160\x07q\x02\x02\u0160\u0161\x07k\x02" + - "\x02\u0161\u0162\x07p\x02\x02\u0162\u0163\x07v\x02\x02\u0163\u0164\x07" + - "K\x02\x02\u0164\u0165\x07p\x02\x02\u0165\u0166\x07f\x02\x02\u0166\u0167" + - "\x07g\x02\x02\u0167\u0168\x07z\x02\x02\u0168B\x03\x02\x02\x02\u0169\u016A" + - "\x070\x02\x02\u016A\u016B\x07w\x02\x02\u016B\u016C\x07p\x02\x02\u016C" + - "\u016D\x07n\x02\x02\u016D\u016E\x07q\x02\x02\u016E\u016F\x07e\x02\x02" + - "\u016F\u0170\x07m\x02\x02\u0170\u0171\x07k\x02\x02\u0171\u0172\x07p\x02" + - "\x02\u0172\u0173\x07i\x02\x02\u0173\u0174\x07D\x02\x02\u0174\u0175\x07" + - "{\x02\x02\u0175\u0176\x07v\x02\x02\u0176\u0177\x07g\x02\x02\u0177\u0178" + - "\x07e\x02\x02\u0178\u0179\x07q\x02\x02\u0179\u017A\x07f\x02\x02\u017A" + - "\u017B\x07g\x02\x02\u017BD\x03\x02\x02\x02\u017C\u017D\x070\x02\x02\u017D" + - "\u017E\x07u\x02\x02\u017E\u017F\x07g\x02\x02\u017F\u0180\x07s\x02\x02" + - "\u0180\u0181\x07w\x02\x02\u0181\u0182\x07g\x02\x02\u0182\u0183\x07p\x02" + - "\x02\u0183\u0184\x07e\x02\x02\u0184\u0185\x07g\x02\x02\u0185\u0186\x07" + - "P\x02\x02\u0186\u0187\x07w\x02\x02\u0187\u0188\x07o\x02\x02\u0188\u0189" + - "\x07d\x02\x02\u0189\u018A\x07g\x02\x02\u018A\u018B\x07t\x02\x02\u018B" + - "F\x03\x02\x02\x02\u018C\u018D\x070\x02\x02\u018D\u018E\x07t\x02\x02\u018E" + - "\u018F\x07g\x02\x02\u018F\u0190\x07x\x02\x02\u0190\u0191\x07g\x02\x02" + - "\u0191\u0192\x07t\x02\x02\u0192\u0193\x07u\x02\x02\u0193\u0194\x07g\x02" + - "\x02\u0194\u0195\x07*\x02\x02\u0195\u0196\x07+\x02\x02\u0196H\x03\x02" + - "\x02\x02\u0197\u0198\x070\x02\x02\u0198\u0199\x07n\x02\x02\u0199\u019A" + - "\x07g\x02\x02\u019A\u019B\x07p\x02\x02\u019B\u019C\x07i\x02\x02\u019C" + - "\u019D\x07v\x02\x02\u019D\u019E\x07j\x02\x02\u019EJ\x03\x02\x02\x02\u019F" + - "\u01A0\x070\x02\x02\u01A0\u01A1\x07u\x02\x02\u01A1\u01A2\x07r\x02\x02" + - "\u01A2\u01A3\x07n\x02\x02\u01A3\u01A4\x07k\x02\x02\u01A4\u01A5\x07v\x02" + - "\x02\u01A5L\x03\x02\x02\x02\u01A6\u01A7\x07#\x02\x02\u01A7N\x03\x02\x02" + - "\x02\u01A8\u01A9\x07/\x02\x02\u01A9P\x03\x02\x02\x02\u01AA\u01AB\x07," + - "\x02\x02\u01ABR\x03\x02\x02\x02\u01AC\u01AD\x071\x02\x02\u01ADT\x03\x02" + - "\x02\x02\u01AE\u01AF\x07\'\x02\x02\u01AFV\x03\x02\x02\x02\u01B0\u01B1" + - "\x07-\x02\x02\u01B1X\x03\x02\x02\x02\u01B2\u01B3\x07?\x02\x02\u01B3\u01B4" + - "\x07?\x02\x02\u01B4Z\x03\x02\x02\x02\u01B5\u01B6\x07#\x02\x02\u01B6\u01B7" + - "\x07?\x02\x02\u01B7\\\x03\x02\x02\x02\u01B8\u01B9\x07(\x02\x02\u01B9^" + - "\x03\x02\x02\x02\u01BA\u01BB\x07~\x02\x02\u01BB`\x03\x02\x02\x02\u01BC" + - "\u01BD\x07(\x02\x02\u01BD\u01BE\x07(\x02\x02\u01BEb\x03\x02\x02\x02\u01BF" + - "\u01C0\x07~\x02\x02\u01C0\u01C1\x07~\x02\x02\u01C1d\x03\x02\x02\x02\u01C2" + - "\u01C3\x07e\x02\x02\u01C3\u01C4\x07q\x02\x02\u01C4\u01C5\x07p\x02\x02" + - "\u01C5\u01C6\x07u\x02\x02\u01C6\u01C7\x07v\x02\x02\u01C7\u01C8\x07c\x02" + - "\x02\u01C8\u01C9\x07p\x02\x02\u01C9\u01CA\x07v\x02\x02\u01CAf\x03\x02" + - "\x02\x02\u01CB\u01CC\x07k\x02\x02\u01CC\u01CD\x07p\x02\x02\u01CD\u01CE" + - "\x07v\x02\x02\u01CEh\x03\x02\x02\x02\u01CF\u01D0\x07d\x02\x02\u01D0\u01D1" + - "\x07q\x02\x02\u01D1\u01D2\x07q\x02\x02\u01D2\u01D3\x07n\x02\x02\u01D3" + - "j\x03\x02\x02\x02\u01D4\u01D5\x07u\x02\x02\u01D5\u01D6\x07v\x02\x02\u01D6" + - "\u01D7\x07t\x02\x02\u01D7\u01D8\x07k\x02\x02\u01D8\u01D9\x07p\x02\x02" + - "\u01D9\u01DA\x07i\x02\x02\u01DAl\x03\x02\x02\x02\u01DB\u01DC\x07r\x02" + - "\x02\u01DC\u01DD\x07w\x02\x02\u01DD\u01DE\x07d\x02\x02\u01DE\u01DF\x07" + - "m\x02\x02\u01DF\u01E0\x07g\x02\x02\u01E0\u01E1\x07{\x02\x02\u01E1n\x03" + - "\x02\x02\x02\u01E2\u01E3\x07u\x02\x02\u01E3\u01E4\x07k\x02\x02\u01E4\u01E5" + - "\x07i\x02\x02\u01E5p\x03\x02\x02\x02\u01E6\u01E7\x07f\x02\x02\u01E7\u01E8" + - "\x07c\x02\x02\u01E8\u01E9\x07v\x02\x02\u01E9\u01EA\x07c\x02\x02\u01EA" + - "\u01EB\x07u\x02\x02\u01EB\u01EC\x07k\x02\x02\u01EC\u01ED\x07i\x02\x02" + - "\u01EDr\x03\x02\x02\x02\u01EE\u01F0\t\x02\x02\x02\u01EF\u01EE\x03\x02" + - "\x02\x02\u01F0\u01F1\x03\x02\x02\x02\u01F1\u01EF\x03\x02\x02\x02\u01F1" + - "\u01F2\x03\x02\x02\x02\u01F2\u01F3\x03\x02\x02\x02\u01F3\u01F5\x070\x02" + - "\x02\u01F4\u01F6\t\x02\x02\x02\u01F5\u01F4\x03\x02\x02\x02\u01F6\u01F7" + - "\x03\x02\x02\x02\u01F7\u01F5\x03\x02\x02\x02\u01F7\u01F8\x03\x02\x02\x02" + - "\u01F8\u01F9\x03\x02\x02\x02\u01F9\u01FB\x070\x02\x02\u01FA\u01FC\t\x02" + - "\x02\x02\u01FB\u01FA"; - private static readonly _serializedATNSegment1: string = - "\x03\x02\x02\x02\u01FC\u01FD\x03\x02\x02\x02\u01FD\u01FB\x03\x02\x02\x02" + - "\u01FD\u01FE\x03\x02\x02\x02\u01FEt\x03\x02\x02\x02\u01FF\u0200\x07v\x02" + - "\x02\u0200\u0201\x07t\x02\x02\u0201\u0202\x07w\x02\x02\u0202\u0209\x07" + - "g\x02\x02\u0203\u0204\x07h\x02\x02\u0204\u0205\x07c\x02\x02\u0205\u0206" + - "\x07n\x02\x02\u0206\u0207\x07u\x02\x02\u0207\u0209\x07g\x02\x02\u0208" + - "\u01FF\x03\x02\x02\x02\u0208\u0203\x03\x02\x02\x02\u0209v\x03\x02\x02" + - "\x02\u020A\u020B\x07u\x02\x02\u020B\u020C\x07c\x02\x02\u020C\u020D\x07" + - "v\x02\x02\u020D\u020E\x07q\x02\x02\u020E\u020F\x07u\x02\x02\u020F\u0210" + - "\x07j\x02\x02\u0210\u0211\x07k\x02\x02\u0211\u0244\x07u\x02\x02\u0212" + - "\u0213\x07u\x02\x02\u0213\u0214\x07c\x02\x02\u0214\u0215\x07v\x02\x02" + - "\u0215\u0244\x07u\x02\x02\u0216\u0217\x07h\x02\x02\u0217\u0218\x07k\x02" + - "\x02\u0218\u0219\x07p\x02\x02\u0219\u021A\x07p\x02\x02\u021A\u021B\x07" + - "g\x02\x02\u021B\u0244\x07{\x02\x02\u021C\u021D\x07d\x02\x02\u021D\u021E" + - "\x07k\x02\x02\u021E\u021F\x07v\x02\x02\u021F\u0244\x07u\x02\x02\u0220" + - "\u0221\x07d\x02\x02\u0221\u0222\x07k\x02\x02\u0222\u0223\x07v\x02\x02" + - "\u0223\u0224\x07e\x02\x02\u0224\u0225\x07q\x02\x02\u0225\u0226\x07k\x02" + - "\x02\u0226\u0244\x07p\x02\x02\u0227\u0228\x07u\x02\x02\u0228\u0229\x07" + - "g\x02\x02\u0229\u022A\x07e\x02\x02\u022A\u022B\x07q\x02\x02\u022B\u022C" + - "\x07p\x02\x02\u022C\u022D\x07f\x02\x02\u022D\u0244\x07u\x02\x02\u022E" + - "\u022F\x07o\x02\x02\u022F\u0230\x07k\x02\x02\u0230\u0231\x07p\x02\x02" + - "\u0231\u0232\x07w\x02\x02\u0232\u0233\x07v\x02\x02\u0233\u0234\x07g\x02" + - "\x02\u0234\u0244\x07u\x02\x02\u0235\u0236\x07j\x02\x02\u0236\u0237\x07" + - "q\x02\x02\u0237\u0238\x07w\x02\x02\u0238\u0239\x07t\x02\x02\u0239\u0244" + - "\x07u\x02\x02\u023A\u023B\x07f\x02\x02\u023B\u023C\x07c\x02\x02\u023C" + - "\u023D\x07{\x02\x02\u023D\u0244\x07u\x02\x02\u023E\u023F\x07y\x02\x02" + - "\u023F\u0240\x07g\x02\x02\u0240\u0241\x07g\x02\x02\u0241\u0242\x07m\x02" + - "\x02\u0242\u0244\x07u\x02\x02\u0243\u020A\x03\x02\x02\x02\u0243\u0212" + - "\x03\x02\x02\x02\u0243\u0216\x03\x02\x02\x02\u0243\u021C\x03\x02\x02\x02" + - "\u0243\u0220\x03\x02\x02\x02\u0243\u0227\x03\x02\x02\x02\u0243\u022E\x03" + - "\x02\x02\x02\u0243\u0235\x03\x02\x02\x02\u0243\u023A\x03\x02\x02\x02\u0243" + - "\u023E\x03\x02\x02\x02\u0244x\x03\x02\x02\x02\u0245\u0247\t\x03\x02\x02" + - "\u0246\u0245\x03\x02\x02\x02\u0246\u0247\x03\x02\x02\x02\u0247\u0249\x03" + - "\x02\x02\x02\u0248\u024A\t\x02\x02\x02\u0249\u0248\x03\x02\x02\x02\u024A" + - "\u024B\x03\x02\x02\x02\u024B\u0249\x03\x02\x02\x02\u024B\u024C\x03\x02" + - "\x02\x02\u024C\u0253\x03\x02\x02\x02\u024D\u024F\t\x04\x02\x02\u024E\u0250" + - "\t\x02\x02\x02\u024F\u024E\x03\x02\x02\x02\u0250\u0251\x03\x02\x02\x02" + - "\u0251\u024F\x03\x02\x02\x02\u0251\u0252\x03\x02\x02\x02\u0252\u0254\x03" + - "\x02\x02\x02\u0253\u024D\x03\x02\x02\x02\u0253\u0254\x03\x02\x02\x02\u0254" + - "z\x03\x02\x02\x02\u0255\u0256\x07d\x02\x02\u0256\u0257\x07{\x02\x02\u0257" + - "\u0258\x07v\x02\x02\u0258\u0259\x07g\x02\x02\u0259\u025A\x07u\x02\x02" + - "\u025A\u025C\x03\x02\x02\x02\u025B\u025D\x05}?\x02\u025C\u025B\x03\x02" + - "\x02\x02\u025C\u025D\x03\x02\x02\x02\u025D\u0263\x03\x02\x02\x02\u025E" + - "\u025F\x07d\x02\x02\u025F\u0260\x07{\x02\x02\u0260\u0261\x07v\x02\x02" + - "\u0261\u0263\x07g\x02\x02\u0262\u0255\x03\x02\x02\x02\u0262\u025E\x03" + - "\x02\x02\x02\u0263|\x03\x02\x02\x02\u0264\u0268\t\x05\x02\x02\u0265\u0267" + - "\t\x02\x02\x02\u0266\u0265\x03\x02\x02\x02\u0267\u026A\x03\x02\x02\x02" + - "\u0268\u0266\x03\x02\x02\x02\u0268\u0269\x03\x02\x02\x02\u0269~\x03\x02" + - "\x02\x02\u026A\u0268\x03\x02\x02\x02\u026B\u0271\x07$\x02\x02\u026C\u026D" + - "\x07^\x02\x02\u026D\u0270\x07$\x02\x02\u026E\u0270\n\x06\x02\x02\u026F" + - "\u026C\x03\x02\x02\x02\u026F\u026E\x03\x02\x02\x02\u0270\u0273\x03\x02" + - "\x02\x02\u0271\u0272\x03\x02\x02\x02\u0271\u026F\x03\x02\x02\x02\u0272" + - "\u0274\x03\x02\x02\x02\u0273\u0271\x03\x02\x02\x02\u0274\u0280\x07$\x02" + - "\x02\u0275\u027B\x07)\x02\x02\u0276\u0277\x07^\x02\x02\u0277\u027A\x07" + - ")\x02\x02\u0278\u027A\n\x07\x02\x02\u0279\u0276\x03\x02\x02\x02\u0279" + - "\u0278\x03\x02\x02\x02\u027A\u027D\x03\x02\x02\x02\u027B\u027C\x03\x02" + - "\x02\x02\u027B\u0279\x03\x02\x02\x02\u027C\u027E\x03\x02\x02\x02\u027D" + - "\u027B\x03\x02\x02\x02\u027E\u0280\x07)\x02\x02\u027F\u026B\x03\x02\x02" + - "\x02\u027F\u0275\x03\x02\x02\x02\u0280\x80\x03\x02\x02\x02\u0281\u0282" + - "\x07f\x02\x02\u0282\u0283\x07c\x02\x02\u0283\u0284\x07v\x02\x02\u0284" + - "\u0285\x07g\x02\x02\u0285\u0286\x07*\x02\x02\u0286\u0287\x03\x02\x02\x02" + - "\u0287\u0288\x05\x7F@\x02\u0288\u0289\x07+\x02\x02\u0289\x82\x03\x02\x02" + - "\x02\u028A\u028B\x072\x02\x02\u028B\u028F\t\b\x02\x02\u028C\u028E\t\t" + - "\x02\x02\u028D\u028C\x03\x02\x02\x02\u028E\u0291\x03\x02\x02\x02\u028F" + - "\u028D\x03\x02\x02\x02\u028F\u0290\x03\x02\x02\x02\u0290\x84\x03\x02\x02" + - "\x02\u0291\u028F\x03\x02\x02\x02\u0292\u0293\x07v\x02\x02\u0293\u0294" + - "\x07z\x02\x02\u0294\u0295\x070\x02\x02\u0295\u0296\x07c\x02\x02\u0296" + - "\u0297\x07i\x02\x02\u0297\u02A0\x07g\x02\x02\u0298\u0299\x07v\x02\x02" + - "\u0299\u029A\x07z\x02\x02\u029A\u029B\x070\x02\x02\u029B\u029C\x07v\x02" + - "\x02\u029C\u029D\x07k\x02\x02\u029D\u029E\x07o\x02\x02\u029E\u02A0\x07" + - "g\x02\x02\u029F\u0292\x03\x02\x02\x02\u029F\u0298\x03\x02\x02\x02\u02A0" + - "\x86\x03\x02\x02\x02\u02A1\u02A2\x07v\x02\x02\u02A2\u02A3\x07j\x02\x02" + - "\u02A3\u02A4\x07k\x02\x02\u02A4\u02A5\x07u\x02\x02\u02A5\u02A6\x070\x02" + - "\x02\u02A6\u02A7\x07c\x02\x02\u02A7\u02A8\x07e\x02\x02\u02A8\u02A9\x07" + - "v\x02\x02\u02A9\u02AA\x07k\x02\x02\u02AA\u02AB\x07x\x02\x02\u02AB\u02AC" + - "\x07g\x02\x02\u02AC\u02AD\x07K\x02\x02\u02AD\u02AE\x07p\x02\x02\u02AE" + - "\u02AF\x07r\x02\x02\u02AF\u02B0\x07w\x02\x02\u02B0\u02B1\x07v\x02\x02" + - "\u02B1\u02B2\x07K\x02\x02\u02B2\u02B3\x07p\x02\x02\u02B3\u02B4\x07f\x02" + - "\x02\u02B4\u02B5\x07g\x02\x02\u02B5\u0300\x07z\x02\x02\u02B6\u02B7\x07" + - "v\x02\x02\u02B7\u02B8\x07j\x02\x02\u02B8\u02B9\x07k\x02\x02\u02B9\u02BA" + - "\x07u\x02\x02\u02BA\u02BB\x070\x02\x02\u02BB\u02BC\x07c\x02\x02\u02BC" + - "\u02BD\x07e\x02\x02\u02BD\u02BE\x07v\x02\x02\u02BE\u02BF\x07k\x02\x02" + - "\u02BF\u02C0\x07x\x02\x02\u02C0\u02C1\x07g\x02\x02\u02C1\u02C2\x07D\x02" + - "\x02\u02C2\u02C3\x07{\x02\x02\u02C3\u02C4\x07v\x02\x02\u02C4\u02C5\x07" + - "g\x02\x02\u02C5\u02C6\x07e\x02\x02\u02C6\u02C7\x07q\x02\x02\u02C7\u02C8" + - "\x07f\x02\x02\u02C8\u0300\x07g\x02\x02\u02C9\u02CA\x07v\x02\x02\u02CA" + - "\u02CB\x07z\x02\x02\u02CB\u02CC\x070\x02\x02\u02CC\u02CD\x07k\x02\x02" + - "\u02CD\u02CE\x07p\x02\x02\u02CE\u02CF\x07r\x02\x02\u02CF\u02D0\x07w\x02" + - "\x02\u02D0\u02D1\x07v\x02\x02\u02D1\u02D2\x07u\x02\x02\u02D2\u02D3\x07" + - "0\x02\x02\u02D3\u02D4\x07n\x02\x02\u02D4\u02D5\x07g\x02\x02\u02D5\u02D6" + - "\x07p\x02\x02\u02D6\u02D7\x07i\x02\x02\u02D7\u02D8\x07v\x02\x02\u02D8" + - "\u0300\x07j\x02\x02\u02D9\u02DA\x07v\x02\x02\u02DA\u02DB\x07z\x02\x02" + - "\u02DB\u02DC\x070\x02\x02\u02DC\u02DD\x07q\x02\x02\u02DD\u02DE\x07w\x02" + - "\x02\u02DE\u02DF\x07v\x02\x02\u02DF\u02E0\x07r\x02\x02\u02E0\u02E1\x07" + - "w\x02\x02\u02E1\u02E2\x07v\x02\x02\u02E2\u02E3\x07u\x02\x02\u02E3\u02E4" + - "\x070\x02\x02\u02E4\u02E5\x07n\x02\x02\u02E5\u02E6\x07g\x02\x02\u02E6" + - "\u02E7\x07p\x02\x02\u02E7\u02E8\x07i\x02\x02\u02E8\u02E9\x07v\x02\x02" + - "\u02E9\u0300\x07j\x02\x02\u02EA\u02EB\x07v\x02\x02\u02EB\u02EC\x07z\x02" + - "\x02\u02EC\u02ED\x070\x02\x02\u02ED\u02EE\x07x\x02\x02\u02EE\u02EF\x07" + - "g\x02\x02\u02EF\u02F0\x07t\x02\x02\u02F0\u02F1\x07u\x02\x02\u02F1\u02F2" + - "\x07k\x02\x02\u02F2\u02F3\x07q\x02\x02\u02F3\u0300\x07p\x02\x02\u02F4" + - "\u02F5\x07v\x02\x02\u02F5\u02F6\x07z\x02\x02\u02F6\u02F7\x070\x02\x02" + - "\u02F7\u02F8\x07n\x02\x02\u02F8\u02F9\x07q\x02\x02\u02F9\u02FA\x07e\x02" + - "\x02\u02FA\u02FB\x07m\x02\x02\u02FB\u02FC\x07v\x02\x02\u02FC\u02FD\x07" + - "k\x02\x02\u02FD\u02FE\x07o\x02\x02\u02FE\u0300\x07g\x02\x02\u02FF\u02A1" + - "\x03\x02\x02\x02\u02FF\u02B6\x03\x02\x02\x02\u02FF\u02C9\x03\x02\x02\x02" + - "\u02FF\u02D9\x03\x02\x02\x02\u02FF\u02EA\x03\x02\x02\x02\u02FF\u02F4\x03" + - "\x02\x02\x02\u0300\x88\x03\x02\x02\x02\u0301\u0305\t\n\x02\x02\u0302\u0304" + - "\t\v\x02\x02\u0303\u0302\x03\x02\x02\x02\u0304\u0307\x03\x02\x02\x02\u0305" + - "\u0303\x03\x02\x02\x02\u0305\u0306\x03\x02\x02\x02\u0306\x8A\x03\x02\x02" + - "\x02\u0307\u0305\x03\x02\x02\x02\u0308\u030A\t\f\x02\x02\u0309\u0308\x03" + - "\x02\x02\x02\u030A\u030B\x03\x02\x02\x02\u030B\u0309\x03\x02\x02\x02\u030B" + - "\u030C\x03\x02\x02\x02\u030C\u030D\x03\x02\x02\x02\u030D\u030E\bF\x02" + - "\x02\u030E\x8C\x03\x02\x02\x02\u030F\u0310\x071\x02\x02\u0310\u0311\x07" + - ",\x02\x02\u0311\u0315\x03\x02\x02\x02\u0312\u0314\v\x02\x02\x02\u0313" + - "\u0312\x03\x02\x02\x02\u0314\u0317\x03\x02\x02\x02\u0315\u0316\x03\x02" + - "\x02\x02\u0315\u0313\x03\x02\x02\x02\u0316\u0318\x03\x02\x02\x02\u0317" + - "\u0315\x03\x02\x02\x02\u0318\u0319\x07,\x02\x02\u0319\u031A\x071\x02\x02" + - "\u031A\u031B\x03\x02\x02\x02\u031B\u031C\bG\x03\x02\u031C\x8E\x03\x02" + - "\x02\x02\u031D\u031E\x071\x02\x02\u031E\u031F\x071\x02\x02\u031F\u0323" + - "\x03\x02\x02\x02\u0320\u0322\n\r\x02\x02\u0321\u0320\x03\x02\x02\x02\u0322" + - "\u0325\x03\x02\x02\x02\u0323\u0321\x03\x02\x02\x02\u0323\u0324\x03\x02" + - "\x02\x02\u0324\u0326\x03\x02\x02\x02\u0325\u0323\x03\x02\x02\x02\u0326" + - "\u0327\bH\x03\x02\u0327\x90\x03\x02\x02\x02\x1B\x02\u01F1\u01F7\u01FD" + - "\u0208\u0243\u0246\u024B\u0251\u0253\u025C\u0262\u0268\u026F\u0271\u0279" + - "\u027B\u027F\u028F\u029F\u02FF\u0305\u030B\u0315\u0323\x04\b\x02\x02\x02" + - "\x03\x02"; - public static readonly _serializedATN: string = Utils.join( - [ - CashScriptLexer._serializedATNSegment0, - CashScriptLexer._serializedATNSegment1, - ], - "", - ); - public static __ATN: ATN; + public static readonly _serializedATN: number[] = [4,0,71,806,6,-1,2,0, + 7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9, + 7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7, + 16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23, + 2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2, + 31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38, + 7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7, + 45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52, + 2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2, + 60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67, + 7,67,2,68,7,68,2,69,7,69,2,70,7,70,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1, + 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,5, + 1,6,1,6,1,7,1,7,1,8,1,8,1,8,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10, + 1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1, + 13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17, + 1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,21,1,21,1, + 22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24, + 1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1, + 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1, + 27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28, + 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1, + 29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,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,1,31,1,31,1,32, + 1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33, + 1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1, + 34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36, + 1,36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1, + 43,1,43,1,43,1,44,1,44,1,44,1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,48,1,48, + 1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1, + 51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53, + 1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,1,55,1, + 55,1,55,1,56,4,56,494,8,56,11,56,12,56,495,1,56,1,56,4,56,500,8,56,11,56, + 12,56,501,1,56,1,56,4,56,506,8,56,11,56,12,56,507,1,57,1,57,1,57,1,57,1, + 57,1,57,1,57,1,57,1,57,3,57,519,8,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58, + 1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58, + 1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,3,58,578,8,58,1,59,3,59,581,8,59,1,59, + 4,59,584,8,59,11,59,12,59,585,1,59,1,59,4,59,590,8,59,11,59,12,59,591,3, + 59,594,8,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,3,60,603,8,60,1,60,1,60, + 1,60,1,60,3,60,609,8,60,1,61,1,61,5,61,613,8,61,10,61,12,61,616,9,61,1, + 62,1,62,1,62,1,62,5,62,622,8,62,10,62,12,62,625,9,62,1,62,1,62,1,62,1,62, + 1,62,5,62,632,8,62,10,62,12,62,635,9,62,1,62,3,62,638,8,62,1,63,1,63,1, + 63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,5,64,652,8,64,10,64,12, + 64,655,9,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65, + 1,65,3,65,670,8,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, + 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, + 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, + 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, + 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1, + 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, + 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,766,8,66,1, + 67,1,67,5,67,770,8,67,10,67,12,67,773,9,67,1,68,4,68,776,8,68,11,68,12, + 68,777,1,68,1,68,1,69,1,69,1,69,1,69,5,69,786,8,69,10,69,12,69,789,9,69, + 1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,5,70,800,8,70,10,70,12,70, + 803,9,70,1,70,1,70,3,623,633,787,0,71,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15, + 8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20, + 41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32, + 65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44, + 89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55, + 111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131, + 66,133,67,135,68,137,69,139,70,141,71,1,0,12,1,0,48,57,1,0,45,45,2,0,69, + 69,101,101,1,0,49,57,3,0,10,10,13,13,34,34,3,0,10,10,13,13,39,39,2,0,88, + 88,120,120,3,0,48,57,65,70,97,102,2,0,65,90,97,122,4,0,48,57,65,90,95,95, + 97,122,3,0,9,10,12,13,32,32,2,0,10,10,13,13,841,0,1,1,0,0,0,0,3,1,0,0,0, + 0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0, + 0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0, + 27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0, + 0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0, + 49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0, + 0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0, + 71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0, + 0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0, + 93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1, + 0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0, + 0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0, + 0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0, + 0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,1,143,1,0,0,0,3, + 150,1,0,0,0,5,152,1,0,0,0,7,163,1,0,0,0,9,165,1,0,0,0,11,167,1,0,0,0,13, + 170,1,0,0,0,15,172,1,0,0,0,17,174,1,0,0,0,19,177,1,0,0,0,21,179,1,0,0,0, + 23,188,1,0,0,0,25,190,1,0,0,0,27,192,1,0,0,0,29,201,1,0,0,0,31,203,1,0, + 0,0,33,205,1,0,0,0,35,207,1,0,0,0,37,215,1,0,0,0,39,218,1,0,0,0,41,223, + 1,0,0,0,43,227,1,0,0,0,45,229,1,0,0,0,47,231,1,0,0,0,49,242,1,0,0,0,51, + 249,1,0,0,0,53,266,1,0,0,0,55,281,1,0,0,0,57,296,1,0,0,0,59,309,1,0,0,0, + 61,319,1,0,0,0,63,344,1,0,0,0,65,359,1,0,0,0,67,378,1,0,0,0,69,394,1,0, + 0,0,71,405,1,0,0,0,73,413,1,0,0,0,75,420,1,0,0,0,77,422,1,0,0,0,79,424, + 1,0,0,0,81,426,1,0,0,0,83,428,1,0,0,0,85,430,1,0,0,0,87,432,1,0,0,0,89, + 435,1,0,0,0,91,438,1,0,0,0,93,440,1,0,0,0,95,442,1,0,0,0,97,445,1,0,0,0, + 99,448,1,0,0,0,101,457,1,0,0,0,103,461,1,0,0,0,105,466,1,0,0,0,107,473, + 1,0,0,0,109,480,1,0,0,0,111,484,1,0,0,0,113,493,1,0,0,0,115,518,1,0,0,0, + 117,577,1,0,0,0,119,580,1,0,0,0,121,608,1,0,0,0,123,610,1,0,0,0,125,637, + 1,0,0,0,127,639,1,0,0,0,129,648,1,0,0,0,131,669,1,0,0,0,133,765,1,0,0,0, + 135,767,1,0,0,0,137,775,1,0,0,0,139,781,1,0,0,0,141,795,1,0,0,0,143,144, + 5,112,0,0,144,145,5,114,0,0,145,146,5,97,0,0,146,147,5,103,0,0,147,148, + 5,109,0,0,148,149,5,97,0,0,149,2,1,0,0,0,150,151,5,59,0,0,151,4,1,0,0,0, + 152,153,5,99,0,0,153,154,5,97,0,0,154,155,5,115,0,0,155,156,5,104,0,0,156, + 157,5,115,0,0,157,158,5,99,0,0,158,159,5,114,0,0,159,160,5,105,0,0,160, + 161,5,112,0,0,161,162,5,116,0,0,162,6,1,0,0,0,163,164,5,94,0,0,164,8,1, + 0,0,0,165,166,5,126,0,0,166,10,1,0,0,0,167,168,5,62,0,0,168,169,5,61,0, + 0,169,12,1,0,0,0,170,171,5,62,0,0,171,14,1,0,0,0,172,173,5,60,0,0,173,16, + 1,0,0,0,174,175,5,60,0,0,175,176,5,61,0,0,176,18,1,0,0,0,177,178,5,61,0, + 0,178,20,1,0,0,0,179,180,5,99,0,0,180,181,5,111,0,0,181,182,5,110,0,0,182, + 183,5,116,0,0,183,184,5,114,0,0,184,185,5,97,0,0,185,186,5,99,0,0,186,187, + 5,116,0,0,187,22,1,0,0,0,188,189,5,123,0,0,189,24,1,0,0,0,190,191,5,125, + 0,0,191,26,1,0,0,0,192,193,5,102,0,0,193,194,5,117,0,0,194,195,5,110,0, + 0,195,196,5,99,0,0,196,197,5,116,0,0,197,198,5,105,0,0,198,199,5,111,0, + 0,199,200,5,110,0,0,200,28,1,0,0,0,201,202,5,40,0,0,202,30,1,0,0,0,203, + 204,5,44,0,0,204,32,1,0,0,0,205,206,5,41,0,0,206,34,1,0,0,0,207,208,5,114, + 0,0,208,209,5,101,0,0,209,210,5,113,0,0,210,211,5,117,0,0,211,212,5,105, + 0,0,212,213,5,114,0,0,213,214,5,101,0,0,214,36,1,0,0,0,215,216,5,105,0, + 0,216,217,5,102,0,0,217,38,1,0,0,0,218,219,5,101,0,0,219,220,5,108,0,0, + 220,221,5,115,0,0,221,222,5,101,0,0,222,40,1,0,0,0,223,224,5,110,0,0,224, + 225,5,101,0,0,225,226,5,119,0,0,226,42,1,0,0,0,227,228,5,91,0,0,228,44, + 1,0,0,0,229,230,5,93,0,0,230,46,1,0,0,0,231,232,5,116,0,0,232,233,5,120, + 0,0,233,234,5,46,0,0,234,235,5,111,0,0,235,236,5,117,0,0,236,237,5,116, + 0,0,237,238,5,112,0,0,238,239,5,117,0,0,239,240,5,116,0,0,240,241,5,115, + 0,0,241,48,1,0,0,0,242,243,5,46,0,0,243,244,5,118,0,0,244,245,5,97,0,0, + 245,246,5,108,0,0,246,247,5,117,0,0,247,248,5,101,0,0,248,50,1,0,0,0,249, + 250,5,46,0,0,250,251,5,108,0,0,251,252,5,111,0,0,252,253,5,99,0,0,253,254, + 5,107,0,0,254,255,5,105,0,0,255,256,5,110,0,0,256,257,5,103,0,0,257,258, + 5,66,0,0,258,259,5,121,0,0,259,260,5,116,0,0,260,261,5,101,0,0,261,262, + 5,99,0,0,262,263,5,111,0,0,263,264,5,100,0,0,264,265,5,101,0,0,265,52,1, + 0,0,0,266,267,5,46,0,0,267,268,5,116,0,0,268,269,5,111,0,0,269,270,5,107, + 0,0,270,271,5,101,0,0,271,272,5,110,0,0,272,273,5,67,0,0,273,274,5,97,0, + 0,274,275,5,116,0,0,275,276,5,101,0,0,276,277,5,103,0,0,277,278,5,111,0, + 0,278,279,5,114,0,0,279,280,5,121,0,0,280,54,1,0,0,0,281,282,5,46,0,0,282, + 283,5,110,0,0,283,284,5,102,0,0,284,285,5,116,0,0,285,286,5,67,0,0,286, + 287,5,111,0,0,287,288,5,109,0,0,288,289,5,109,0,0,289,290,5,105,0,0,290, + 291,5,116,0,0,291,292,5,109,0,0,292,293,5,101,0,0,293,294,5,110,0,0,294, + 295,5,116,0,0,295,56,1,0,0,0,296,297,5,46,0,0,297,298,5,116,0,0,298,299, + 5,111,0,0,299,300,5,107,0,0,300,301,5,101,0,0,301,302,5,110,0,0,302,303, + 5,65,0,0,303,304,5,109,0,0,304,305,5,111,0,0,305,306,5,117,0,0,306,307, + 5,110,0,0,307,308,5,116,0,0,308,58,1,0,0,0,309,310,5,116,0,0,310,311,5, + 120,0,0,311,312,5,46,0,0,312,313,5,105,0,0,313,314,5,110,0,0,314,315,5, + 112,0,0,315,316,5,117,0,0,316,317,5,116,0,0,317,318,5,115,0,0,318,60,1, + 0,0,0,319,320,5,46,0,0,320,321,5,111,0,0,321,322,5,117,0,0,322,323,5,116, + 0,0,323,324,5,112,0,0,324,325,5,111,0,0,325,326,5,105,0,0,326,327,5,110, + 0,0,327,328,5,116,0,0,328,329,5,84,0,0,329,330,5,114,0,0,330,331,5,97,0, + 0,331,332,5,110,0,0,332,333,5,115,0,0,333,334,5,97,0,0,334,335,5,99,0,0, + 335,336,5,116,0,0,336,337,5,105,0,0,337,338,5,111,0,0,338,339,5,110,0,0, + 339,340,5,72,0,0,340,341,5,97,0,0,341,342,5,115,0,0,342,343,5,104,0,0,343, + 62,1,0,0,0,344,345,5,46,0,0,345,346,5,111,0,0,346,347,5,117,0,0,347,348, + 5,116,0,0,348,349,5,112,0,0,349,350,5,111,0,0,350,351,5,105,0,0,351,352, + 5,110,0,0,352,353,5,116,0,0,353,354,5,73,0,0,354,355,5,110,0,0,355,356, + 5,100,0,0,356,357,5,101,0,0,357,358,5,120,0,0,358,64,1,0,0,0,359,360,5, + 46,0,0,360,361,5,117,0,0,361,362,5,110,0,0,362,363,5,108,0,0,363,364,5, + 111,0,0,364,365,5,99,0,0,365,366,5,107,0,0,366,367,5,105,0,0,367,368,5, + 110,0,0,368,369,5,103,0,0,369,370,5,66,0,0,370,371,5,121,0,0,371,372,5, + 116,0,0,372,373,5,101,0,0,373,374,5,99,0,0,374,375,5,111,0,0,375,376,5, + 100,0,0,376,377,5,101,0,0,377,66,1,0,0,0,378,379,5,46,0,0,379,380,5,115, + 0,0,380,381,5,101,0,0,381,382,5,113,0,0,382,383,5,117,0,0,383,384,5,101, + 0,0,384,385,5,110,0,0,385,386,5,99,0,0,386,387,5,101,0,0,387,388,5,78,0, + 0,388,389,5,117,0,0,389,390,5,109,0,0,390,391,5,98,0,0,391,392,5,101,0, + 0,392,393,5,114,0,0,393,68,1,0,0,0,394,395,5,46,0,0,395,396,5,114,0,0,396, + 397,5,101,0,0,397,398,5,118,0,0,398,399,5,101,0,0,399,400,5,114,0,0,400, + 401,5,115,0,0,401,402,5,101,0,0,402,403,5,40,0,0,403,404,5,41,0,0,404,70, + 1,0,0,0,405,406,5,46,0,0,406,407,5,108,0,0,407,408,5,101,0,0,408,409,5, + 110,0,0,409,410,5,103,0,0,410,411,5,116,0,0,411,412,5,104,0,0,412,72,1, + 0,0,0,413,414,5,46,0,0,414,415,5,115,0,0,415,416,5,112,0,0,416,417,5,108, + 0,0,417,418,5,105,0,0,418,419,5,116,0,0,419,74,1,0,0,0,420,421,5,33,0,0, + 421,76,1,0,0,0,422,423,5,45,0,0,423,78,1,0,0,0,424,425,5,42,0,0,425,80, + 1,0,0,0,426,427,5,47,0,0,427,82,1,0,0,0,428,429,5,37,0,0,429,84,1,0,0,0, + 430,431,5,43,0,0,431,86,1,0,0,0,432,433,5,61,0,0,433,434,5,61,0,0,434,88, + 1,0,0,0,435,436,5,33,0,0,436,437,5,61,0,0,437,90,1,0,0,0,438,439,5,38,0, + 0,439,92,1,0,0,0,440,441,5,124,0,0,441,94,1,0,0,0,442,443,5,38,0,0,443, + 444,5,38,0,0,444,96,1,0,0,0,445,446,5,124,0,0,446,447,5,124,0,0,447,98, + 1,0,0,0,448,449,5,99,0,0,449,450,5,111,0,0,450,451,5,110,0,0,451,452,5, + 115,0,0,452,453,5,116,0,0,453,454,5,97,0,0,454,455,5,110,0,0,455,456,5, + 116,0,0,456,100,1,0,0,0,457,458,5,105,0,0,458,459,5,110,0,0,459,460,5,116, + 0,0,460,102,1,0,0,0,461,462,5,98,0,0,462,463,5,111,0,0,463,464,5,111,0, + 0,464,465,5,108,0,0,465,104,1,0,0,0,466,467,5,115,0,0,467,468,5,116,0,0, + 468,469,5,114,0,0,469,470,5,105,0,0,470,471,5,110,0,0,471,472,5,103,0,0, + 472,106,1,0,0,0,473,474,5,112,0,0,474,475,5,117,0,0,475,476,5,98,0,0,476, + 477,5,107,0,0,477,478,5,101,0,0,478,479,5,121,0,0,479,108,1,0,0,0,480,481, + 5,115,0,0,481,482,5,105,0,0,482,483,5,103,0,0,483,110,1,0,0,0,484,485,5, + 100,0,0,485,486,5,97,0,0,486,487,5,116,0,0,487,488,5,97,0,0,488,489,5,115, + 0,0,489,490,5,105,0,0,490,491,5,103,0,0,491,112,1,0,0,0,492,494,7,0,0,0, + 493,492,1,0,0,0,494,495,1,0,0,0,495,493,1,0,0,0,495,496,1,0,0,0,496,497, + 1,0,0,0,497,499,5,46,0,0,498,500,7,0,0,0,499,498,1,0,0,0,500,501,1,0,0, + 0,501,499,1,0,0,0,501,502,1,0,0,0,502,503,1,0,0,0,503,505,5,46,0,0,504, + 506,7,0,0,0,505,504,1,0,0,0,506,507,1,0,0,0,507,505,1,0,0,0,507,508,1,0, + 0,0,508,114,1,0,0,0,509,510,5,116,0,0,510,511,5,114,0,0,511,512,5,117,0, + 0,512,519,5,101,0,0,513,514,5,102,0,0,514,515,5,97,0,0,515,516,5,108,0, + 0,516,517,5,115,0,0,517,519,5,101,0,0,518,509,1,0,0,0,518,513,1,0,0,0,519, + 116,1,0,0,0,520,521,5,115,0,0,521,522,5,97,0,0,522,523,5,116,0,0,523,524, + 5,111,0,0,524,525,5,115,0,0,525,526,5,104,0,0,526,527,5,105,0,0,527,578, + 5,115,0,0,528,529,5,115,0,0,529,530,5,97,0,0,530,531,5,116,0,0,531,578, + 5,115,0,0,532,533,5,102,0,0,533,534,5,105,0,0,534,535,5,110,0,0,535,536, + 5,110,0,0,536,537,5,101,0,0,537,578,5,121,0,0,538,539,5,98,0,0,539,540, + 5,105,0,0,540,541,5,116,0,0,541,578,5,115,0,0,542,543,5,98,0,0,543,544, + 5,105,0,0,544,545,5,116,0,0,545,546,5,99,0,0,546,547,5,111,0,0,547,548, + 5,105,0,0,548,578,5,110,0,0,549,550,5,115,0,0,550,551,5,101,0,0,551,552, + 5,99,0,0,552,553,5,111,0,0,553,554,5,110,0,0,554,555,5,100,0,0,555,578, + 5,115,0,0,556,557,5,109,0,0,557,558,5,105,0,0,558,559,5,110,0,0,559,560, + 5,117,0,0,560,561,5,116,0,0,561,562,5,101,0,0,562,578,5,115,0,0,563,564, + 5,104,0,0,564,565,5,111,0,0,565,566,5,117,0,0,566,567,5,114,0,0,567,578, + 5,115,0,0,568,569,5,100,0,0,569,570,5,97,0,0,570,571,5,121,0,0,571,578, + 5,115,0,0,572,573,5,119,0,0,573,574,5,101,0,0,574,575,5,101,0,0,575,576, + 5,107,0,0,576,578,5,115,0,0,577,520,1,0,0,0,577,528,1,0,0,0,577,532,1,0, + 0,0,577,538,1,0,0,0,577,542,1,0,0,0,577,549,1,0,0,0,577,556,1,0,0,0,577, + 563,1,0,0,0,577,568,1,0,0,0,577,572,1,0,0,0,578,118,1,0,0,0,579,581,7,1, + 0,0,580,579,1,0,0,0,580,581,1,0,0,0,581,583,1,0,0,0,582,584,7,0,0,0,583, + 582,1,0,0,0,584,585,1,0,0,0,585,583,1,0,0,0,585,586,1,0,0,0,586,593,1,0, + 0,0,587,589,7,2,0,0,588,590,7,0,0,0,589,588,1,0,0,0,590,591,1,0,0,0,591, + 589,1,0,0,0,591,592,1,0,0,0,592,594,1,0,0,0,593,587,1,0,0,0,593,594,1,0, + 0,0,594,120,1,0,0,0,595,596,5,98,0,0,596,597,5,121,0,0,597,598,5,116,0, + 0,598,599,5,101,0,0,599,600,5,115,0,0,600,602,1,0,0,0,601,603,3,123,61, + 0,602,601,1,0,0,0,602,603,1,0,0,0,603,609,1,0,0,0,604,605,5,98,0,0,605, + 606,5,121,0,0,606,607,5,116,0,0,607,609,5,101,0,0,608,595,1,0,0,0,608,604, + 1,0,0,0,609,122,1,0,0,0,610,614,7,3,0,0,611,613,7,0,0,0,612,611,1,0,0,0, + 613,616,1,0,0,0,614,612,1,0,0,0,614,615,1,0,0,0,615,124,1,0,0,0,616,614, + 1,0,0,0,617,623,5,34,0,0,618,619,5,92,0,0,619,622,5,34,0,0,620,622,8,4, + 0,0,621,618,1,0,0,0,621,620,1,0,0,0,622,625,1,0,0,0,623,624,1,0,0,0,623, + 621,1,0,0,0,624,626,1,0,0,0,625,623,1,0,0,0,626,638,5,34,0,0,627,633,5, + 39,0,0,628,629,5,92,0,0,629,632,5,39,0,0,630,632,8,5,0,0,631,628,1,0,0, + 0,631,630,1,0,0,0,632,635,1,0,0,0,633,634,1,0,0,0,633,631,1,0,0,0,634,636, + 1,0,0,0,635,633,1,0,0,0,636,638,5,39,0,0,637,617,1,0,0,0,637,627,1,0,0, + 0,638,126,1,0,0,0,639,640,5,100,0,0,640,641,5,97,0,0,641,642,5,116,0,0, + 642,643,5,101,0,0,643,644,5,40,0,0,644,645,1,0,0,0,645,646,3,125,62,0,646, + 647,5,41,0,0,647,128,1,0,0,0,648,649,5,48,0,0,649,653,7,6,0,0,650,652,7, + 7,0,0,651,650,1,0,0,0,652,655,1,0,0,0,653,651,1,0,0,0,653,654,1,0,0,0,654, + 130,1,0,0,0,655,653,1,0,0,0,656,657,5,116,0,0,657,658,5,120,0,0,658,659, + 5,46,0,0,659,660,5,97,0,0,660,661,5,103,0,0,661,670,5,101,0,0,662,663,5, + 116,0,0,663,664,5,120,0,0,664,665,5,46,0,0,665,666,5,116,0,0,666,667,5, + 105,0,0,667,668,5,109,0,0,668,670,5,101,0,0,669,656,1,0,0,0,669,662,1,0, + 0,0,670,132,1,0,0,0,671,672,5,116,0,0,672,673,5,104,0,0,673,674,5,105,0, + 0,674,675,5,115,0,0,675,676,5,46,0,0,676,677,5,97,0,0,677,678,5,99,0,0, + 678,679,5,116,0,0,679,680,5,105,0,0,680,681,5,118,0,0,681,682,5,101,0,0, + 682,683,5,73,0,0,683,684,5,110,0,0,684,685,5,112,0,0,685,686,5,117,0,0, + 686,687,5,116,0,0,687,688,5,73,0,0,688,689,5,110,0,0,689,690,5,100,0,0, + 690,691,5,101,0,0,691,766,5,120,0,0,692,693,5,116,0,0,693,694,5,104,0,0, + 694,695,5,105,0,0,695,696,5,115,0,0,696,697,5,46,0,0,697,698,5,97,0,0,698, + 699,5,99,0,0,699,700,5,116,0,0,700,701,5,105,0,0,701,702,5,118,0,0,702, + 703,5,101,0,0,703,704,5,66,0,0,704,705,5,121,0,0,705,706,5,116,0,0,706, + 707,5,101,0,0,707,708,5,99,0,0,708,709,5,111,0,0,709,710,5,100,0,0,710, + 766,5,101,0,0,711,712,5,116,0,0,712,713,5,120,0,0,713,714,5,46,0,0,714, + 715,5,105,0,0,715,716,5,110,0,0,716,717,5,112,0,0,717,718,5,117,0,0,718, + 719,5,116,0,0,719,720,5,115,0,0,720,721,5,46,0,0,721,722,5,108,0,0,722, + 723,5,101,0,0,723,724,5,110,0,0,724,725,5,103,0,0,725,726,5,116,0,0,726, + 766,5,104,0,0,727,728,5,116,0,0,728,729,5,120,0,0,729,730,5,46,0,0,730, + 731,5,111,0,0,731,732,5,117,0,0,732,733,5,116,0,0,733,734,5,112,0,0,734, + 735,5,117,0,0,735,736,5,116,0,0,736,737,5,115,0,0,737,738,5,46,0,0,738, + 739,5,108,0,0,739,740,5,101,0,0,740,741,5,110,0,0,741,742,5,103,0,0,742, + 743,5,116,0,0,743,766,5,104,0,0,744,745,5,116,0,0,745,746,5,120,0,0,746, + 747,5,46,0,0,747,748,5,118,0,0,748,749,5,101,0,0,749,750,5,114,0,0,750, + 751,5,115,0,0,751,752,5,105,0,0,752,753,5,111,0,0,753,766,5,110,0,0,754, + 755,5,116,0,0,755,756,5,120,0,0,756,757,5,46,0,0,757,758,5,108,0,0,758, + 759,5,111,0,0,759,760,5,99,0,0,760,761,5,107,0,0,761,762,5,116,0,0,762, + 763,5,105,0,0,763,764,5,109,0,0,764,766,5,101,0,0,765,671,1,0,0,0,765,692, + 1,0,0,0,765,711,1,0,0,0,765,727,1,0,0,0,765,744,1,0,0,0,765,754,1,0,0,0, + 766,134,1,0,0,0,767,771,7,8,0,0,768,770,7,9,0,0,769,768,1,0,0,0,770,773, + 1,0,0,0,771,769,1,0,0,0,771,772,1,0,0,0,772,136,1,0,0,0,773,771,1,0,0,0, + 774,776,7,10,0,0,775,774,1,0,0,0,776,777,1,0,0,0,777,775,1,0,0,0,777,778, + 1,0,0,0,778,779,1,0,0,0,779,780,6,68,0,0,780,138,1,0,0,0,781,782,5,47,0, + 0,782,783,5,42,0,0,783,787,1,0,0,0,784,786,9,0,0,0,785,784,1,0,0,0,786, + 789,1,0,0,0,787,788,1,0,0,0,787,785,1,0,0,0,788,790,1,0,0,0,789,787,1,0, + 0,0,790,791,5,42,0,0,791,792,5,47,0,0,792,793,1,0,0,0,793,794,6,69,1,0, + 794,140,1,0,0,0,795,796,5,47,0,0,796,797,5,47,0,0,797,801,1,0,0,0,798,800, + 8,11,0,0,799,798,1,0,0,0,800,803,1,0,0,0,801,799,1,0,0,0,801,802,1,0,0, + 0,802,804,1,0,0,0,803,801,1,0,0,0,804,805,6,70,1,0,805,142,1,0,0,0,25,0, + 495,501,507,518,577,580,585,591,593,602,608,614,621,623,631,633,637,653, + 669,765,771,777,787,801,2,6,0,0,0,1,0]; + + private static __ATN: ATN; public static get _ATN(): ATN { if (!CashScriptLexer.__ATN) { - CashScriptLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(CashScriptLexer._serializedATN)); + CashScriptLexer.__ATN = new ATNDeserializer().deserialize(CashScriptLexer._serializedATN); } return CashScriptLexer.__ATN; } -} + static DecisionsToDFA = CashScriptLexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); +} \ No newline at end of file diff --git a/packages/cashc/src/grammar/CashScriptParser.ts b/packages/cashc/src/grammar/CashScriptParser.ts index 0ea98f31..b9cf3939 100644 --- a/packages/cashc/src/grammar/CashScriptParser.ts +++ b/packages/cashc/src/grammar/CashScriptParser.ts @@ -1,32 +1,23 @@ -// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT - - -import { ATN } from "antlr4ts/atn/ATN.js"; -import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer.js"; -import { FailedPredicateException } from "antlr4ts/FailedPredicateException.js"; -import { NotNull } from "antlr4ts/Decorators.js"; -import { NoViableAltException } from "antlr4ts/NoViableAltException.js"; -import { Override } from "antlr4ts/Decorators.js"; -import { Parser } from "antlr4ts/Parser.js"; -import { ParserRuleContext } from "antlr4ts/ParserRuleContext.js"; -import { ParserATNSimulator } from "antlr4ts/atn/ParserATNSimulator.js"; -import { ParseTreeListener } from "antlr4ts/tree/ParseTreeListener.js"; -import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor.js"; -import { RecognitionException } from "antlr4ts/RecognitionException.js"; -import { RuleContext } from "antlr4ts/RuleContext.js"; -//import { RuleVersion } from "antlr4ts/RuleVersion.js"; -import { TerminalNode } from "antlr4ts/tree/TerminalNode.js"; -import { Token } from "antlr4ts/Token.js"; -import { TokenStream } from "antlr4ts/TokenStream.js"; -import { Vocabulary } from "antlr4ts/Vocabulary.js"; -import { VocabularyImpl } from "antlr4ts/VocabularyImpl.js"; - -import * as Utils from "antlr4ts/misc/Utils.js"; - -import { CashScriptVisitor } from "./CashScriptVisitor.js"; - - -export class CashScriptParser extends Parser { +// Generated from src/grammar/CashScript.g4 by ANTLR 4.13.1 +// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols + +import { + ATN, + ATNDeserializer, DecisionState, DFA, FailedPredicateException, + RecognitionException, NoViableAltException, BailErrorStrategy, + Parser, ParserATNSimulator, + RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache, + TerminalNode, RuleNode, + Token, TokenStream, + Interval, IntervalSet +} from 'antlr4'; +import CashScriptVisitor from "./CashScriptVisitor.js"; + +// for running tests with parameters, TODO: discuss strategy for typed parameters in CI +// eslint-disable-next-line no-unused-vars +type int = number; + +export default class CashScriptParser extends Parser { public static readonly T__0 = 1; public static readonly T__1 = 2; public static readonly T__2 = 3; @@ -98,6 +89,7 @@ export class CashScriptParser extends Parser { public static readonly WHITESPACE = 69; public static readonly COMMENT = 70; public static readonly LINE_COMMENT = 71; + public static readonly EOF = Token.EOF; public static readonly RULE_sourceFile = 0; public static readonly RULE_pragmaDirective = 1; public static readonly RULE_pragmaName = 2; @@ -123,6 +115,84 @@ export class CashScriptParser extends Parser { public static readonly RULE_literal = 22; public static readonly RULE_numberLiteral = 23; public static readonly RULE_typeName = 24; + public static readonly literalNames: (string | null)[] = [ null, "'pragma'", + "';'", "'cashscript'", + "'^'", "'~'", + "'>='", "'>'", + "'<'", "'<='", + "'='", "'contract'", + "'{'", "'}'", + "'function'", + "'('", "','", + "')'", "'require'", + "'if'", "'else'", + "'new'", "'['", + "']'", "'tx.outputs'", + "'.value'", + "'.lockingBytecode'", + "'.tokenCategory'", + "'.nftCommitment'", + "'.tokenAmount'", + "'tx.inputs'", + "'.outpointTransactionHash'", + "'.outpointIndex'", + "'.unlockingBytecode'", + "'.sequenceNumber'", + "'.reverse()'", + "'.length'", + "'.split'", + "'!'", "'-'", + "'*'", "'/'", + "'%'", "'+'", + "'=='", "'!='", + "'&'", "'|'", + "'&&'", "'||'", + "'constant'", + "'int'", "'bool'", + "'string'", + "'pubkey'", + "'sig'", "'datasig'" ]; + public static readonly symbolicNames: (string | null)[] = [ null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, null, + null, "VersionLiteral", + "BooleanLiteral", + "NumberUnit", + "NumberLiteral", + "Bytes", "Bound", + "StringLiteral", + "DateLiteral", + "HexLiteral", + "TxVar", "NullaryOp", + "Identifier", + "WHITESPACE", + "COMMENT", + "LINE_COMMENT" ]; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "sourceFile", "pragmaDirective", "pragmaName", "pragmaValue", "versionConstraint", @@ -132,48 +202,11 @@ export class CashScriptParser extends Parser { "functionCall", "expressionList", "expression", "modifier", "literal", "numberLiteral", "typeName", ]; - - private static readonly _LITERAL_NAMES: Array = [ - undefined, "'pragma'", "';'", "'cashscript'", "'^'", "'~'", "'>='", "'>'", - "'<'", "'<='", "'='", "'contract'", "'{'", "'}'", "'function'", "'('", - "','", "')'", "'require'", "'if'", "'else'", "'new'", "'['", "']'", "'tx.outputs'", - "'.value'", "'.lockingBytecode'", "'.tokenCategory'", "'.nftCommitment'", - "'.tokenAmount'", "'tx.inputs'", "'.outpointTransactionHash'", "'.outpointIndex'", - "'.unlockingBytecode'", "'.sequenceNumber'", "'.reverse()'", "'.length'", - "'.split'", "'!'", "'-'", "'*'", "'/'", "'%'", "'+'", "'=='", "'!='", - "'&'", "'|'", "'&&'", "'||'", "'constant'", "'int'", "'bool'", "'string'", - "'pubkey'", "'sig'", "'datasig'", - ]; - private static readonly _SYMBOLIC_NAMES: Array = [ - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, undefined, undefined, undefined, undefined, undefined, undefined, - undefined, "VersionLiteral", "BooleanLiteral", "NumberUnit", "NumberLiteral", - "Bytes", "Bound", "StringLiteral", "DateLiteral", "HexLiteral", "TxVar", - "NullaryOp", "Identifier", "WHITESPACE", "COMMENT", "LINE_COMMENT", - ]; - public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(CashScriptParser._LITERAL_NAMES, CashScriptParser._SYMBOLIC_NAMES, []); - - // @Override - // @NotNull - public get vocabulary(): Vocabulary { - return CashScriptParser.VOCABULARY; - } - // tslint:enable:no-trailing-whitespace - - // @Override public get grammarFileName(): string { return "CashScript.g4"; } - - // @Override + public get literalNames(): (string | null)[] { return CashScriptParser.literalNames; } + public get symbolicNames(): (string | null)[] { return CashScriptParser.symbolicNames; } public get ruleNames(): string[] { return CashScriptParser.ruleNames; } - - // @Override - public get serializedATN(): string { return CashScriptParser._serializedATN; } + public get serializedATN(): number[] { return CashScriptParser._serializedATN; } protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { return new FailedPredicateException(this, predicate, message); @@ -181,20 +214,20 @@ export class CashScriptParser extends Parser { constructor(input: TokenStream) { super(input); - this._interp = new ParserATNSimulator(CashScriptParser._ATN, this); + this._interp = new ParserATNSimulator(this, CashScriptParser._ATN, CashScriptParser.DecisionsToDFA, new PredictionContextCache()); } // @RuleVersion(0) public sourceFile(): SourceFileContext { - let _localctx: SourceFileContext = new SourceFileContext(this._ctx, this.state); - this.enterRule(_localctx, 0, CashScriptParser.RULE_sourceFile); + let localctx: SourceFileContext = new SourceFileContext(this, this._ctx, this.state); + this.enterRule(localctx, 0, CashScriptParser.RULE_sourceFile); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 53; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === CashScriptParser.T__0) { + while (_la===1) { { { this.state = 50; @@ -213,7 +246,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -223,14 +256,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public pragmaDirective(): PragmaDirectiveContext { - let _localctx: PragmaDirectiveContext = new PragmaDirectiveContext(this._ctx, this.state); - this.enterRule(_localctx, 2, CashScriptParser.RULE_pragmaDirective); + let localctx: PragmaDirectiveContext = new PragmaDirectiveContext(this, this._ctx, this.state); + this.enterRule(localctx, 2, CashScriptParser.RULE_pragmaDirective); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 59; this.match(CashScriptParser.T__0); @@ -244,7 +277,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -254,14 +287,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public pragmaName(): PragmaNameContext { - let _localctx: PragmaNameContext = new PragmaNameContext(this._ctx, this.state); - this.enterRule(_localctx, 4, CashScriptParser.RULE_pragmaName); + let localctx: PragmaNameContext = new PragmaNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 4, CashScriptParser.RULE_pragmaName); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 64; this.match(CashScriptParser.T__2); @@ -269,7 +302,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -279,22 +312,22 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public pragmaValue(): PragmaValueContext { - let _localctx: PragmaValueContext = new PragmaValueContext(this._ctx, this.state); - this.enterRule(_localctx, 6, CashScriptParser.RULE_pragmaValue); + let localctx: PragmaValueContext = new PragmaValueContext(this, this._ctx, this.state); + this.enterRule(localctx, 6, CashScriptParser.RULE_pragmaValue); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 66; this.versionConstraint(); this.state = 68; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << CashScriptParser.T__3) | (1 << CashScriptParser.T__4) | (1 << CashScriptParser.T__5) | (1 << CashScriptParser.T__6) | (1 << CashScriptParser.T__7) | (1 << CashScriptParser.T__8) | (1 << CashScriptParser.T__9))) !== 0) || _la === CashScriptParser.VersionLiteral) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2032) !== 0) || _la===57) { { this.state = 67; this.versionConstraint(); @@ -305,7 +338,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -315,20 +348,20 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public versionConstraint(): VersionConstraintContext { - let _localctx: VersionConstraintContext = new VersionConstraintContext(this._ctx, this.state); - this.enterRule(_localctx, 8, CashScriptParser.RULE_versionConstraint); + let localctx: VersionConstraintContext = new VersionConstraintContext(this, this._ctx, this.state); + this.enterRule(localctx, 8, CashScriptParser.RULE_versionConstraint); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 71; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << CashScriptParser.T__3) | (1 << CashScriptParser.T__4) | (1 << CashScriptParser.T__5) | (1 << CashScriptParser.T__6) | (1 << CashScriptParser.T__7) | (1 << CashScriptParser.T__8) | (1 << CashScriptParser.T__9))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2032) !== 0)) { { this.state = 70; this.versionOperator(); @@ -341,7 +374,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -351,33 +384,30 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public versionOperator(): VersionOperatorContext { - let _localctx: VersionOperatorContext = new VersionOperatorContext(this._ctx, this.state); - this.enterRule(_localctx, 10, CashScriptParser.RULE_versionOperator); + let localctx: VersionOperatorContext = new VersionOperatorContext(this, this._ctx, this.state); + this.enterRule(localctx, 10, CashScriptParser.RULE_versionOperator); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 75; _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << CashScriptParser.T__3) | (1 << CashScriptParser.T__4) | (1 << CashScriptParser.T__5) | (1 << CashScriptParser.T__6) | (1 << CashScriptParser.T__7) | (1 << CashScriptParser.T__8) | (1 << CashScriptParser.T__9))) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 2032) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -387,15 +417,15 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public contractDefinition(): ContractDefinitionContext { - let _localctx: ContractDefinitionContext = new ContractDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 12, CashScriptParser.RULE_contractDefinition); + let localctx: ContractDefinitionContext = new ContractDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 12, CashScriptParser.RULE_contractDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 77; this.match(CashScriptParser.T__10); @@ -408,7 +438,7 @@ export class CashScriptParser extends Parser { this.state = 84; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === CashScriptParser.T__13) { + while (_la===14) { { { this.state = 81; @@ -425,7 +455,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -435,15 +465,15 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionDefinition(): FunctionDefinitionContext { - let _localctx: FunctionDefinitionContext = new FunctionDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 14, CashScriptParser.RULE_functionDefinition); + let localctx: FunctionDefinitionContext = new FunctionDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 14, CashScriptParser.RULE_functionDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 89; this.match(CashScriptParser.T__13); @@ -456,7 +486,7 @@ export class CashScriptParser extends Parser { this.state = 96; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === CashScriptParser.T__17 || _la === CashScriptParser.T__18 || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (CashScriptParser.T__50 - 51)) | (1 << (CashScriptParser.T__51 - 51)) | (1 << (CashScriptParser.T__52 - 51)) | (1 << (CashScriptParser.T__53 - 51)) | (1 << (CashScriptParser.T__54 - 51)) | (1 << (CashScriptParser.T__55 - 51)) | (1 << (CashScriptParser.Bytes - 51)) | (1 << (CashScriptParser.Identifier - 51)))) !== 0)) { + while (_la===18 || _la===19 || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 132159) !== 0)) { { { this.state = 93; @@ -473,7 +503,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -483,29 +513,29 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public parameterList(): ParameterListContext { - let _localctx: ParameterListContext = new ParameterListContext(this._ctx, this.state); - this.enterRule(_localctx, 16, CashScriptParser.RULE_parameterList); + let localctx: ParameterListContext = new ParameterListContext(this, this._ctx, this.state); + this.enterRule(localctx, 16, CashScriptParser.RULE_parameterList); let _la: number; try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 101; this.match(CashScriptParser.T__14); this.state = 113; this._errHandler.sync(this); _la = this._input.LA(1); - if (((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (CashScriptParser.T__50 - 51)) | (1 << (CashScriptParser.T__51 - 51)) | (1 << (CashScriptParser.T__52 - 51)) | (1 << (CashScriptParser.T__53 - 51)) | (1 << (CashScriptParser.T__54 - 51)) | (1 << (CashScriptParser.T__55 - 51)) | (1 << (CashScriptParser.Bytes - 51)))) !== 0)) { + if (((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 1087) !== 0)) { { this.state = 102; this.parameter(); this.state = 107; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 5, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 5, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { @@ -519,12 +549,12 @@ export class CashScriptParser extends Parser { } this.state = 109; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 5, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 5, this._ctx); } this.state = 111; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === CashScriptParser.T__15) { + if (_la===16) { { this.state = 110; this.match(CashScriptParser.T__15); @@ -540,7 +570,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -550,14 +580,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public parameter(): ParameterContext { - let _localctx: ParameterContext = new ParameterContext(this._ctx, this.state); - this.enterRule(_localctx, 18, CashScriptParser.RULE_parameter); + let localctx: ParameterContext = new ParameterContext(this, this._ctx, this.state); + this.enterRule(localctx, 18, CashScriptParser.RULE_parameter); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 117; this.typeName(); @@ -567,7 +597,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -577,26 +607,26 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public block(): BlockContext { - let _localctx: BlockContext = new BlockContext(this._ctx, this.state); - this.enterRule(_localctx, 20, CashScriptParser.RULE_block); + let localctx: BlockContext = new BlockContext(this, this._ctx, this.state); + this.enterRule(localctx, 20, CashScriptParser.RULE_block); let _la: number; try { this.state = 129; this._errHandler.sync(this); switch (this._input.LA(1)) { - case CashScriptParser.T__11: - this.enterOuterAlt(_localctx, 1); + case 12: + this.enterOuterAlt(localctx, 1); { this.state = 120; this.match(CashScriptParser.T__11); this.state = 124; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === CashScriptParser.T__17 || _la === CashScriptParser.T__18 || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (CashScriptParser.T__50 - 51)) | (1 << (CashScriptParser.T__51 - 51)) | (1 << (CashScriptParser.T__52 - 51)) | (1 << (CashScriptParser.T__53 - 51)) | (1 << (CashScriptParser.T__54 - 51)) | (1 << (CashScriptParser.T__55 - 51)) | (1 << (CashScriptParser.Bytes - 51)) | (1 << (CashScriptParser.Identifier - 51)))) !== 0)) { + while (_la===18 || _la===19 || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 132159) !== 0)) { { { this.state = 121; @@ -611,17 +641,17 @@ export class CashScriptParser extends Parser { this.match(CashScriptParser.T__12); } break; - case CashScriptParser.T__17: - case CashScriptParser.T__18: - case CashScriptParser.T__50: - case CashScriptParser.T__51: - case CashScriptParser.T__52: - case CashScriptParser.T__53: - case CashScriptParser.T__54: - case CashScriptParser.T__55: - case CashScriptParser.Bytes: - case CashScriptParser.Identifier: - this.enterOuterAlt(_localctx, 2); + case 18: + case 19: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 61: + case 68: + this.enterOuterAlt(localctx, 2); { this.state = 128; this.statement(); @@ -633,7 +663,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -643,58 +673,53 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public statement(): StatementContext { - let _localctx: StatementContext = new StatementContext(this._ctx, this.state); - this.enterRule(_localctx, 22, CashScriptParser.RULE_statement); + let localctx: StatementContext = new StatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 22, CashScriptParser.RULE_statement); try { this.state = 137; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 10, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 10, this._ctx) ) { case 1: - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 131; this.variableDefinition(); } break; - case 2: - this.enterOuterAlt(_localctx, 2); + this.enterOuterAlt(localctx, 2); { this.state = 132; this.tupleAssignment(); } break; - case 3: - this.enterOuterAlt(_localctx, 3); + this.enterOuterAlt(localctx, 3); { this.state = 133; this.assignStatement(); } break; - case 4: - this.enterOuterAlt(_localctx, 4); + this.enterOuterAlt(localctx, 4); { this.state = 134; this.timeOpStatement(); } break; - case 5: - this.enterOuterAlt(_localctx, 5); + this.enterOuterAlt(localctx, 5); { this.state = 135; this.requireStatement(); } break; - case 6: - this.enterOuterAlt(_localctx, 6); + this.enterOuterAlt(localctx, 6); { this.state = 136; this.ifStatement(); @@ -704,7 +729,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -714,22 +739,22 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public variableDefinition(): VariableDefinitionContext { - let _localctx: VariableDefinitionContext = new VariableDefinitionContext(this._ctx, this.state); - this.enterRule(_localctx, 24, CashScriptParser.RULE_variableDefinition); + let localctx: VariableDefinitionContext = new VariableDefinitionContext(this, this._ctx, this.state); + this.enterRule(localctx, 24, CashScriptParser.RULE_variableDefinition); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 139; this.typeName(); this.state = 143; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la === CashScriptParser.T__49) { + while (_la===50) { { { this.state = 140; @@ -752,7 +777,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -762,14 +787,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public tupleAssignment(): TupleAssignmentContext { - let _localctx: TupleAssignmentContext = new TupleAssignmentContext(this._ctx, this.state); - this.enterRule(_localctx, 26, CashScriptParser.RULE_tupleAssignment); + let localctx: TupleAssignmentContext = new TupleAssignmentContext(this, this._ctx, this.state); + this.enterRule(localctx, 26, CashScriptParser.RULE_tupleAssignment); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 151; this.typeName(); @@ -791,7 +816,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -801,14 +826,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public assignStatement(): AssignStatementContext { - let _localctx: AssignStatementContext = new AssignStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 28, CashScriptParser.RULE_assignStatement); + let localctx: AssignStatementContext = new AssignStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 28, CashScriptParser.RULE_assignStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 160; this.match(CashScriptParser.Identifier); @@ -822,7 +847,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -832,14 +857,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public timeOpStatement(): TimeOpStatementContext { - let _localctx: TimeOpStatementContext = new TimeOpStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 30, CashScriptParser.RULE_timeOpStatement); + let localctx: TimeOpStatementContext = new TimeOpStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 30, CashScriptParser.RULE_timeOpStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 165; this.match(CashScriptParser.T__17); @@ -859,7 +884,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -869,14 +894,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public requireStatement(): RequireStatementContext { - let _localctx: RequireStatementContext = new RequireStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 32, CashScriptParser.RULE_requireStatement); + let localctx: RequireStatementContext = new RequireStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 32, CashScriptParser.RULE_requireStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 173; this.match(CashScriptParser.T__17); @@ -892,7 +917,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -902,14 +927,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public ifStatement(): IfStatementContext { - let _localctx: IfStatementContext = new IfStatementContext(this._ctx, this.state); - this.enterRule(_localctx, 34, CashScriptParser.RULE_ifStatement); + let localctx: IfStatementContext = new IfStatementContext(this, this._ctx, this.state); + this.enterRule(localctx, 34, CashScriptParser.RULE_ifStatement); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 179; this.match(CashScriptParser.T__18); @@ -920,16 +945,16 @@ export class CashScriptParser extends Parser { this.state = 182; this.match(CashScriptParser.T__16); this.state = 183; - _localctx._ifBlock = this.block(); + localctx._ifBlock = this.block(); this.state = 186; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) { case 1: { this.state = 184; this.match(CashScriptParser.T__19); this.state = 185; - _localctx._elseBlock = this.block(); + localctx._elseBlock = this.block(); } break; } @@ -937,7 +962,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -947,14 +972,14 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public functionCall(): FunctionCallContext { - let _localctx: FunctionCallContext = new FunctionCallContext(this._ctx, this.state); - this.enterRule(_localctx, 36, CashScriptParser.RULE_functionCall); + let localctx: FunctionCallContext = new FunctionCallContext(this, this._ctx, this.state); + this.enterRule(localctx, 36, CashScriptParser.RULE_functionCall); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 188; this.match(CashScriptParser.Identifier); @@ -964,7 +989,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -974,29 +999,29 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public expressionList(): ExpressionListContext { - let _localctx: ExpressionListContext = new ExpressionListContext(this._ctx, this.state); - this.enterRule(_localctx, 38, CashScriptParser.RULE_expressionList); + let localctx: ExpressionListContext = new ExpressionListContext(this, this._ctx, this.state); + this.enterRule(localctx, 38, CashScriptParser.RULE_expressionList); let _la: number; try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 191; this.match(CashScriptParser.T__14); this.state = 203; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << CashScriptParser.T__14) | (1 << CashScriptParser.T__20) | (1 << CashScriptParser.T__21) | (1 << CashScriptParser.T__23) | (1 << CashScriptParser.T__29))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (CashScriptParser.T__37 - 38)) | (1 << (CashScriptParser.T__38 - 38)) | (1 << (CashScriptParser.T__50 - 38)) | (1 << (CashScriptParser.T__51 - 38)) | (1 << (CashScriptParser.T__52 - 38)) | (1 << (CashScriptParser.T__53 - 38)) | (1 << (CashScriptParser.T__54 - 38)) | (1 << (CashScriptParser.T__55 - 38)) | (1 << (CashScriptParser.BooleanLiteral - 38)) | (1 << (CashScriptParser.NumberLiteral - 38)) | (1 << (CashScriptParser.Bytes - 38)) | (1 << (CashScriptParser.StringLiteral - 38)) | (1 << (CashScriptParser.DateLiteral - 38)) | (1 << (CashScriptParser.HexLiteral - 38)) | (1 << (CashScriptParser.NullaryOp - 38)) | (1 << (CashScriptParser.Identifier - 38)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1096843264) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 1859641347) !== 0)) { { this.state = 192; this.expression(0); this.state = 197; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 13, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 13, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { @@ -1010,12 +1035,12 @@ export class CashScriptParser extends Parser { } this.state = 199; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 13, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 13, this._ctx); } this.state = 201; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === CashScriptParser.T__15) { + if (_la===16) { { this.state = 200; this.match(CashScriptParser.T__15); @@ -1031,7 +1056,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1041,7 +1066,7 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } public expression(): ExpressionContext; @@ -1054,23 +1079,23 @@ export class CashScriptParser extends Parser { let _parentctx: ParserRuleContext = this._ctx; let _parentState: number = this.state; - let _localctx: ExpressionContext = new ExpressionContext(this._ctx, _parentState); - let _prevctx: ExpressionContext = _localctx; + let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, _parentState); + let _prevctx: ExpressionContext = localctx; let _startState: number = 40; - this.enterRecursionRule(_localctx, 40, CashScriptParser.RULE_expression, _p); + this.enterRecursionRule(localctx, 40, CashScriptParser.RULE_expression, _p); let _la: number; try { let _alt: number; - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 260; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 21, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 21, this._ctx) ) { case 1: { - _localctx = new ParenthesisedContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new ParenthesisedContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 208; this.match(CashScriptParser.T__14); @@ -1080,34 +1105,33 @@ export class CashScriptParser extends Parser { this.match(CashScriptParser.T__16); } break; - case 2: { - _localctx = new CastContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new CastContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 212; this.typeName(); this.state = 213; this.match(CashScriptParser.T__14); this.state = 214; - (_localctx as CastContext)._castable = this.expression(0); + (localctx as CastContext)._castable = this.expression(0); this.state = 217; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 16, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 16, this._ctx) ) { case 1: { this.state = 215; this.match(CashScriptParser.T__15); this.state = 216; - (_localctx as CastContext)._size = this.expression(0); + (localctx as CastContext)._size = this.expression(0); } break; } this.state = 220; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === CashScriptParser.T__15) { + if (_la===16) { { this.state = 219; this.match(CashScriptParser.T__15); @@ -1118,22 +1142,20 @@ export class CashScriptParser extends Parser { this.match(CashScriptParser.T__16); } break; - case 3: { - _localctx = new FunctionCallExpressionContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new FunctionCallExpressionContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 224; this.functionCall(); } break; - case 4: { - _localctx = new InstantiationContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new InstantiationContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 225; this.match(CashScriptParser.T__20); this.state = 226; @@ -1142,14 +1164,13 @@ export class CashScriptParser extends Parser { this.expressionList(); } break; - case 5: { - _localctx = new UnaryIntrospectionOpContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new UnaryIntrospectionOpContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 228; - (_localctx as UnaryIntrospectionOpContext)._scope = this.match(CashScriptParser.T__23); + (localctx as UnaryIntrospectionOpContext)._scope = this.match(CashScriptParser.T__23); this.state = 229; this.match(CashScriptParser.T__21); this.state = 230; @@ -1157,28 +1178,24 @@ export class CashScriptParser extends Parser { this.state = 231; this.match(CashScriptParser.T__22); this.state = 232; - (_localctx as UnaryIntrospectionOpContext)._op = this._input.LT(1); + (localctx as UnaryIntrospectionOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << CashScriptParser.T__24) | (1 << CashScriptParser.T__25) | (1 << CashScriptParser.T__26) | (1 << CashScriptParser.T__27) | (1 << CashScriptParser.T__28))) !== 0))) { - (_localctx as UnaryIntrospectionOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1040187392) !== 0))) { + (localctx as UnaryIntrospectionOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } break; - case 6: { - _localctx = new UnaryIntrospectionOpContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new UnaryIntrospectionOpContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 234; - (_localctx as UnaryIntrospectionOpContext)._scope = this.match(CashScriptParser.T__29); + (localctx as UnaryIntrospectionOpContext)._scope = this.match(CashScriptParser.T__29); this.state = 235; this.match(CashScriptParser.T__21); this.state = 236; @@ -1186,61 +1203,53 @@ export class CashScriptParser extends Parser { this.state = 237; this.match(CashScriptParser.T__22); this.state = 238; - (_localctx as UnaryIntrospectionOpContext)._op = this._input.LT(1); + (localctx as UnaryIntrospectionOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!(((((_la - 25)) & ~0x1F) === 0 && ((1 << (_la - 25)) & ((1 << (CashScriptParser.T__24 - 25)) | (1 << (CashScriptParser.T__25 - 25)) | (1 << (CashScriptParser.T__26 - 25)) | (1 << (CashScriptParser.T__27 - 25)) | (1 << (CashScriptParser.T__28 - 25)) | (1 << (CashScriptParser.T__30 - 25)) | (1 << (CashScriptParser.T__31 - 25)) | (1 << (CashScriptParser.T__32 - 25)) | (1 << (CashScriptParser.T__33 - 25)))) !== 0))) { - (_localctx as UnaryIntrospectionOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!(((((_la - 25)) & ~0x1F) === 0 && ((1 << (_la - 25)) & 991) !== 0))) { + (localctx as UnaryIntrospectionOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } break; - case 7: { - _localctx = new UnaryOpContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new UnaryOpContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 240; - (_localctx as UnaryOpContext)._op = this._input.LT(1); + (localctx as UnaryOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === CashScriptParser.T__37 || _la === CashScriptParser.T__38)) { - (_localctx as UnaryOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!(_la===38 || _la===39)) { + (localctx as UnaryOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 241; this.expression(14); } break; - case 8: { - _localctx = new ArrayContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new ArrayContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 242; this.match(CashScriptParser.T__21); this.state = 254; this._errHandler.sync(this); _la = this._input.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << CashScriptParser.T__14) | (1 << CashScriptParser.T__20) | (1 << CashScriptParser.T__21) | (1 << CashScriptParser.T__23) | (1 << CashScriptParser.T__29))) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & ((1 << (CashScriptParser.T__37 - 38)) | (1 << (CashScriptParser.T__38 - 38)) | (1 << (CashScriptParser.T__50 - 38)) | (1 << (CashScriptParser.T__51 - 38)) | (1 << (CashScriptParser.T__52 - 38)) | (1 << (CashScriptParser.T__53 - 38)) | (1 << (CashScriptParser.T__54 - 38)) | (1 << (CashScriptParser.T__55 - 38)) | (1 << (CashScriptParser.BooleanLiteral - 38)) | (1 << (CashScriptParser.NumberLiteral - 38)) | (1 << (CashScriptParser.Bytes - 38)) | (1 << (CashScriptParser.StringLiteral - 38)) | (1 << (CashScriptParser.DateLiteral - 38)) | (1 << (CashScriptParser.HexLiteral - 38)) | (1 << (CashScriptParser.NullaryOp - 38)) | (1 << (CashScriptParser.Identifier - 38)))) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1096843264) !== 0) || ((((_la - 38)) & ~0x1F) === 0 && ((1 << (_la - 38)) & 1859641347) !== 0)) { { this.state = 243; this.expression(0); this.state = 248; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 18, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { @@ -1254,12 +1263,12 @@ export class CashScriptParser extends Parser { } this.state = 250; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 18, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); } this.state = 252; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la === CashScriptParser.T__15) { + if (_la===16) { { this.state = 251; this.match(CashScriptParser.T__15); @@ -1273,243 +1282,219 @@ export class CashScriptParser extends Parser { this.match(CashScriptParser.T__22); } break; - case 9: { - _localctx = new NullaryOpContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new NullaryOpContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 257; this.match(CashScriptParser.NullaryOp); } break; - case 10: { - _localctx = new IdentifierContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new IdentifierContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 258; this.match(CashScriptParser.Identifier); } break; - case 11: { - _localctx = new LiteralExpressionContext(_localctx); - this._ctx = _localctx; - _prevctx = _localctx; + localctx = new LiteralExpressionContext(this, localctx); + this._ctx = localctx; + _prevctx = localctx; this.state = 259; this.literal(); } break; } - this._ctx._stop = this._input.tryLT(-1); + this._ctx.stop = this._input.LT(-1); this.state = 303; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 23, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { if (this._parseListeners != null) { this.triggerExitRuleEvent(); } - _prevctx = _localctx; + _prevctx = localctx; { this.state = 301; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 22, this._ctx) ) { case 1: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 262; if (!(this.precpred(this._ctx, 13))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 13)"); } this.state = 263; - (_localctx as BinaryOpContext)._op = this._input.LT(1); + (localctx as BinaryOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!(((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & ((1 << (CashScriptParser.T__39 - 40)) | (1 << (CashScriptParser.T__40 - 40)) | (1 << (CashScriptParser.T__41 - 40)))) !== 0))) { - (_localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!(((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 7) !== 0))) { + (localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 264; - (_localctx as BinaryOpContext)._right = this.expression(14); + (localctx as BinaryOpContext)._right = this.expression(14); } break; - case 2: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 265; if (!(this.precpred(this._ctx, 12))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 12)"); } this.state = 266; - (_localctx as BinaryOpContext)._op = this._input.LT(1); + (localctx as BinaryOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === CashScriptParser.T__38 || _la === CashScriptParser.T__42)) { - (_localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!(_la===39 || _la===43)) { + (localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 267; - (_localctx as BinaryOpContext)._right = this.expression(13); + (localctx as BinaryOpContext)._right = this.expression(13); } break; - case 3: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 268; if (!(this.precpred(this._ctx, 11))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 11)"); } this.state = 269; - (_localctx as BinaryOpContext)._op = this._input.LT(1); + (localctx as BinaryOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!((((_la) & ~0x1F) === 0 && ((1 << _la) & ((1 << CashScriptParser.T__5) | (1 << CashScriptParser.T__6) | (1 << CashScriptParser.T__7) | (1 << CashScriptParser.T__8))) !== 0))) { - (_localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 960) !== 0))) { + (localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 270; - (_localctx as BinaryOpContext)._right = this.expression(12); + (localctx as BinaryOpContext)._right = this.expression(12); } break; - case 4: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 271; if (!(this.precpred(this._ctx, 10))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 10)"); } this.state = 272; - (_localctx as BinaryOpContext)._op = this._input.LT(1); + (localctx as BinaryOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === CashScriptParser.T__43 || _la === CashScriptParser.T__44)) { - (_localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!(_la===44 || _la===45)) { + (localctx as BinaryOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } this.state = 273; - (_localctx as BinaryOpContext)._right = this.expression(11); + (localctx as BinaryOpContext)._right = this.expression(11); } break; - case 5: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 274; if (!(this.precpred(this._ctx, 9))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 9)"); } this.state = 275; - (_localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__45); + (localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__45); this.state = 276; - (_localctx as BinaryOpContext)._right = this.expression(10); + (localctx as BinaryOpContext)._right = this.expression(10); } break; - case 6: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 277; if (!(this.precpred(this._ctx, 8))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 8)"); } this.state = 278; - (_localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__3); + (localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__3); this.state = 279; - (_localctx as BinaryOpContext)._right = this.expression(9); + (localctx as BinaryOpContext)._right = this.expression(9); } break; - case 7: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 280; if (!(this.precpred(this._ctx, 7))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 7)"); } this.state = 281; - (_localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__46); + (localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__46); this.state = 282; - (_localctx as BinaryOpContext)._right = this.expression(8); + (localctx as BinaryOpContext)._right = this.expression(8); } break; - case 8: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 283; if (!(this.precpred(this._ctx, 6))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 6)"); } this.state = 284; - (_localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__47); + (localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__47); this.state = 285; - (_localctx as BinaryOpContext)._right = this.expression(7); + (localctx as BinaryOpContext)._right = this.expression(7); } break; - case 9: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 286; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } this.state = 287; - (_localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__48); + (localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__48); this.state = 288; - (_localctx as BinaryOpContext)._right = this.expression(6); + (localctx as BinaryOpContext)._right = this.expression(6); } break; - case 10: { - _localctx = new TupleIndexOpContext(new ExpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new TupleIndexOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 289; if (!(this.precpred(this._ctx, 19))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 19)"); @@ -1517,51 +1502,46 @@ export class CashScriptParser extends Parser { this.state = 290; this.match(CashScriptParser.T__21); this.state = 291; - (_localctx as TupleIndexOpContext)._index = this.match(CashScriptParser.NumberLiteral); + (localctx as TupleIndexOpContext)._index = this.match(CashScriptParser.NumberLiteral); this.state = 292; this.match(CashScriptParser.T__22); } break; - case 11: { - _localctx = new UnaryOpContext(new ExpressionContext(_parentctx, _parentState)); - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new UnaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 293; if (!(this.precpred(this._ctx, 16))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 16)"); } this.state = 294; - (_localctx as UnaryOpContext)._op = this._input.LT(1); + (localctx as UnaryOpContext)._op = this._input.LT(1); _la = this._input.LA(1); - if (!(_la === CashScriptParser.T__34 || _la === CashScriptParser.T__35)) { - (_localctx as UnaryOpContext)._op = this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + if(!(_la===35 || _la===36)) { + (localctx as UnaryOpContext)._op = this._errHandler.recoverInline(this); + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } break; - case 12: { - _localctx = new BinaryOpContext(new ExpressionContext(_parentctx, _parentState)); - (_localctx as BinaryOpContext)._left = _prevctx; - this.pushNewRecursionContext(_localctx, _startState, CashScriptParser.RULE_expression); + localctx = new BinaryOpContext(this, new ExpressionContext(this, _parentctx, _parentState)); + (localctx as BinaryOpContext)._left = _prevctx; + this.pushNewRecursionContext(localctx, _startState, CashScriptParser.RULE_expression); this.state = 295; if (!(this.precpred(this._ctx, 15))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 15)"); } this.state = 296; - (_localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__36); + (localctx as BinaryOpContext)._op = this.match(CashScriptParser.T__36); this.state = 297; this.match(CashScriptParser.T__14); this.state = 298; - (_localctx as BinaryOpContext)._right = this.expression(0); + (localctx as BinaryOpContext)._right = this.expression(0); this.state = 299; this.match(CashScriptParser.T__16); } @@ -1571,13 +1551,13 @@ export class CashScriptParser extends Parser { } this.state = 305; this._errHandler.sync(this); - _alt = this.interpreter.adaptivePredict(this._input, 23, this._ctx); + _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1587,14 +1567,14 @@ export class CashScriptParser extends Parser { finally { this.unrollRecursionContexts(_parentctx); } - return _localctx; + return localctx; } // @RuleVersion(0) public modifier(): ModifierContext { - let _localctx: ModifierContext = new ModifierContext(this._ctx, this.state); - this.enterRule(_localctx, 42, CashScriptParser.RULE_modifier); + let localctx: ModifierContext = new ModifierContext(this, this._ctx, this.state); + this.enterRule(localctx, 42, CashScriptParser.RULE_modifier); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 306; this.match(CashScriptParser.T__49); @@ -1602,7 +1582,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1612,46 +1592,46 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public literal(): LiteralContext { - let _localctx: LiteralContext = new LiteralContext(this._ctx, this.state); - this.enterRule(_localctx, 44, CashScriptParser.RULE_literal); + let localctx: LiteralContext = new LiteralContext(this, this._ctx, this.state); + this.enterRule(localctx, 44, CashScriptParser.RULE_literal); try { this.state = 313; this._errHandler.sync(this); switch (this._input.LA(1)) { - case CashScriptParser.BooleanLiteral: - this.enterOuterAlt(_localctx, 1); + case 58: + this.enterOuterAlt(localctx, 1); { this.state = 308; this.match(CashScriptParser.BooleanLiteral); } break; - case CashScriptParser.NumberLiteral: - this.enterOuterAlt(_localctx, 2); + case 60: + this.enterOuterAlt(localctx, 2); { this.state = 309; this.numberLiteral(); } break; - case CashScriptParser.StringLiteral: - this.enterOuterAlt(_localctx, 3); + case 63: + this.enterOuterAlt(localctx, 3); { this.state = 310; this.match(CashScriptParser.StringLiteral); } break; - case CashScriptParser.DateLiteral: - this.enterOuterAlt(_localctx, 4); + case 64: + this.enterOuterAlt(localctx, 4); { this.state = 311; this.match(CashScriptParser.DateLiteral); } break; - case CashScriptParser.HexLiteral: - this.enterOuterAlt(_localctx, 5); + case 65: + this.enterOuterAlt(localctx, 5); { this.state = 312; this.match(CashScriptParser.HexLiteral); @@ -1663,7 +1643,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1673,20 +1653,20 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public numberLiteral(): NumberLiteralContext { - let _localctx: NumberLiteralContext = new NumberLiteralContext(this._ctx, this.state); - this.enterRule(_localctx, 46, CashScriptParser.RULE_numberLiteral); + let localctx: NumberLiteralContext = new NumberLiteralContext(this, this._ctx, this.state); + this.enterRule(localctx, 46, CashScriptParser.RULE_numberLiteral); try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 315; this.match(CashScriptParser.NumberLiteral); this.state = 317; this._errHandler.sync(this); - switch ( this.interpreter.adaptivePredict(this._input, 25, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 25, this._ctx) ) { case 1: { this.state = 316; @@ -1698,7 +1678,7 @@ export class CashScriptParser extends Parser { } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1708,33 +1688,30 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } // @RuleVersion(0) public typeName(): TypeNameContext { - let _localctx: TypeNameContext = new TypeNameContext(this._ctx, this.state); - this.enterRule(_localctx, 48, CashScriptParser.RULE_typeName); + let localctx: TypeNameContext = new TypeNameContext(this, this._ctx, this.state); + this.enterRule(localctx, 48, CashScriptParser.RULE_typeName); let _la: number; try { - this.enterOuterAlt(_localctx, 1); + this.enterOuterAlt(localctx, 1); { this.state = 319; _la = this._input.LA(1); - if (!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (CashScriptParser.T__50 - 51)) | (1 << (CashScriptParser.T__51 - 51)) | (1 << (CashScriptParser.T__52 - 51)) | (1 << (CashScriptParser.T__53 - 51)) | (1 << (CashScriptParser.T__54 - 51)) | (1 << (CashScriptParser.T__55 - 51)) | (1 << (CashScriptParser.Bytes - 51)))) !== 0))) { + if(!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 1087) !== 0))) { this._errHandler.recoverInline(this); - } else { - if (this._input.LA(1) === Token.EOF) { - this.matchedEOF = true; - } - + } + else { this._errHandler.reportMatch(this); - this.consume(); + this.consume(); } } } catch (re) { if (re instanceof RecognitionException) { - _localctx.exception = re; + localctx.exception = re; this._errHandler.reportError(this, re); this._errHandler.recover(this, re); } else { @@ -1744,240 +1721,187 @@ export class CashScriptParser extends Parser { finally { this.exitRule(); } - return _localctx; + return localctx; } - public sempred(_localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { + public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { case 20: - return this.expression_sempred(_localctx as ExpressionContext, predIndex); + return this.expression_sempred(localctx as ExpressionContext, predIndex); } return true; } - private expression_sempred(_localctx: ExpressionContext, predIndex: number): boolean { + private expression_sempred(localctx: ExpressionContext, predIndex: number): boolean { switch (predIndex) { case 0: return this.precpred(this._ctx, 13); - case 1: return this.precpred(this._ctx, 12); - case 2: return this.precpred(this._ctx, 11); - case 3: return this.precpred(this._ctx, 10); - case 4: return this.precpred(this._ctx, 9); - case 5: return this.precpred(this._ctx, 8); - case 6: return this.precpred(this._ctx, 7); - case 7: return this.precpred(this._ctx, 6); - case 8: return this.precpred(this._ctx, 5); - case 9: return this.precpred(this._ctx, 19); - case 10: return this.precpred(this._ctx, 16); - case 11: return this.precpred(this._ctx, 15); } return true; } - public static readonly _serializedATN: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03I\u0144\x04\x02" + - "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" + - "\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" + - "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + - "\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t\x17\x04" + - "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x03\x02\x07\x026\n\x02\f\x02\x0E" + - "\x029\v\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03" + - "\x03\x03\x04\x03\x04\x03\x05\x03\x05\x05\x05G\n\x05\x03\x06\x05\x06J\n" + - "\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03\b\x03\b\x07" + - "\bU\n\b\f\b\x0E\bX\v\b\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x07\t" + - "a\n\t\f\t\x0E\td\v\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x07\nl\n\n\f" + - "\n\x0E\no\v\n\x03\n\x05\nr\n\n\x05\nt\n\n\x03\n\x03\n\x03\v\x03\v\x03" + - "\v\x03\f\x03\f\x07\f}\n\f\f\f\x0E\f\x80\v\f\x03\f\x03\f\x05\f\x84\n\f" + - "\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x05\r\x8C\n\r\x03\x0E\x03\x0E\x07" + - "\x0E\x90\n\x0E\f\x0E\x0E\x0E\x93\v\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E" + - "\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F" + - "\x03\x0F\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11" + - "\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12" + - "\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" + - "\x05\x13\xBD\n\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03" + - "\x15\x07\x15\xC6\n\x15\f\x15\x0E\x15\xC9\v\x15\x03\x15\x05\x15\xCC\n\x15" + - "\x05\x15\xCE\n\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16\x03" + - "\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x05\x16\xDC\n\x16\x03\x16" + - "\x05\x16\xDF\n\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03" + - "\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03" + - "\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x07" + - "\x16\xF9\n\x16\f\x16\x0E\x16\xFC\v\x16\x03\x16\x05\x16\xFF\n\x16\x05\x16" + - "\u0101\n\x16\x03\x16\x03\x16\x03\x16\x03\x16\x05\x16\u0107\n\x16\x03\x16" + - "\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16" + - "\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16" + - "\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16" + - "\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16\x03\x16" + - "\x03\x16\x03\x16\x07\x16\u0130\n\x16\f\x16\x0E\x16\u0133\v\x16\x03\x17" + - "\x03\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18\x05\x18\u013C\n\x18\x03" + - "\x19\x03\x19\x05\x19\u0140\n\x19\x03\x1A\x03\x1A\x03\x1A\x02\x02\x03*" + - "\x1B\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10\x02\x12\x02" + - "\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02" + - "(\x02*\x02,\x02.\x020\x022\x02\x02\f\x03\x02\x06\f\x03\x02\x1B\x1F\x04" + - "\x02\x1B\x1F!$\x03\x02()\x03\x02*,\x04\x02))--\x03\x02\b\v\x03\x02./\x03" + - "\x02%&\x04\x025:??\x02\u015E\x027\x03\x02\x02\x02\x04=\x03\x02\x02\x02" + - "\x06B\x03\x02\x02\x02\bD\x03\x02\x02\x02\nI\x03\x02\x02\x02\fM\x03\x02" + - "\x02\x02\x0EO\x03\x02\x02\x02\x10[\x03\x02\x02\x02\x12g\x03\x02\x02\x02" + - "\x14w\x03\x02\x02\x02\x16\x83\x03\x02\x02\x02\x18\x8B\x03\x02\x02\x02" + - "\x1A\x8D\x03\x02\x02\x02\x1C\x99\x03\x02\x02\x02\x1E\xA2\x03\x02\x02\x02" + - " \xA7\x03\x02\x02\x02\"\xAF\x03\x02\x02\x02$\xB5\x03\x02\x02\x02&\xBE" + - "\x03\x02\x02\x02(\xC1\x03\x02\x02\x02*\u0106\x03\x02\x02\x02,\u0134\x03" + - "\x02\x02\x02.\u013B\x03\x02\x02\x020\u013D\x03\x02\x02\x022\u0141\x03" + - "\x02\x02\x0246\x05\x04\x03\x0254\x03\x02\x02\x0269\x03\x02\x02\x0275\x03" + - "\x02\x02\x0278\x03\x02\x02\x028:\x03\x02\x02\x0297\x03\x02\x02\x02:;\x05" + - "\x0E\b\x02;<\x07\x02\x02\x03<\x03\x03\x02\x02\x02=>\x07\x03\x02\x02>?" + - "\x05\x06\x04\x02?@\x05\b\x05\x02@A\x07\x04\x02\x02A\x05\x03\x02\x02\x02" + - "BC\x07\x05\x02\x02C\x07\x03\x02\x02\x02DF\x05\n\x06\x02EG\x05\n\x06\x02" + - "FE\x03\x02\x02\x02FG\x03\x02\x02\x02G\t\x03\x02\x02\x02HJ\x05\f\x07\x02" + - "IH\x03\x02\x02\x02IJ\x03\x02\x02\x02JK\x03\x02\x02\x02KL\x07;\x02\x02" + - "L\v\x03\x02\x02\x02MN\t\x02\x02\x02N\r\x03\x02\x02\x02OP\x07\r\x02\x02" + - "PQ\x07F\x02\x02QR\x05\x12\n\x02RV\x07\x0E\x02\x02SU\x05\x10\t\x02TS\x03" + - "\x02\x02\x02UX\x03\x02\x02\x02VT\x03\x02\x02\x02VW\x03\x02\x02\x02WY\x03" + - "\x02\x02\x02XV\x03\x02\x02\x02YZ\x07\x0F\x02\x02Z\x0F\x03\x02\x02\x02" + - "[\\\x07\x10\x02\x02\\]\x07F\x02\x02]^\x05\x12\n\x02^b\x07\x0E\x02\x02" + - "_a\x05\x18\r\x02`_\x03\x02\x02\x02ad\x03\x02\x02\x02b`\x03\x02\x02\x02" + - "bc\x03\x02\x02\x02ce\x03\x02\x02\x02db\x03\x02\x02\x02ef\x07\x0F\x02\x02" + - "f\x11\x03\x02\x02\x02gs\x07\x11\x02\x02hm\x05\x14\v\x02ij\x07\x12\x02" + - "\x02jl\x05\x14\v\x02ki\x03\x02\x02\x02lo\x03\x02\x02\x02mk\x03\x02\x02" + - "\x02mn\x03\x02\x02\x02nq\x03\x02\x02\x02om\x03\x02\x02\x02pr\x07\x12\x02" + - "\x02qp\x03\x02\x02\x02qr\x03\x02\x02\x02rt\x03\x02\x02\x02sh\x03\x02\x02" + - "\x02st\x03\x02\x02\x02tu\x03\x02\x02\x02uv\x07\x13\x02\x02v\x13\x03\x02" + - "\x02\x02wx\x052\x1A\x02xy\x07F\x02\x02y\x15\x03\x02\x02\x02z~\x07\x0E" + - "\x02\x02{}\x05\x18\r\x02|{\x03\x02\x02\x02}\x80\x03\x02\x02\x02~|\x03" + - "\x02\x02\x02~\x7F\x03\x02\x02\x02\x7F\x81\x03\x02\x02\x02\x80~\x03\x02" + - "\x02\x02\x81\x84\x07\x0F\x02\x02\x82\x84\x05\x18\r\x02\x83z\x03\x02\x02" + - "\x02\x83\x82\x03\x02\x02\x02\x84\x17\x03\x02\x02\x02\x85\x8C\x05\x1A\x0E" + - "\x02\x86\x8C\x05\x1C\x0F\x02\x87\x8C\x05\x1E\x10\x02\x88\x8C\x05 \x11" + - "\x02\x89\x8C\x05\"\x12\x02\x8A\x8C\x05$\x13\x02\x8B\x85\x03\x02\x02\x02" + - "\x8B\x86\x03\x02\x02\x02\x8B\x87\x03\x02\x02\x02\x8B\x88\x03\x02\x02\x02" + - "\x8B\x89\x03\x02\x02\x02\x8B\x8A\x03\x02\x02\x02\x8C\x19\x03\x02\x02\x02" + - "\x8D\x91\x052\x1A\x02\x8E\x90\x05,\x17\x02\x8F\x8E\x03\x02\x02\x02\x90" + - "\x93\x03\x02\x02\x02\x91\x8F\x03\x02\x02\x02\x91\x92\x03\x02\x02\x02\x92" + - "\x94\x03\x02\x02\x02\x93\x91\x03\x02\x02\x02\x94\x95\x07F\x02\x02\x95" + - "\x96\x07\f\x02\x02\x96\x97\x05*\x16\x02\x97\x98\x07\x04\x02\x02\x98\x1B" + - "\x03\x02\x02\x02\x99\x9A\x052\x1A\x02\x9A\x9B\x07F\x02\x02\x9B\x9C\x07" + - "\x12\x02\x02\x9C\x9D\x052\x1A\x02\x9D\x9E\x07F\x02\x02\x9E\x9F\x07\f\x02" + - "\x02\x9F\xA0\x05*\x16\x02\xA0\xA1\x07\x04\x02\x02\xA1\x1D\x03\x02\x02" + - "\x02\xA2\xA3\x07F\x02\x02\xA3\xA4\x07\f\x02\x02\xA4\xA5\x05*\x16\x02\xA5" + - "\xA6\x07\x04\x02\x02\xA6\x1F\x03\x02\x02\x02\xA7\xA8\x07\x14\x02\x02\xA8" + - "\xA9\x07\x11\x02\x02\xA9\xAA\x07D\x02\x02\xAA\xAB\x07\b\x02\x02\xAB\xAC" + - "\x05*\x16\x02\xAC\xAD\x07\x13\x02\x02\xAD\xAE\x07\x04\x02\x02\xAE!\x03" + - "\x02\x02\x02\xAF\xB0\x07\x14\x02\x02\xB0\xB1\x07\x11\x02\x02\xB1\xB2\x05" + - "*\x16\x02\xB2\xB3\x07\x13\x02\x02\xB3\xB4\x07\x04\x02\x02\xB4#\x03\x02" + - "\x02\x02\xB5\xB6\x07\x15\x02\x02\xB6\xB7\x07\x11\x02\x02\xB7\xB8\x05*" + - "\x16\x02\xB8\xB9\x07\x13\x02\x02\xB9\xBC\x05\x16\f\x02\xBA\xBB\x07\x16" + - "\x02\x02\xBB\xBD\x05\x16\f\x02\xBC\xBA\x03\x02\x02\x02\xBC\xBD\x03\x02" + - "\x02\x02\xBD%\x03\x02\x02\x02\xBE\xBF\x07F\x02\x02\xBF\xC0\x05(\x15\x02" + - "\xC0\'\x03\x02\x02\x02\xC1\xCD\x07\x11\x02\x02\xC2\xC7\x05*\x16\x02\xC3" + - "\xC4\x07\x12\x02\x02\xC4\xC6\x05*\x16\x02\xC5\xC3\x03\x02\x02\x02\xC6" + - "\xC9\x03\x02\x02\x02\xC7\xC5\x03\x02\x02\x02\xC7\xC8\x03\x02\x02\x02\xC8" + - "\xCB\x03\x02\x02\x02\xC9\xC7\x03\x02\x02\x02\xCA\xCC\x07\x12\x02\x02\xCB" + - "\xCA\x03\x02\x02\x02\xCB\xCC\x03\x02\x02\x02\xCC\xCE\x03\x02\x02\x02\xCD" + - "\xC2\x03\x02\x02\x02\xCD\xCE\x03\x02\x02\x02\xCE\xCF\x03\x02\x02\x02\xCF" + - "\xD0\x07\x13\x02\x02\xD0)\x03\x02\x02\x02\xD1\xD2\b\x16\x01\x02\xD2\xD3" + - "\x07\x11\x02\x02\xD3\xD4\x05*\x16\x02\xD4\xD5\x07\x13\x02\x02\xD5\u0107" + - "\x03\x02\x02\x02\xD6\xD7\x052\x1A\x02\xD7\xD8\x07\x11\x02\x02\xD8\xDB" + - "\x05*\x16\x02\xD9\xDA\x07\x12\x02\x02\xDA\xDC\x05*\x16\x02\xDB\xD9\x03" + - "\x02\x02\x02\xDB\xDC\x03\x02\x02\x02\xDC\xDE\x03\x02\x02\x02\xDD\xDF\x07" + - "\x12\x02\x02\xDE\xDD\x03\x02\x02\x02\xDE\xDF\x03\x02\x02\x02\xDF\xE0\x03" + - "\x02\x02\x02\xE0\xE1\x07\x13\x02\x02\xE1\u0107\x03\x02\x02\x02\xE2\u0107" + - "\x05&\x14\x02\xE3\xE4\x07\x17\x02\x02\xE4\xE5\x07F\x02\x02\xE5\u0107\x05" + - "(\x15\x02\xE6\xE7\x07\x1A\x02\x02\xE7\xE8\x07\x18\x02\x02\xE8\xE9\x05" + - "*\x16\x02\xE9\xEA\x07\x19\x02\x02\xEA\xEB\t\x03\x02\x02\xEB\u0107\x03" + - "\x02\x02\x02\xEC\xED\x07 \x02\x02\xED\xEE\x07\x18\x02\x02\xEE\xEF\x05" + - "*\x16\x02\xEF\xF0\x07\x19\x02\x02\xF0\xF1\t\x04\x02\x02\xF1\u0107\x03" + - "\x02\x02\x02\xF2\xF3\t\x05\x02\x02\xF3\u0107\x05*\x16\x10\xF4\u0100\x07" + - "\x18\x02\x02\xF5\xFA\x05*\x16\x02\xF6\xF7\x07\x12\x02\x02\xF7\xF9\x05" + - "*\x16\x02\xF8\xF6\x03\x02\x02\x02\xF9\xFC\x03\x02\x02\x02\xFA\xF8\x03" + - "\x02\x02\x02\xFA\xFB\x03\x02\x02\x02\xFB\xFE\x03\x02\x02\x02\xFC\xFA\x03" + - "\x02\x02\x02\xFD\xFF\x07\x12\x02\x02\xFE\xFD\x03\x02\x02\x02\xFE\xFF\x03" + - "\x02\x02\x02\xFF\u0101\x03\x02\x02\x02\u0100\xF5\x03\x02\x02\x02\u0100" + - "\u0101\x03\x02\x02\x02\u0101\u0102\x03\x02\x02\x02\u0102\u0107\x07\x19" + - "\x02\x02\u0103\u0107\x07E\x02\x02\u0104\u0107\x07F\x02\x02\u0105\u0107" + - "\x05.\x18\x02\u0106\xD1\x03\x02\x02\x02\u0106\xD6\x03\x02\x02\x02\u0106" + - "\xE2\x03\x02\x02\x02\u0106\xE3\x03\x02\x02\x02\u0106\xE6\x03\x02\x02\x02" + - "\u0106\xEC\x03\x02\x02\x02\u0106\xF2\x03\x02\x02\x02\u0106\xF4\x03\x02" + - "\x02\x02\u0106\u0103\x03\x02\x02\x02\u0106\u0104\x03\x02\x02\x02\u0106" + - "\u0105\x03\x02\x02\x02\u0107\u0131\x03\x02\x02\x02\u0108\u0109\f\x0F\x02" + - "\x02\u0109\u010A\t\x06\x02\x02\u010A\u0130\x05*\x16\x10\u010B\u010C\f" + - "\x0E\x02\x02\u010C\u010D\t\x07\x02\x02\u010D\u0130\x05*\x16\x0F\u010E" + - "\u010F\f\r\x02\x02\u010F\u0110\t\b\x02\x02\u0110\u0130\x05*\x16\x0E\u0111" + - "\u0112\f\f\x02\x02\u0112\u0113\t\t\x02\x02\u0113\u0130\x05*\x16\r\u0114" + - "\u0115\f\v\x02\x02\u0115\u0116\x070\x02\x02\u0116\u0130\x05*\x16\f\u0117" + - "\u0118\f\n\x02\x02\u0118\u0119\x07\x06\x02\x02\u0119\u0130\x05*\x16\v" + - "\u011A\u011B\f\t\x02\x02\u011B\u011C\x071\x02\x02\u011C\u0130\x05*\x16" + - "\n\u011D\u011E\f\b\x02\x02\u011E\u011F\x072\x02\x02\u011F\u0130\x05*\x16" + - "\t\u0120\u0121\f\x07\x02\x02\u0121\u0122\x073\x02\x02\u0122\u0130\x05" + - "*\x16\b\u0123\u0124\f\x15\x02\x02\u0124\u0125\x07\x18\x02\x02\u0125\u0126" + - "\x07>\x02\x02\u0126\u0130\x07\x19\x02\x02\u0127\u0128\f\x12\x02\x02\u0128" + - "\u0130\t\n\x02\x02\u0129\u012A\f\x11\x02\x02\u012A\u012B\x07\'\x02\x02" + - "\u012B\u012C\x07\x11\x02\x02\u012C\u012D\x05*\x16\x02\u012D\u012E\x07" + - "\x13\x02\x02\u012E\u0130\x03\x02\x02\x02\u012F\u0108\x03\x02\x02\x02\u012F" + - "\u010B\x03\x02\x02\x02\u012F\u010E\x03\x02\x02\x02\u012F\u0111\x03\x02" + - "\x02\x02\u012F\u0114\x03\x02\x02\x02\u012F\u0117\x03\x02\x02\x02\u012F" + - "\u011A\x03\x02\x02\x02\u012F\u011D\x03\x02\x02\x02\u012F\u0120\x03\x02" + - "\x02\x02\u012F\u0123\x03\x02\x02\x02\u012F\u0127\x03\x02\x02\x02\u012F" + - "\u0129\x03\x02\x02\x02\u0130\u0133\x03\x02\x02\x02\u0131\u012F\x03\x02" + - "\x02\x02\u0131\u0132\x03\x02\x02\x02\u0132+\x03\x02\x02\x02\u0133\u0131" + - "\x03\x02\x02\x02\u0134\u0135\x074\x02\x02\u0135-\x03\x02\x02\x02\u0136" + - "\u013C\x07<\x02\x02\u0137\u013C\x050\x19\x02\u0138\u013C\x07A\x02\x02" + - "\u0139\u013C\x07B\x02\x02\u013A\u013C\x07C\x02\x02\u013B\u0136\x03\x02" + - "\x02\x02\u013B\u0137\x03\x02\x02\x02\u013B\u0138\x03\x02\x02\x02\u013B" + - "\u0139\x03\x02\x02\x02\u013B\u013A\x03\x02\x02\x02\u013C/\x03\x02\x02" + - "\x02\u013D\u013F\x07>\x02\x02\u013E\u0140\x07=\x02\x02\u013F\u013E\x03" + - "\x02\x02\x02\u013F\u0140\x03\x02\x02\x02\u01401\x03\x02\x02\x02\u0141" + - "\u0142\t\v\x02\x02\u01423\x03\x02\x02\x02\x1C7FIVbmqs~\x83\x8B\x91\xBC" + - "\xC7\xCB\xCD\xDB\xDE\xFA\xFE\u0100\u0106\u012F\u0131\u013B\u013F"; - public static __ATN: ATN; + public static readonly _serializedATN: number[] = [4,1,71,322,2,0,7,0,2, + 1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2, + 10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17, + 7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7, + 24,1,0,5,0,52,8,0,10,0,12,0,55,9,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,2, + 1,2,1,3,1,3,3,3,69,8,3,1,4,3,4,72,8,4,1,4,1,4,1,5,1,5,1,6,1,6,1,6,1,6,1, + 6,5,6,83,8,6,10,6,12,6,86,9,6,1,6,1,6,1,7,1,7,1,7,1,7,1,7,5,7,95,8,7,10, + 7,12,7,98,9,7,1,7,1,7,1,8,1,8,1,8,1,8,5,8,106,8,8,10,8,12,8,109,9,8,1,8, + 3,8,112,8,8,3,8,114,8,8,1,8,1,8,1,9,1,9,1,9,1,10,1,10,5,10,123,8,10,10, + 10,12,10,126,9,10,1,10,1,10,3,10,130,8,10,1,11,1,11,1,11,1,11,1,11,1,11, + 3,11,138,8,11,1,12,1,12,5,12,142,8,12,10,12,12,12,145,9,12,1,12,1,12,1, + 12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14, + 1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1, + 16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,3,17,187,8,17,1,18,1,18,1,18, + 1,19,1,19,1,19,1,19,5,19,196,8,19,10,19,12,19,199,9,19,1,19,3,19,202,8, + 19,3,19,204,8,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,3,20,218,8,20,1,20,3,20,221,8,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 20,1,20,1,20,5,20,247,8,20,10,20,12,20,250,9,20,1,20,3,20,253,8,20,3,20, + 255,8,20,1,20,1,20,1,20,1,20,3,20,261,8,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,20,1,20,5,20,302,8,20,10,20,12,20,305,9,20,1,21,1,21,1,22,1, + 22,1,22,1,22,1,22,3,22,314,8,22,1,23,1,23,3,23,318,8,23,1,24,1,24,1,24, + 0,1,40,25,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42, + 44,46,48,0,10,1,0,4,10,1,0,25,29,2,0,25,29,31,34,1,0,38,39,1,0,40,42,2, + 0,39,39,43,43,1,0,6,9,1,0,44,45,1,0,35,36,2,0,51,56,61,61,348,0,53,1,0, + 0,0,2,59,1,0,0,0,4,64,1,0,0,0,6,66,1,0,0,0,8,71,1,0,0,0,10,75,1,0,0,0,12, + 77,1,0,0,0,14,89,1,0,0,0,16,101,1,0,0,0,18,117,1,0,0,0,20,129,1,0,0,0,22, + 137,1,0,0,0,24,139,1,0,0,0,26,151,1,0,0,0,28,160,1,0,0,0,30,165,1,0,0,0, + 32,173,1,0,0,0,34,179,1,0,0,0,36,188,1,0,0,0,38,191,1,0,0,0,40,260,1,0, + 0,0,42,306,1,0,0,0,44,313,1,0,0,0,46,315,1,0,0,0,48,319,1,0,0,0,50,52,3, + 2,1,0,51,50,1,0,0,0,52,55,1,0,0,0,53,51,1,0,0,0,53,54,1,0,0,0,54,56,1,0, + 0,0,55,53,1,0,0,0,56,57,3,12,6,0,57,58,5,0,0,1,58,1,1,0,0,0,59,60,5,1,0, + 0,60,61,3,4,2,0,61,62,3,6,3,0,62,63,5,2,0,0,63,3,1,0,0,0,64,65,5,3,0,0, + 65,5,1,0,0,0,66,68,3,8,4,0,67,69,3,8,4,0,68,67,1,0,0,0,68,69,1,0,0,0,69, + 7,1,0,0,0,70,72,3,10,5,0,71,70,1,0,0,0,71,72,1,0,0,0,72,73,1,0,0,0,73,74, + 5,57,0,0,74,9,1,0,0,0,75,76,7,0,0,0,76,11,1,0,0,0,77,78,5,11,0,0,78,79, + 5,68,0,0,79,80,3,16,8,0,80,84,5,12,0,0,81,83,3,14,7,0,82,81,1,0,0,0,83, + 86,1,0,0,0,84,82,1,0,0,0,84,85,1,0,0,0,85,87,1,0,0,0,86,84,1,0,0,0,87,88, + 5,13,0,0,88,13,1,0,0,0,89,90,5,14,0,0,90,91,5,68,0,0,91,92,3,16,8,0,92, + 96,5,12,0,0,93,95,3,22,11,0,94,93,1,0,0,0,95,98,1,0,0,0,96,94,1,0,0,0,96, + 97,1,0,0,0,97,99,1,0,0,0,98,96,1,0,0,0,99,100,5,13,0,0,100,15,1,0,0,0,101, + 113,5,15,0,0,102,107,3,18,9,0,103,104,5,16,0,0,104,106,3,18,9,0,105,103, + 1,0,0,0,106,109,1,0,0,0,107,105,1,0,0,0,107,108,1,0,0,0,108,111,1,0,0,0, + 109,107,1,0,0,0,110,112,5,16,0,0,111,110,1,0,0,0,111,112,1,0,0,0,112,114, + 1,0,0,0,113,102,1,0,0,0,113,114,1,0,0,0,114,115,1,0,0,0,115,116,5,17,0, + 0,116,17,1,0,0,0,117,118,3,48,24,0,118,119,5,68,0,0,119,19,1,0,0,0,120, + 124,5,12,0,0,121,123,3,22,11,0,122,121,1,0,0,0,123,126,1,0,0,0,124,122, + 1,0,0,0,124,125,1,0,0,0,125,127,1,0,0,0,126,124,1,0,0,0,127,130,5,13,0, + 0,128,130,3,22,11,0,129,120,1,0,0,0,129,128,1,0,0,0,130,21,1,0,0,0,131, + 138,3,24,12,0,132,138,3,26,13,0,133,138,3,28,14,0,134,138,3,30,15,0,135, + 138,3,32,16,0,136,138,3,34,17,0,137,131,1,0,0,0,137,132,1,0,0,0,137,133, + 1,0,0,0,137,134,1,0,0,0,137,135,1,0,0,0,137,136,1,0,0,0,138,23,1,0,0,0, + 139,143,3,48,24,0,140,142,3,42,21,0,141,140,1,0,0,0,142,145,1,0,0,0,143, + 141,1,0,0,0,143,144,1,0,0,0,144,146,1,0,0,0,145,143,1,0,0,0,146,147,5,68, + 0,0,147,148,5,10,0,0,148,149,3,40,20,0,149,150,5,2,0,0,150,25,1,0,0,0,151, + 152,3,48,24,0,152,153,5,68,0,0,153,154,5,16,0,0,154,155,3,48,24,0,155,156, + 5,68,0,0,156,157,5,10,0,0,157,158,3,40,20,0,158,159,5,2,0,0,159,27,1,0, + 0,0,160,161,5,68,0,0,161,162,5,10,0,0,162,163,3,40,20,0,163,164,5,2,0,0, + 164,29,1,0,0,0,165,166,5,18,0,0,166,167,5,15,0,0,167,168,5,66,0,0,168,169, + 5,6,0,0,169,170,3,40,20,0,170,171,5,17,0,0,171,172,5,2,0,0,172,31,1,0,0, + 0,173,174,5,18,0,0,174,175,5,15,0,0,175,176,3,40,20,0,176,177,5,17,0,0, + 177,178,5,2,0,0,178,33,1,0,0,0,179,180,5,19,0,0,180,181,5,15,0,0,181,182, + 3,40,20,0,182,183,5,17,0,0,183,186,3,20,10,0,184,185,5,20,0,0,185,187,3, + 20,10,0,186,184,1,0,0,0,186,187,1,0,0,0,187,35,1,0,0,0,188,189,5,68,0,0, + 189,190,3,38,19,0,190,37,1,0,0,0,191,203,5,15,0,0,192,197,3,40,20,0,193, + 194,5,16,0,0,194,196,3,40,20,0,195,193,1,0,0,0,196,199,1,0,0,0,197,195, + 1,0,0,0,197,198,1,0,0,0,198,201,1,0,0,0,199,197,1,0,0,0,200,202,5,16,0, + 0,201,200,1,0,0,0,201,202,1,0,0,0,202,204,1,0,0,0,203,192,1,0,0,0,203,204, + 1,0,0,0,204,205,1,0,0,0,205,206,5,17,0,0,206,39,1,0,0,0,207,208,6,20,-1, + 0,208,209,5,15,0,0,209,210,3,40,20,0,210,211,5,17,0,0,211,261,1,0,0,0,212, + 213,3,48,24,0,213,214,5,15,0,0,214,217,3,40,20,0,215,216,5,16,0,0,216,218, + 3,40,20,0,217,215,1,0,0,0,217,218,1,0,0,0,218,220,1,0,0,0,219,221,5,16, + 0,0,220,219,1,0,0,0,220,221,1,0,0,0,221,222,1,0,0,0,222,223,5,17,0,0,223, + 261,1,0,0,0,224,261,3,36,18,0,225,226,5,21,0,0,226,227,5,68,0,0,227,261, + 3,38,19,0,228,229,5,24,0,0,229,230,5,22,0,0,230,231,3,40,20,0,231,232,5, + 23,0,0,232,233,7,1,0,0,233,261,1,0,0,0,234,235,5,30,0,0,235,236,5,22,0, + 0,236,237,3,40,20,0,237,238,5,23,0,0,238,239,7,2,0,0,239,261,1,0,0,0,240, + 241,7,3,0,0,241,261,3,40,20,14,242,254,5,22,0,0,243,248,3,40,20,0,244,245, + 5,16,0,0,245,247,3,40,20,0,246,244,1,0,0,0,247,250,1,0,0,0,248,246,1,0, + 0,0,248,249,1,0,0,0,249,252,1,0,0,0,250,248,1,0,0,0,251,253,5,16,0,0,252, + 251,1,0,0,0,252,253,1,0,0,0,253,255,1,0,0,0,254,243,1,0,0,0,254,255,1,0, + 0,0,255,256,1,0,0,0,256,261,5,23,0,0,257,261,5,67,0,0,258,261,5,68,0,0, + 259,261,3,44,22,0,260,207,1,0,0,0,260,212,1,0,0,0,260,224,1,0,0,0,260,225, + 1,0,0,0,260,228,1,0,0,0,260,234,1,0,0,0,260,240,1,0,0,0,260,242,1,0,0,0, + 260,257,1,0,0,0,260,258,1,0,0,0,260,259,1,0,0,0,261,303,1,0,0,0,262,263, + 10,13,0,0,263,264,7,4,0,0,264,302,3,40,20,14,265,266,10,12,0,0,266,267, + 7,5,0,0,267,302,3,40,20,13,268,269,10,11,0,0,269,270,7,6,0,0,270,302,3, + 40,20,12,271,272,10,10,0,0,272,273,7,7,0,0,273,302,3,40,20,11,274,275,10, + 9,0,0,275,276,5,46,0,0,276,302,3,40,20,10,277,278,10,8,0,0,278,279,5,4, + 0,0,279,302,3,40,20,9,280,281,10,7,0,0,281,282,5,47,0,0,282,302,3,40,20, + 8,283,284,10,6,0,0,284,285,5,48,0,0,285,302,3,40,20,7,286,287,10,5,0,0, + 287,288,5,49,0,0,288,302,3,40,20,6,289,290,10,19,0,0,290,291,5,22,0,0,291, + 292,5,60,0,0,292,302,5,23,0,0,293,294,10,16,0,0,294,302,7,8,0,0,295,296, + 10,15,0,0,296,297,5,37,0,0,297,298,5,15,0,0,298,299,3,40,20,0,299,300,5, + 17,0,0,300,302,1,0,0,0,301,262,1,0,0,0,301,265,1,0,0,0,301,268,1,0,0,0, + 301,271,1,0,0,0,301,274,1,0,0,0,301,277,1,0,0,0,301,280,1,0,0,0,301,283, + 1,0,0,0,301,286,1,0,0,0,301,289,1,0,0,0,301,293,1,0,0,0,301,295,1,0,0,0, + 302,305,1,0,0,0,303,301,1,0,0,0,303,304,1,0,0,0,304,41,1,0,0,0,305,303, + 1,0,0,0,306,307,5,50,0,0,307,43,1,0,0,0,308,314,5,58,0,0,309,314,3,46,23, + 0,310,314,5,63,0,0,311,314,5,64,0,0,312,314,5,65,0,0,313,308,1,0,0,0,313, + 309,1,0,0,0,313,310,1,0,0,0,313,311,1,0,0,0,313,312,1,0,0,0,314,45,1,0, + 0,0,315,317,5,60,0,0,316,318,5,59,0,0,317,316,1,0,0,0,317,318,1,0,0,0,318, + 47,1,0,0,0,319,320,7,9,0,0,320,49,1,0,0,0,26,53,68,71,84,96,107,111,113, + 124,129,137,143,186,197,201,203,217,220,248,252,254,260,301,303,313,317]; + + private static __ATN: ATN; public static get _ATN(): ATN { if (!CashScriptParser.__ATN) { - CashScriptParser.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(CashScriptParser._serializedATN)); + CashScriptParser.__ATN = new ATNDeserializer().deserialize(CashScriptParser._serializedATN); } return CashScriptParser.__ATN; } + + static DecisionsToDFA = CashScriptParser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); + } export class SourceFileContext extends ParserRuleContext { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public contractDefinition(): ContractDefinitionContext { - return this.getRuleContext(0, ContractDefinitionContext); - } - public EOF(): TerminalNode { return this.getToken(CashScriptParser.EOF, 0); } - public pragmaDirective(): PragmaDirectiveContext[]; - public pragmaDirective(i: number): PragmaDirectiveContext; - public pragmaDirective(i?: number): PragmaDirectiveContext | PragmaDirectiveContext[] { - if (i === undefined) { - return this.getRuleContexts(PragmaDirectiveContext); - } else { - return this.getRuleContext(i, PragmaDirectiveContext); - } + return this.getTypedRuleContext(ContractDefinitionContext, 0) as ContractDefinitionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public EOF(): TerminalNode { + return this.getToken(CashScriptParser.EOF, 0); + } + public pragmaDirective_list(): PragmaDirectiveContext[] { + return this.getTypedRuleContexts(PragmaDirectiveContext) as PragmaDirectiveContext[]; + } + public pragmaDirective(i: number): PragmaDirectiveContext { + return this.getTypedRuleContext(PragmaDirectiveContext, i) as PragmaDirectiveContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_sourceFile; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_sourceFile; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitSourceFile) { @@ -1990,18 +1914,20 @@ export class SourceFileContext extends ParserRuleContext { export class PragmaDirectiveContext extends ParserRuleContext { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public pragmaName(): PragmaNameContext { - return this.getRuleContext(0, PragmaNameContext); + return this.getTypedRuleContext(PragmaNameContext, 0) as PragmaNameContext; } public pragmaValue(): PragmaValueContext { - return this.getRuleContext(0, PragmaValueContext); + return this.getTypedRuleContext(PragmaValueContext, 0) as PragmaValueContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return CashScriptParser.RULE_pragmaDirective; } // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_pragmaDirective; } - // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitPragmaDirective) { return visitor.visitPragmaDirective(this); @@ -2013,11 +1939,13 @@ export class PragmaDirectiveContext extends ParserRuleContext { export class PragmaNameContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_pragmaName; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_pragmaName; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitPragmaName) { @@ -2030,20 +1958,19 @@ export class PragmaNameContext extends ParserRuleContext { export class PragmaValueContext extends ParserRuleContext { - public versionConstraint(): VersionConstraintContext[]; - public versionConstraint(i: number): VersionConstraintContext; - public versionConstraint(i?: number): VersionConstraintContext | VersionConstraintContext[] { - if (i === undefined) { - return this.getRuleContexts(VersionConstraintContext); - } else { - return this.getRuleContext(i, VersionConstraintContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public versionConstraint_list(): VersionConstraintContext[] { + return this.getTypedRuleContexts(VersionConstraintContext) as VersionConstraintContext[]; + } + public versionConstraint(i: number): VersionConstraintContext { + return this.getTypedRuleContext(VersionConstraintContext, i) as VersionConstraintContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_pragmaValue; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_pragmaValue; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitPragmaValue) { @@ -2056,15 +1983,19 @@ export class PragmaValueContext extends ParserRuleContext { export class VersionConstraintContext extends ParserRuleContext { - public VersionLiteral(): TerminalNode { return this.getToken(CashScriptParser.VersionLiteral, 0); } - public versionOperator(): VersionOperatorContext | undefined { - return this.tryGetRuleContext(0, VersionOperatorContext); - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public VersionLiteral(): TerminalNode { + return this.getToken(CashScriptParser.VersionLiteral, 0); + } + public versionOperator(): VersionOperatorContext { + return this.getTypedRuleContext(VersionOperatorContext, 0) as VersionOperatorContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_versionConstraint; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_versionConstraint; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitVersionConstraint) { @@ -2077,11 +2008,13 @@ export class VersionConstraintContext extends ParserRuleContext { export class VersionOperatorContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_versionOperator; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_versionOperator; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitVersionOperator) { @@ -2094,24 +2027,25 @@ export class VersionOperatorContext extends ParserRuleContext { export class ContractDefinitionContext extends ParserRuleContext { - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); + } public parameterList(): ParameterListContext { - return this.getRuleContext(0, ParameterListContext); + return this.getTypedRuleContext(ParameterListContext, 0) as ParameterListContext; } - public functionDefinition(): FunctionDefinitionContext[]; - public functionDefinition(i: number): FunctionDefinitionContext; - public functionDefinition(i?: number): FunctionDefinitionContext | FunctionDefinitionContext[] { - if (i === undefined) { - return this.getRuleContexts(FunctionDefinitionContext); - } else { - return this.getRuleContext(i, FunctionDefinitionContext); - } + public functionDefinition_list(): FunctionDefinitionContext[] { + return this.getTypedRuleContexts(FunctionDefinitionContext) as FunctionDefinitionContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public functionDefinition(i: number): FunctionDefinitionContext { + return this.getTypedRuleContext(FunctionDefinitionContext, i) as FunctionDefinitionContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_contractDefinition; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_contractDefinition; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitContractDefinition) { @@ -2124,24 +2058,25 @@ export class ContractDefinitionContext extends ParserRuleContext { export class FunctionDefinitionContext extends ParserRuleContext { - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); + } public parameterList(): ParameterListContext { - return this.getRuleContext(0, ParameterListContext); + return this.getTypedRuleContext(ParameterListContext, 0) as ParameterListContext; } - public statement(): StatementContext[]; - public statement(i: number): StatementContext; - public statement(i?: number): StatementContext | StatementContext[] { - if (i === undefined) { - return this.getRuleContexts(StatementContext); - } else { - return this.getRuleContext(i, StatementContext); - } + public statement_list(): StatementContext[] { + return this.getTypedRuleContexts(StatementContext) as StatementContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public statement(i: number): StatementContext { + return this.getTypedRuleContext(StatementContext, i) as StatementContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_functionDefinition; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_functionDefinition; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitFunctionDefinition) { @@ -2154,20 +2089,19 @@ export class FunctionDefinitionContext extends ParserRuleContext { export class ParameterListContext extends ParserRuleContext { - public parameter(): ParameterContext[]; - public parameter(i: number): ParameterContext; - public parameter(i?: number): ParameterContext | ParameterContext[] { - if (i === undefined) { - return this.getRuleContexts(ParameterContext); - } else { - return this.getRuleContext(i, ParameterContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public parameter_list(): ParameterContext[] { + return this.getTypedRuleContexts(ParameterContext) as ParameterContext[]; + } + public parameter(i: number): ParameterContext { + return this.getTypedRuleContext(ParameterContext, i) as ParameterContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_parameterList; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_parameterList; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitParameterList) { @@ -2180,15 +2114,19 @@ export class ParameterListContext extends ParserRuleContext { export class ParameterContext extends ParserRuleContext { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; } - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); + } + public get ruleIndex(): number { + return CashScriptParser.RULE_parameter; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_parameter; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitParameter) { @@ -2201,20 +2139,19 @@ export class ParameterContext extends ParserRuleContext { export class BlockContext extends ParserRuleContext { - public statement(): StatementContext[]; - public statement(i: number): StatementContext; - public statement(i?: number): StatementContext | StatementContext[] { - if (i === undefined) { - return this.getRuleContexts(StatementContext); - } else { - return this.getRuleContext(i, StatementContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public statement_list(): StatementContext[] { + return this.getTypedRuleContexts(StatementContext) as StatementContext[]; + } + public statement(i: number): StatementContext { + return this.getTypedRuleContext(StatementContext, i) as StatementContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_block; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_block; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitBlock) { @@ -2227,29 +2164,31 @@ export class BlockContext extends ParserRuleContext { export class StatementContext extends ParserRuleContext { - public variableDefinition(): VariableDefinitionContext | undefined { - return this.tryGetRuleContext(0, VariableDefinitionContext); + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public tupleAssignment(): TupleAssignmentContext | undefined { - return this.tryGetRuleContext(0, TupleAssignmentContext); + public variableDefinition(): VariableDefinitionContext { + return this.getTypedRuleContext(VariableDefinitionContext, 0) as VariableDefinitionContext; } - public assignStatement(): AssignStatementContext | undefined { - return this.tryGetRuleContext(0, AssignStatementContext); + public tupleAssignment(): TupleAssignmentContext { + return this.getTypedRuleContext(TupleAssignmentContext, 0) as TupleAssignmentContext; } - public timeOpStatement(): TimeOpStatementContext | undefined { - return this.tryGetRuleContext(0, TimeOpStatementContext); + public assignStatement(): AssignStatementContext { + return this.getTypedRuleContext(AssignStatementContext, 0) as AssignStatementContext; } - public requireStatement(): RequireStatementContext | undefined { - return this.tryGetRuleContext(0, RequireStatementContext); + public timeOpStatement(): TimeOpStatementContext { + return this.getTypedRuleContext(TimeOpStatementContext, 0) as TimeOpStatementContext; } - public ifStatement(): IfStatementContext | undefined { - return this.tryGetRuleContext(0, IfStatementContext); + public requireStatement(): RequireStatementContext { + return this.getTypedRuleContext(RequireStatementContext, 0) as RequireStatementContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public ifStatement(): IfStatementContext { + return this.getTypedRuleContext(IfStatementContext, 0) as IfStatementContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_statement; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_statement; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitStatement) { @@ -2262,27 +2201,28 @@ export class StatementContext extends ParserRuleContext { export class VariableDefinitionContext extends ParserRuleContext { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; + } + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); } - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - public modifier(): ModifierContext[]; - public modifier(i: number): ModifierContext; - public modifier(i?: number): ModifierContext | ModifierContext[] { - if (i === undefined) { - return this.getRuleContexts(ModifierContext); - } else { - return this.getRuleContext(i, ModifierContext); - } + public modifier_list(): ModifierContext[] { + return this.getTypedRuleContexts(ModifierContext) as ModifierContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public modifier(i: number): ModifierContext { + return this.getTypedRuleContext(ModifierContext, i) as ModifierContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_variableDefinition; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_variableDefinition; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitVariableDefinition) { @@ -2295,33 +2235,29 @@ export class VariableDefinitionContext extends ParserRuleContext { export class TupleAssignmentContext extends ParserRuleContext { - public typeName(): TypeNameContext[]; - public typeName(i: number): TypeNameContext; - public typeName(i?: number): TypeNameContext | TypeNameContext[] { - if (i === undefined) { - return this.getRuleContexts(TypeNameContext); - } else { - return this.getRuleContext(i, TypeNameContext); - } + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; } - public Identifier(): TerminalNode[]; - public Identifier(i: number): TerminalNode; - public Identifier(i?: number): TerminalNode | TerminalNode[] { - if (i === undefined) { - return this.getTokens(CashScriptParser.Identifier); - } else { - return this.getToken(CashScriptParser.Identifier, i); - } + public typeName_list(): TypeNameContext[] { + return this.getTypedRuleContexts(TypeNameContext) as TypeNameContext[]; + } + public typeName(i: number): TypeNameContext { + return this.getTypedRuleContext(TypeNameContext, i) as TypeNameContext; + } + public Identifier_list(): TerminalNode[] { + return this.getTokens(CashScriptParser.Identifier); + } + public Identifier(i: number): TerminalNode { + return this.getToken(CashScriptParser.Identifier, i); } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return CashScriptParser.RULE_tupleAssignment; } // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_tupleAssignment; } - // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitTupleAssignment) { return visitor.visitTupleAssignment(this); @@ -2333,16 +2269,20 @@ export class TupleAssignmentContext extends ParserRuleContext { export class AssignStatementContext extends ParserRuleContext { - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return CashScriptParser.RULE_assignStatement; } // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_assignStatement; } - // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitAssignStatement) { return visitor.visitAssignStatement(this); @@ -2354,16 +2294,20 @@ export class AssignStatementContext extends ParserRuleContext { export class TimeOpStatementContext extends ParserRuleContext { - public TxVar(): TerminalNode { return this.getToken(CashScriptParser.TxVar, 0); } + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public TxVar(): TerminalNode { + return this.getToken(CashScriptParser.TxVar, 0); + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return CashScriptParser.RULE_timeOpStatement; } // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_timeOpStatement; } - // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitTimeOpStatement) { return visitor.visitTimeOpStatement(this); @@ -2375,15 +2319,17 @@ export class TimeOpStatementContext extends ParserRuleContext { export class RequireStatementContext extends ParserRuleContext { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return CashScriptParser.RULE_requireStatement; } // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_requireStatement; } - // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitRequireStatement) { return visitor.visitRequireStatement(this); @@ -2397,23 +2343,22 @@ export class RequireStatementContext extends ParserRuleContext { export class IfStatementContext extends ParserRuleContext { public _ifBlock!: BlockContext; public _elseBlock!: BlockContext; + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - public block(): BlockContext[]; - public block(i: number): BlockContext; - public block(i?: number): BlockContext | BlockContext[] { - if (i === undefined) { - return this.getRuleContexts(BlockContext); - } else { - return this.getRuleContext(i, BlockContext); - } + public block_list(): BlockContext[] { + return this.getTypedRuleContexts(BlockContext) as BlockContext[]; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public block(i: number): BlockContext { + return this.getTypedRuleContext(BlockContext, i) as BlockContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_ifStatement; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_ifStatement; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitIfStatement) { @@ -2426,16 +2371,20 @@ export class IfStatementContext extends ParserRuleContext { export class FunctionCallContext extends ParserRuleContext { - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); + } public expressionList(): ExpressionListContext { - return this.getRuleContext(0, ExpressionListContext); + return this.getTypedRuleContext(ExpressionListContext, 0) as ExpressionListContext; } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { - super(parent, invokingState); + public get ruleIndex(): number { + return CashScriptParser.RULE_functionCall; } // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_functionCall; } - // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitFunctionCall) { return visitor.visitFunctionCall(this); @@ -2447,20 +2396,19 @@ export class FunctionCallContext extends ParserRuleContext { export class ExpressionListContext extends ParserRuleContext { - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } - } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_expressionList; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_expressionList; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitExpressionList) { @@ -2473,205 +2421,198 @@ export class ExpressionListContext extends ParserRuleContext { export class ExpressionContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_expression; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_expression; } public copyFrom(ctx: ExpressionContext): void { super.copyFrom(ctx); } } -export class ParenthesisedContext extends ExpressionContext { - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); +export class CastContext extends ExpressionContext { + public _castable!: ExpressionContext; + public _size!: ExpressionContext; + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public typeName(): TypeNameContext { + return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext; + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitParenthesised) { - return visitor.visitParenthesised(this); + if (visitor.visitCast) { + return visitor.visitCast(this); } else { return visitor.visitChildren(this); } } } -export class CastContext extends ExpressionContext { - public _castable!: ExpressionContext; - public _size!: ExpressionContext; - public typeName(): TypeNameContext { - return this.getRuleContext(0, TypeNameContext); - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } +export class UnaryIntrospectionOpContext extends ExpressionContext { + public _scope!: Token; + public _op!: Token; + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitCast) { - return visitor.visitCast(this); + if (visitor.visitUnaryIntrospectionOp) { + return visitor.visitUnaryIntrospectionOp(this); } else { return visitor.visitChildren(this); } } } -export class FunctionCallExpressionContext extends ExpressionContext { - public functionCall(): FunctionCallContext { - return this.getRuleContext(0, FunctionCallContext); +export class ArrayContext extends ExpressionContext { + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitFunctionCallExpression) { - return visitor.visitFunctionCallExpression(this); + if (visitor.visitArray) { + return visitor.visitArray(this); } else { return visitor.visitChildren(this); } } } -export class InstantiationContext extends ExpressionContext { - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } - public expressionList(): ExpressionListContext { - return this.getRuleContext(0, ExpressionListContext); +export class UnaryOpContext extends ExpressionContext { + public _op!: Token; + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitInstantiation) { - return visitor.visitInstantiation(this); + if (visitor.visitUnaryOp) { + return visitor.visitUnaryOp(this); } else { return visitor.visitChildren(this); } } } -export class TupleIndexOpContext extends ExpressionContext { - public _index!: Token; - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); +export class IdentifierContext extends ExpressionContext { + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - public NumberLiteral(): TerminalNode { return this.getToken(CashScriptParser.NumberLiteral, 0); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitTupleIndexOp) { - return visitor.visitTupleIndexOp(this); + if (visitor.visitIdentifier) { + return visitor.visitIdentifier(this); } else { return visitor.visitChildren(this); } } } -export class UnaryIntrospectionOpContext extends ExpressionContext { - public _scope!: Token; - public _op!: Token; - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); +export class LiteralExpressionContext extends ExpressionContext { + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public literal(): LiteralContext { + return this.getTypedRuleContext(LiteralContext, 0) as LiteralContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitUnaryIntrospectionOp) { - return visitor.visitUnaryIntrospectionOp(this); + if (visitor.visitLiteralExpression) { + return visitor.visitLiteralExpression(this); } else { return visitor.visitChildren(this); } } } -export class UnaryOpContext extends ExpressionContext { - public _op!: Token; +export class TupleIndexOpContext extends ExpressionContext { + public _index!: Token; + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext); + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public NumberLiteral(): TerminalNode { + return this.getToken(CashScriptParser.NumberLiteral, 0); } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitUnaryOp) { - return visitor.visitUnaryOp(this); + if (visitor.visitTupleIndexOp) { + return visitor.visitTupleIndexOp(this); } else { return visitor.visitChildren(this); } } } -export class BinaryOpContext extends ExpressionContext { - public _left!: ExpressionContext; - public _op!: Token; - public _right!: ExpressionContext; - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } +export class InstantiationContext extends ExpressionContext { + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public Identifier(): TerminalNode { + return this.getToken(CashScriptParser.Identifier, 0); + } + public expressionList(): ExpressionListContext { + return this.getTypedRuleContext(ExpressionListContext, 0) as ExpressionListContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitBinaryOp) { - return visitor.visitBinaryOp(this); + if (visitor.visitInstantiation) { + return visitor.visitInstantiation(this); } else { return visitor.visitChildren(this); } } } -export class ArrayContext extends ExpressionContext { - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext; - public expression(i?: number): ExpressionContext | ExpressionContext[] { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } else { - return this.getRuleContext(i, ExpressionContext); - } +export class FunctionCallExpressionContext extends ExpressionContext { + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public functionCall(): FunctionCallContext { + return this.getTypedRuleContext(FunctionCallContext, 0) as FunctionCallContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitArray) { - return visitor.visitArray(this); + if (visitor.visitFunctionCallExpression) { + return visitor.visitFunctionCallExpression(this); } else { return visitor.visitChildren(this); } } } export class NullaryOpContext extends ExpressionContext { - public NullaryOp(): TerminalNode { return this.getToken(CashScriptParser.NullaryOp, 0); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public NullaryOp(): TerminalNode { + return this.getToken(CashScriptParser.NullaryOp, 0); } // @Override public accept(visitor: CashScriptVisitor): Result { @@ -2682,33 +2623,41 @@ export class NullaryOpContext extends ExpressionContext { } } } -export class IdentifierContext extends ExpressionContext { - public Identifier(): TerminalNode { return this.getToken(CashScriptParser.Identifier, 0); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); +export class ParenthesisedContext extends ExpressionContext { + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); + } + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitIdentifier) { - return visitor.visitIdentifier(this); + if (visitor.visitParenthesised) { + return visitor.visitParenthesised(this); } else { return visitor.visitChildren(this); } } } -export class LiteralExpressionContext extends ExpressionContext { - public literal(): LiteralContext { - return this.getRuleContext(0, LiteralContext); +export class BinaryOpContext extends ExpressionContext { + public _left!: ExpressionContext; + public _op!: Token; + public _right!: ExpressionContext; + constructor(parser: CashScriptParser, ctx: ExpressionContext) { + super(parser, ctx.parentCtx, ctx.invokingState); + super.copyFrom(ctx); } - constructor(ctx: ExpressionContext) { - super(ctx.parent, ctx.invokingState); - this.copyFrom(ctx); + public expression_list(): ExpressionContext[] { + return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; + } + public expression(i: number): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; } // @Override public accept(visitor: CashScriptVisitor): Result { - if (visitor.visitLiteralExpression) { - return visitor.visitLiteralExpression(this); + if (visitor.visitBinaryOp) { + return visitor.visitBinaryOp(this); } else { return visitor.visitChildren(this); } @@ -2717,11 +2666,13 @@ export class LiteralExpressionContext extends ExpressionContext { export class ModifierContext extends ParserRuleContext { - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public get ruleIndex(): number { + return CashScriptParser.RULE_modifier; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_modifier; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitModifier) { @@ -2734,18 +2685,28 @@ export class ModifierContext extends ParserRuleContext { export class LiteralContext extends ParserRuleContext { - public BooleanLiteral(): TerminalNode | undefined { return this.tryGetToken(CashScriptParser.BooleanLiteral, 0); } - public numberLiteral(): NumberLiteralContext | undefined { - return this.tryGetRuleContext(0, NumberLiteralContext); - } - public StringLiteral(): TerminalNode | undefined { return this.tryGetToken(CashScriptParser.StringLiteral, 0); } - public DateLiteral(): TerminalNode | undefined { return this.tryGetToken(CashScriptParser.DateLiteral, 0); } - public HexLiteral(): TerminalNode | undefined { return this.tryGetToken(CashScriptParser.HexLiteral, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public BooleanLiteral(): TerminalNode { + return this.getToken(CashScriptParser.BooleanLiteral, 0); + } + public numberLiteral(): NumberLiteralContext { + return this.getTypedRuleContext(NumberLiteralContext, 0) as NumberLiteralContext; + } + public StringLiteral(): TerminalNode { + return this.getToken(CashScriptParser.StringLiteral, 0); + } + public DateLiteral(): TerminalNode { + return this.getToken(CashScriptParser.DateLiteral, 0); + } + public HexLiteral(): TerminalNode { + return this.getToken(CashScriptParser.HexLiteral, 0); + } + public get ruleIndex(): number { + return CashScriptParser.RULE_literal; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_literal; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitLiteral) { @@ -2758,13 +2719,19 @@ export class LiteralContext extends ParserRuleContext { export class NumberLiteralContext extends ParserRuleContext { - public NumberLiteral(): TerminalNode { return this.getToken(CashScriptParser.NumberLiteral, 0); } - public NumberUnit(): TerminalNode | undefined { return this.tryGetToken(CashScriptParser.NumberUnit, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public NumberLiteral(): TerminalNode { + return this.getToken(CashScriptParser.NumberLiteral, 0); + } + public NumberUnit(): TerminalNode { + return this.getToken(CashScriptParser.NumberUnit, 0); + } + public get ruleIndex(): number { + return CashScriptParser.RULE_numberLiteral; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_numberLiteral; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitNumberLiteral) { @@ -2777,12 +2744,16 @@ export class NumberLiteralContext extends ParserRuleContext { export class TypeNameContext extends ParserRuleContext { - public Bytes(): TerminalNode { return this.getToken(CashScriptParser.Bytes, 0); } - constructor(parent: ParserRuleContext | undefined, invokingState: number) { + constructor(parser?: CashScriptParser, parent?: ParserRuleContext, invokingState?: number) { super(parent, invokingState); + this.parser = parser; + } + public Bytes(): TerminalNode { + return this.getToken(CashScriptParser.Bytes, 0); + } + public get ruleIndex(): number { + return CashScriptParser.RULE_typeName; } - // @Override - public get ruleIndex(): number { return CashScriptParser.RULE_typeName; } // @Override public accept(visitor: CashScriptVisitor): Result { if (visitor.visitTypeName) { @@ -2792,5 +2763,3 @@ export class TypeNameContext extends ParserRuleContext { } } } - - diff --git a/packages/cashc/src/grammar/CashScriptVisitor.ts b/packages/cashc/src/grammar/CashScriptVisitor.ts index d557ffef..f99a0bf0 100644 --- a/packages/cashc/src/grammar/CashScriptVisitor.ts +++ b/packages/cashc/src/grammar/CashScriptVisitor.ts @@ -1,45 +1,44 @@ -// Generated from src/grammar/CashScript.g4 by ANTLR 4.9.0-SNAPSHOT - - -import { ParseTreeVisitor } from "antlr4ts/tree/ParseTreeVisitor.js"; - -import { ParenthesisedContext } from "./CashScriptParser.js"; -import { CastContext } from "./CashScriptParser.js"; -import { FunctionCallExpressionContext } from "./CashScriptParser.js"; -import { InstantiationContext } from "./CashScriptParser.js"; -import { TupleIndexOpContext } from "./CashScriptParser.js"; -import { UnaryIntrospectionOpContext } from "./CashScriptParser.js"; -import { UnaryOpContext } from "./CashScriptParser.js"; -import { BinaryOpContext } from "./CashScriptParser.js"; -import { ArrayContext } from "./CashScriptParser.js"; -import { NullaryOpContext } from "./CashScriptParser.js"; -import { IdentifierContext } from "./CashScriptParser.js"; -import { LiteralExpressionContext } from "./CashScriptParser.js"; -import { SourceFileContext } from "./CashScriptParser.js"; -import { PragmaDirectiveContext } from "./CashScriptParser.js"; -import { PragmaNameContext } from "./CashScriptParser.js"; -import { PragmaValueContext } from "./CashScriptParser.js"; -import { VersionConstraintContext } from "./CashScriptParser.js"; -import { VersionOperatorContext } from "./CashScriptParser.js"; -import { ContractDefinitionContext } from "./CashScriptParser.js"; -import { FunctionDefinitionContext } from "./CashScriptParser.js"; -import { ParameterListContext } from "./CashScriptParser.js"; -import { ParameterContext } from "./CashScriptParser.js"; -import { BlockContext } from "./CashScriptParser.js"; -import { StatementContext } from "./CashScriptParser.js"; -import { VariableDefinitionContext } from "./CashScriptParser.js"; -import { TupleAssignmentContext } from "./CashScriptParser.js"; -import { AssignStatementContext } from "./CashScriptParser.js"; -import { TimeOpStatementContext } from "./CashScriptParser.js"; -import { RequireStatementContext } from "./CashScriptParser.js"; -import { IfStatementContext } from "./CashScriptParser.js"; -import { FunctionCallContext } from "./CashScriptParser.js"; -import { ExpressionListContext } from "./CashScriptParser.js"; -import { ExpressionContext } from "./CashScriptParser.js"; -import { ModifierContext } from "./CashScriptParser.js"; -import { LiteralContext } from "./CashScriptParser.js"; -import { NumberLiteralContext } from "./CashScriptParser.js"; -import { TypeNameContext } from "./CashScriptParser.js"; +// Generated from src/grammar/CashScript.g4 by ANTLR 4.13.1 + +import {ParseTreeVisitor} from 'antlr4'; + + +import { SourceFileContext } from "./CashScriptParser"; +import { PragmaDirectiveContext } from "./CashScriptParser"; +import { PragmaNameContext } from "./CashScriptParser"; +import { PragmaValueContext } from "./CashScriptParser"; +import { VersionConstraintContext } from "./CashScriptParser"; +import { VersionOperatorContext } from "./CashScriptParser"; +import { ContractDefinitionContext } from "./CashScriptParser"; +import { FunctionDefinitionContext } from "./CashScriptParser"; +import { ParameterListContext } from "./CashScriptParser"; +import { ParameterContext } from "./CashScriptParser"; +import { BlockContext } from "./CashScriptParser"; +import { StatementContext } from "./CashScriptParser"; +import { VariableDefinitionContext } from "./CashScriptParser"; +import { TupleAssignmentContext } from "./CashScriptParser"; +import { AssignStatementContext } from "./CashScriptParser"; +import { TimeOpStatementContext } from "./CashScriptParser"; +import { RequireStatementContext } from "./CashScriptParser"; +import { IfStatementContext } from "./CashScriptParser"; +import { FunctionCallContext } from "./CashScriptParser"; +import { ExpressionListContext } from "./CashScriptParser"; +import { CastContext } from "./CashScriptParser"; +import { UnaryIntrospectionOpContext } from "./CashScriptParser"; +import { ArrayContext } from "./CashScriptParser"; +import { UnaryOpContext } from "./CashScriptParser"; +import { IdentifierContext } from "./CashScriptParser"; +import { LiteralExpressionContext } from "./CashScriptParser"; +import { TupleIndexOpContext } from "./CashScriptParser"; +import { InstantiationContext } from "./CashScriptParser"; +import { FunctionCallExpressionContext } from "./CashScriptParser"; +import { NullaryOpContext } from "./CashScriptParser"; +import { ParenthesisedContext } from "./CashScriptParser"; +import { BinaryOpContext } from "./CashScriptParser"; +import { ModifierContext } from "./CashScriptParser"; +import { LiteralContext } from "./CashScriptParser"; +import { NumberLiteralContext } from "./CashScriptParser"; +import { TypeNameContext } from "./CashScriptParser"; /** @@ -49,271 +48,229 @@ import { TypeNameContext } from "./CashScriptParser.js"; * @param The return type of the visit operation. Use `void` for * operations with no return type. */ -export interface CashScriptVisitor extends ParseTreeVisitor { +export default class CashScriptVisitor extends ParseTreeVisitor { /** - * Visit a parse tree produced by the `Parenthesised` - * labeled alternative in `CashScriptParser.expression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitParenthesised?: (ctx: ParenthesisedContext) => Result; - - /** - * Visit a parse tree produced by the `Cast` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.sourceFile`. * @param ctx the parse tree * @return the visitor result */ - visitCast?: (ctx: CastContext) => Result; - + visitSourceFile?: (ctx: SourceFileContext) => Result; /** - * Visit a parse tree produced by the `FunctionCallExpression` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.pragmaDirective`. * @param ctx the parse tree * @return the visitor result */ - visitFunctionCallExpression?: (ctx: FunctionCallExpressionContext) => Result; - + visitPragmaDirective?: (ctx: PragmaDirectiveContext) => Result; /** - * Visit a parse tree produced by the `Instantiation` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.pragmaName`. * @param ctx the parse tree * @return the visitor result */ - visitInstantiation?: (ctx: InstantiationContext) => Result; - + visitPragmaName?: (ctx: PragmaNameContext) => Result; /** - * Visit a parse tree produced by the `TupleIndexOp` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.pragmaValue`. * @param ctx the parse tree * @return the visitor result */ - visitTupleIndexOp?: (ctx: TupleIndexOpContext) => Result; - + visitPragmaValue?: (ctx: PragmaValueContext) => Result; /** - * Visit a parse tree produced by the `UnaryIntrospectionOp` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.versionConstraint`. * @param ctx the parse tree * @return the visitor result */ - visitUnaryIntrospectionOp?: (ctx: UnaryIntrospectionOpContext) => Result; - + visitVersionConstraint?: (ctx: VersionConstraintContext) => Result; /** - * Visit a parse tree produced by the `UnaryOp` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.versionOperator`. * @param ctx the parse tree * @return the visitor result */ - visitUnaryOp?: (ctx: UnaryOpContext) => Result; - + visitVersionOperator?: (ctx: VersionOperatorContext) => Result; /** - * Visit a parse tree produced by the `BinaryOp` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.contractDefinition`. * @param ctx the parse tree * @return the visitor result */ - visitBinaryOp?: (ctx: BinaryOpContext) => Result; - + visitContractDefinition?: (ctx: ContractDefinitionContext) => Result; /** - * Visit a parse tree produced by the `Array` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.functionDefinition`. * @param ctx the parse tree * @return the visitor result */ - visitArray?: (ctx: ArrayContext) => Result; - + visitFunctionDefinition?: (ctx: FunctionDefinitionContext) => Result; /** - * Visit a parse tree produced by the `NullaryOp` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.parameterList`. * @param ctx the parse tree * @return the visitor result */ - visitNullaryOp?: (ctx: NullaryOpContext) => Result; - + visitParameterList?: (ctx: ParameterListContext) => Result; /** - * Visit a parse tree produced by the `Identifier` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.parameter`. * @param ctx the parse tree * @return the visitor result */ - visitIdentifier?: (ctx: IdentifierContext) => Result; - + visitParameter?: (ctx: ParameterContext) => Result; /** - * Visit a parse tree produced by the `LiteralExpression` - * labeled alternative in `CashScriptParser.expression`. + * Visit a parse tree produced by `CashScriptParser.block`. * @param ctx the parse tree * @return the visitor result */ - visitLiteralExpression?: (ctx: LiteralExpressionContext) => Result; - + visitBlock?: (ctx: BlockContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.sourceFile`. + * Visit a parse tree produced by `CashScriptParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitSourceFile?: (ctx: SourceFileContext) => Result; - + visitStatement?: (ctx: StatementContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.pragmaDirective`. + * Visit a parse tree produced by `CashScriptParser.variableDefinition`. * @param ctx the parse tree * @return the visitor result */ - visitPragmaDirective?: (ctx: PragmaDirectiveContext) => Result; - + visitVariableDefinition?: (ctx: VariableDefinitionContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.pragmaName`. + * Visit a parse tree produced by `CashScriptParser.tupleAssignment`. * @param ctx the parse tree * @return the visitor result */ - visitPragmaName?: (ctx: PragmaNameContext) => Result; - + visitTupleAssignment?: (ctx: TupleAssignmentContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.pragmaValue`. + * Visit a parse tree produced by `CashScriptParser.assignStatement`. * @param ctx the parse tree * @return the visitor result */ - visitPragmaValue?: (ctx: PragmaValueContext) => Result; - + visitAssignStatement?: (ctx: AssignStatementContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.versionConstraint`. + * Visit a parse tree produced by `CashScriptParser.timeOpStatement`. * @param ctx the parse tree * @return the visitor result */ - visitVersionConstraint?: (ctx: VersionConstraintContext) => Result; - + visitTimeOpStatement?: (ctx: TimeOpStatementContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.versionOperator`. + * Visit a parse tree produced by `CashScriptParser.requireStatement`. * @param ctx the parse tree * @return the visitor result */ - visitVersionOperator?: (ctx: VersionOperatorContext) => Result; - + visitRequireStatement?: (ctx: RequireStatementContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.contractDefinition`. + * Visit a parse tree produced by `CashScriptParser.ifStatement`. * @param ctx the parse tree * @return the visitor result */ - visitContractDefinition?: (ctx: ContractDefinitionContext) => Result; - + visitIfStatement?: (ctx: IfStatementContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.functionDefinition`. + * Visit a parse tree produced by `CashScriptParser.functionCall`. * @param ctx the parse tree * @return the visitor result */ - visitFunctionDefinition?: (ctx: FunctionDefinitionContext) => Result; - + visitFunctionCall?: (ctx: FunctionCallContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.parameterList`. + * Visit a parse tree produced by `CashScriptParser.expressionList`. * @param ctx the parse tree * @return the visitor result */ - visitParameterList?: (ctx: ParameterListContext) => Result; - + visitExpressionList?: (ctx: ExpressionListContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.parameter`. + * Visit a parse tree produced by the `Cast` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitParameter?: (ctx: ParameterContext) => Result; - + visitCast?: (ctx: CastContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.block`. + * Visit a parse tree produced by the `UnaryIntrospectionOp` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitBlock?: (ctx: BlockContext) => Result; - + visitUnaryIntrospectionOp?: (ctx: UnaryIntrospectionOpContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.statement`. + * Visit a parse tree produced by the `Array` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitStatement?: (ctx: StatementContext) => Result; - + visitArray?: (ctx: ArrayContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.variableDefinition`. + * Visit a parse tree produced by the `UnaryOp` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitVariableDefinition?: (ctx: VariableDefinitionContext) => Result; - + visitUnaryOp?: (ctx: UnaryOpContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.tupleAssignment`. + * Visit a parse tree produced by the `Identifier` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitTupleAssignment?: (ctx: TupleAssignmentContext) => Result; - + visitIdentifier?: (ctx: IdentifierContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.assignStatement`. + * Visit a parse tree produced by the `LiteralExpression` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitAssignStatement?: (ctx: AssignStatementContext) => Result; - + visitLiteralExpression?: (ctx: LiteralExpressionContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.timeOpStatement`. + * Visit a parse tree produced by the `TupleIndexOp` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitTimeOpStatement?: (ctx: TimeOpStatementContext) => Result; - + visitTupleIndexOp?: (ctx: TupleIndexOpContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.requireStatement`. + * Visit a parse tree produced by the `Instantiation` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitRequireStatement?: (ctx: RequireStatementContext) => Result; - + visitInstantiation?: (ctx: InstantiationContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.ifStatement`. + * Visit a parse tree produced by the `FunctionCallExpression` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitIfStatement?: (ctx: IfStatementContext) => Result; - + visitFunctionCallExpression?: (ctx: FunctionCallExpressionContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.functionCall`. + * Visit a parse tree produced by the `NullaryOp` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitFunctionCall?: (ctx: FunctionCallContext) => Result; - + visitNullaryOp?: (ctx: NullaryOpContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.expressionList`. + * Visit a parse tree produced by the `Parenthesised` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitExpressionList?: (ctx: ExpressionListContext) => Result; - + visitParenthesised?: (ctx: ParenthesisedContext) => Result; /** - * Visit a parse tree produced by `CashScriptParser.expression`. + * Visit a parse tree produced by the `BinaryOp` + * labeled alternative in `CashScriptParser.expression`. * @param ctx the parse tree * @return the visitor result */ - visitExpression?: (ctx: ExpressionContext) => Result; - + visitBinaryOp?: (ctx: BinaryOpContext) => Result; /** * Visit a parse tree produced by `CashScriptParser.modifier`. * @param ctx the parse tree * @return the visitor result */ visitModifier?: (ctx: ModifierContext) => Result; - /** * Visit a parse tree produced by `CashScriptParser.literal`. * @param ctx the parse tree * @return the visitor result */ visitLiteral?: (ctx: LiteralContext) => Result; - /** * Visit a parse tree produced by `CashScriptParser.numberLiteral`. * @param ctx the parse tree * @return the visitor result */ visitNumberLiteral?: (ctx: NumberLiteralContext) => Result; - /** * Visit a parse tree produced by `CashScriptParser.typeName`. * @param ctx the parse tree diff --git a/packages/cashc/test/ast/Location.test.ts b/packages/cashc/test/ast/Location.test.ts index 54c51769..9be8b326 100644 --- a/packages/cashc/test/ast/Location.test.ts +++ b/packages/cashc/test/ast/Location.test.ts @@ -12,4 +12,21 @@ describe('Location', () => { expect(f.location).toBeDefined(); expect((f.location!).text(code)).toEqual('function hello(sig s, pubkey pk) {\n require(checkSig(s, pk));\n }'); }); + + it('should set the correct location points', () => { + const code = fs.readFileSync(new URL('../valid-contract-files/simple_functions.cash', import.meta.url), { encoding: 'utf-8' }); + const ast = parseCode(code); + + const secondFunction = ast.contract.functions[1]; + + expect(secondFunction.location).toBeDefined(); + expect(secondFunction.location!.start).toEqual({ line: 6, column: 4 }); + expect(secondFunction.location!.end).toEqual({ line: 8, column: 5 }); + + const firstStatement = secondFunction.body.statements![0]; + + expect(firstStatement.location).toBeDefined(); + expect(firstStatement.location!.start).toEqual({ line: 7, column: 8 }); + expect(firstStatement.location!.end).toEqual({ line: 7, column: 29 }); + }); }); diff --git a/yarn.lock b/yarn.lock index 826b83c2..da4f1363 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2715,15 +2715,10 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -antlr4ts-cli@^0.5.0-alpha.4: - version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts-cli/-/antlr4ts-cli-0.5.0-alpha.4.tgz#f3bfc37f10131e78d7b981c397a2aaa0450b67f6" - integrity sha512-lVPVBTA2CVHRYILSKilL6Jd4hAumhSZZWA7UbQNQrmaSSj7dPmmYaN4bOmZG79cOy0lS00i4LY68JZZjZMWVrw== - -antlr4ts@^0.5.0-alpha.4: - version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" - integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== +antlr4@^4.13.1-patch-1: + version "4.13.1-patch-1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1-patch-1.tgz#946176f863f890964a050c4f18c47fd6f7e57602" + integrity sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow== any-promise@^1.0.0: version "1.3.0"