diff --git a/pkg/compiler/compiler.go b/pkg/compiler/compiler.go index 3cdd3253..3a4b018f 100644 --- a/pkg/compiler/compiler.go +++ b/pkg/compiler/compiler.go @@ -3,10 +3,11 @@ package compiler import ( "errors" + goruntime "runtime" + "github.com/MontFerret/ferret/pkg/parser" "github.com/MontFerret/ferret/pkg/runtime" "github.com/MontFerret/ferret/pkg/stdlib" - goruntime "runtime" ) type Compiler struct { diff --git a/pkg/compiler/compiler_exec_test.go b/pkg/compiler/compiler_exec_test.go index 3b64fbd3..b31b8622 100644 --- a/pkg/compiler/compiler_exec_test.go +++ b/pkg/compiler/compiler_exec_test.go @@ -3,12 +3,13 @@ package compiler_test import ( "context" "fmt" - "github.com/MontFerret/ferret/pkg/parser" "regexp" "strconv" "strings" "testing" + "github.com/MontFerret/ferret/pkg/parser" + "github.com/MontFerret/ferret/pkg/compiler" "github.com/MontFerret/ferret/pkg/runtime" "github.com/MontFerret/ferret/pkg/runtime/core" @@ -1307,3 +1308,196 @@ func TestForLimit(t *testing.T) { return values.NewInt(2), nil })) } + +func TestForSort(t *testing.T) { + RunUseCases(t, []UseCase{ + CaseArray(` + LET users = [ + { + active: true, + age: 31, + gender: "m" + }, + { + active: true, + age: 29, + gender: "f" + }, + { + active: true, + age: 36, + gender: "m" + } + ] + FOR u IN users + SORT u.age + RETURN u + `, []any{map[string]any{"active": true, "age": 29, "gender": "f"}, map[string]any{"active": true, "age": 31, "gender": "m"}, map[string]any{"active": true, "age": 36, "gender": "m"}}), + }) + // + // + //Convey("Should compile query with SORT DESC statement", t, func() { + // c := compiler.New() + // + // p, err := c.Compile(` + // LET users = [ + // { + // active: true, + // age: 31, + // gender: "m" + // }, + // { + // active: true, + // age: 29, + // gender: "f" + // }, + // { + // active: true, + // age: 36, + // gender: "m" + // } + // ] + // FOR u IN users + // SORT u.age DESC + // RETURN u + // `) + // + // So(err, ShouldBeNil) + // + // out, err := p.Run(context.Background()) + // + // So(err, ShouldBeNil) + // + // So(string(out), ShouldEqual, `[{"active":true,"age":36,"gender":"m"},{"active":true,"age":31,"gender":"m"},{"active":true,"age":29,"gender":"f"}]`) + //}) + // + //Convey("Should compile query with SORT statement with multiple expressions", t, func() { + // c := compiler.New() + // + // p, err := c.Compile(` + // LET users = [ + // { + // active: true, + // age: 31, + // gender: "m" + // }, + // { + // active: true, + // age: 29, + // gender: "f" + // }, + // { + // active: true, + // age: 31, + // gender: "f" + // }, + // { + // active: true, + // age: 36, + // gender: "m" + // } + // ] + // FOR u IN users + // SORT u.age, u.gender + // RETURN u + // `) + // + // So(err, ShouldBeNil) + // + // out, err := p.Run(context.Background()) + // + // So(err, ShouldBeNil) + // + // So(string(out), ShouldEqual, `[{"active":true,"age":29,"gender":"f"},{"active":true,"age":31,"gender":"f"},{"active":true,"age":31,"gender":"m"},{"active":true,"age":36,"gender":"m"}]`) + //}) + // + //Convey("Should define variables and call functions", t, func() { + // c := compiler.New() + // counter := 0 + // c.RegisterFunction("TEST", func(ctx context.Context, args ...core.Value) (core.Value, error) { + // counter++ + // + // So(args[0], ShouldEqual, "foo") + // + // return values.None, nil + // }) + // + // p, err := c.Compile(` + // LET users = [ + // { + // active: true, + // age: 31, + // gender: "m" + // }, + // { + // active: true, + // age: 29, + // gender: "f" + // }, + // { + // active: true, + // age: 31, + // gender: "f" + // }, + // { + // active: true, + // age: 36, + // gender: "m" + // } + // ] + // FOR u IN users + // LET x = "foo" + // TEST(x) + // SORT u.age, u.gender + // RETURN u + // `) + // + // So(err, ShouldBeNil) + // + // out, err := p.Run(context.Background()) + // + // So(err, ShouldBeNil) + // So(counter, ShouldEqual, 4) + // So(string(out), ShouldEqual, `[{"active":true,"age":29,"gender":"f"},{"active":true,"age":31,"gender":"f"},{"active":true,"age":31,"gender":"m"},{"active":true,"age":36,"gender":"m"}]`) + //}) + // + //Convey("Should be able to reuse values from a source", t, func() { + // c := compiler.New() + // + // p, err := c.Compile(` + // LET users = [ + // { + // active: true, + // age: 31, + // gender: "m" + // }, + // { + // active: true, + // age: 29, + // gender: "f" + // }, + // { + // active: true, + // age: 31, + // gender: "f" + // }, + // { + // active: true, + // age: 36, + // gender: "m" + // } + // ] + // FOR u IN users + // LET x = u.gender + // SORT u.age, u.gender + // RETURN {u,x} + // `) + // + // So(err, ShouldBeNil) + // + // out, err := p.Run(context.Background()) + // + // So(err, ShouldBeNil) + // So(string(out), ShouldEqual, `[{"u":{"active":true,"age":29,"gender":"f"},"x":"f"},{"u":{"active":true,"age":31,"gender":"f"},"x":"f"},{"u":{"active":true,"age":31,"gender":"m"},"x":"m"},{"u":{"active":true,"age":36,"gender":"m"},"x":"m"}]`) + //}) +} diff --git a/pkg/compiler/loops.go b/pkg/compiler/loops.go index 4aac23dd..05694fc8 100644 --- a/pkg/compiler/loops.go +++ b/pkg/compiler/loops.go @@ -8,8 +8,8 @@ type ( Distinct bool Result runtime.Operand Iterator runtime.Operand - Allocate bool - Next int + Allocate bool + Next int } LoopTable struct { diff --git a/pkg/compiler/visitor.go b/pkg/compiler/visitor.go index 89a7b404..43b573a1 100644 --- a/pkg/compiler/visitor.go +++ b/pkg/compiler/visitor.go @@ -123,7 +123,7 @@ func (v *visitor) VisitForExpression(ctx *fql.ForExpressionContext) interface{} dsReg := loop.Result if loop.Allocate { - v.emitter.EmitAb(runtime.OpLoopBegin, dsReg, distinct) + v.emitter.EmitAb(runtime.OpLoopInit, dsReg, distinct) } if isForLoop { @@ -132,7 +132,7 @@ func (v *visitor) VisitForExpression(ctx *fql.ForExpressionContext) interface{} iterReg := v.registers.Allocate(State) - v.emitter.EmitAB(runtime.OpForLoopInit, iterReg, src1) + v.emitter.EmitAB(runtime.OpForLoopStart, iterReg, src1) // jumpPlaceholder is a placeholder for the exit jump position loop.Next = v.emitter.EmitJumpc(runtime.OpForLoopNext, jumpPlaceholder, iterReg) @@ -168,7 +168,7 @@ func (v *visitor) VisitForExpression(ctx *fql.ForExpressionContext) interface{} srcExpr := ctx.Expression() // Create initial value for the loop counter - v.emitter.EmitA(runtime.OpWhileLoopInit, counterReg) + v.emitter.EmitA(runtime.OpWhileLoopStart, counterReg) beforeExp := v.emitter.Size() // Loop data source to iterate over cond := srcExpr.Accept(v).(runtime.Operand) @@ -187,8 +187,15 @@ func (v *visitor) VisitForExpression(ctx *fql.ForExpressionContext) interface{} jumpIndex := loop.Next loop.Next -= jumpOffset + // Clauses + if clauses := ctx.AllForExpressionClause(); clauses != nil && len(clauses) > 0 { + for _, clause := range clauses { + clause.Accept(v) + } + } + // body - if body := ctx.AllForExpressionBody(); body != nil && len(body) > 0 { + if body := ctx.AllForExpressionStatement(); body != nil && len(body) > 0 { for _, b := range body { b.Accept(v) } @@ -211,7 +218,7 @@ func (v *visitor) VisitForExpression(ctx *fql.ForExpressionContext) interface{} if loop.Allocate { // TODO: Reuse the dsReg register - v.emitter.EmitAB(runtime.OpLoopEnd, dst, dsReg) + v.emitter.EmitAB(runtime.OpLoopFin, dst, dsReg) if isForLoop { v.emitter.PatchJump(jumpIndex) @@ -264,12 +271,12 @@ func (v *visitor) VisitForExpressionSource(ctx *fql.ForExpressionSourceContext) panic(core.Error(ErrUnexpectedToken, ctx.GetText())) } -func (v *visitor) VisitForExpressionBody(ctx *fql.ForExpressionBodyContext) interface{} { - if c := ctx.ForExpressionClause(); c != nil { +func (v *visitor) VisitForExpressionStatement(ctx *fql.ForExpressionStatementContext) interface{} { + if c := ctx.VariableDeclaration(); c != nil { return c.Accept(v) } - if c := ctx.ForExpressionStatement(); c != nil { + if c := ctx.FunctionCallExpression(); c != nil { return c.Accept(v) } @@ -298,6 +305,10 @@ func (v *visitor) VisitForExpressionClause(ctx *fql.ForExpressionClauseContext) panic(core.Error(ErrUnexpectedToken, ctx.GetText())) } +func (v *visitor) VisitSortClause(ctx *fql.SortClauseContext) interface{} { + return nil +} + func (v *visitor) VisitFilterClause(ctx *fql.FilterClauseContext) interface{} { src1 := ctx.Expression().Accept(v).(runtime.Operand) v.emitter.EmitJumpc(runtime.OpJumpIfFalse, v.loops.Loop().Next, src1) @@ -364,18 +375,6 @@ func (v *visitor) VisitLimitClauseValue(ctx *fql.LimitClauseValueContext) interf panic(core.Error(ErrUnexpectedToken, ctx.GetText())) } -func (v *visitor) VisitForExpressionStatement(ctx *fql.ForExpressionStatementContext) interface{} { - if c := ctx.VariableDeclaration(); c != nil { - return c.Accept(v) - } - - if c := ctx.FunctionCallExpression(); c != nil { - return c.Accept(v) - } - - panic(core.Error(ErrUnexpectedToken, ctx.GetText())) -} - func (v *visitor) VisitFunctionCallExpression(ctx *fql.FunctionCallExpressionContext) interface{} { return v.visitFunctionCall(ctx.FunctionCall().(*fql.FunctionCallContext), ctx.ErrorOperator() != nil) } diff --git a/pkg/parser/antlr/FqlParser.g4 b/pkg/parser/antlr/FqlParser.g4 index 4e0bb7ae..c2e74d48 100644 --- a/pkg/parser/antlr/FqlParser.g4 +++ b/pkg/parser/antlr/FqlParser.g4 @@ -46,10 +46,12 @@ returnExpression forExpression : For valueVariable=(Identifier | IgnoreIdentifier) (Comma counterVariable=Identifier)? In forExpressionSource - forExpressionBody* + forExpressionClause* + forExpressionStatement* forExpressionReturn | For counterVariable=(Identifier | IgnoreIdentifier) Do? While expression - forExpressionBody* + forExpressionClause* + forExpressionStatement* forExpressionReturn ; @@ -75,11 +77,6 @@ forExpressionStatement | functionCallExpression ; -forExpressionBody - : forExpressionStatement - | forExpressionClause - ; - forExpressionReturn : returnExpression | forExpression diff --git a/pkg/parser/fql/FqlParser.interp b/pkg/parser/fql/FqlParser.interp index 42226397..64b7dbc6 100644 --- a/pkg/parser/fql/FqlParser.interp +++ b/pkg/parser/fql/FqlParser.interp @@ -162,7 +162,6 @@ forExpression forExpressionSource forExpressionClause forExpressionStatement -forExpressionBody forExpressionReturn filterClause limitClause @@ -224,4 +223,4 @@ errorOperator atn: -[4, 1, 72, 647, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 1, 0, 5, 0, 146, 8, 0, 10, 0, 12, 0, 149, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 5, 4, 161, 8, 4, 10, 4, 12, 4, 164, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 171, 8, 5, 1, 6, 1, 6, 3, 6, 175, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 186, 8, 7, 1, 8, 1, 8, 3, 8, 190, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 198, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 203, 8, 9, 10, 9, 12, 9, 206, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 213, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 218, 8, 9, 10, 9, 12, 9, 221, 9, 9, 1, 9, 1, 9, 3, 9, 225, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 234, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 240, 8, 11, 1, 12, 1, 12, 3, 12, 244, 8, 12, 1, 13, 1, 13, 3, 13, 248, 8, 13, 1, 14, 1, 14, 3, 14, 252, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 261, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 268, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 274, 8, 18, 10, 18, 12, 18, 277, 9, 18, 1, 19, 1, 19, 3, 19, 281, 8, 19, 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, 3, 20, 301, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 310, 8, 22, 10, 22, 12, 22, 313, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 319, 8, 23, 10, 23, 12, 23, 322, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 334, 8, 25, 3, 25, 336, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 349, 8, 27, 1, 27, 3, 27, 352, 8, 27, 1, 27, 3, 27, 355, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 362, 8, 28, 1, 29, 1, 29, 1, 29, 3, 29, 367, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 378, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 384, 8, 32, 1, 33, 1, 33, 3, 33, 388, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 397, 8, 34, 1, 35, 1, 35, 3, 35, 401, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 409, 8, 36, 10, 36, 12, 36, 412, 9, 36, 1, 36, 3, 36, 415, 8, 36, 3, 36, 417, 8, 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, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 440, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 451, 8, 44, 1, 45, 1, 45, 1, 45, 1, 46, 5, 46, 457, 8, 46, 10, 46, 12, 46, 460, 9, 46, 1, 47, 1, 47, 4, 47, 464, 8, 47, 11, 47, 12, 47, 465, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 473, 8, 48, 1, 49, 1, 49, 3, 49, 477, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 483, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 490, 8, 51, 1, 52, 1, 52, 1, 52, 5, 52, 495, 8, 52, 10, 52, 12, 52, 498, 9, 52, 1, 52, 3, 52, 501, 8, 52, 1, 53, 3, 53, 504, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 511, 8, 53, 1, 53, 3, 53, 514, 8, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 3, 57, 527, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 534, 8, 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, 547, 8, 58, 1, 58, 1, 58, 5, 58, 551, 8, 58, 10, 58, 12, 58, 554, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 575, 8, 59, 10, 59, 12, 59, 578, 9, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 591, 8, 60, 1, 60, 1, 60, 3, 60, 595, 8, 60, 3, 60, 597, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 611, 8, 60, 10, 60, 12, 60, 614, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, 619, 8, 61, 1, 62, 1, 62, 1, 63, 3, 63, 624, 8, 63, 1, 63, 1, 63, 1, 64, 3, 64, 629, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 0, 3, 116, 118, 120, 72, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 0, 10, 1, 0, 66, 67, 1, 0, 48, 49, 4, 0, 28, 29, 38, 44, 46, 47, 52, 59, 4, 0, 35, 37, 45, 45, 48, 51, 60, 64, 2, 0, 48, 48, 56, 57, 1, 0, 15, 20, 2, 0, 24, 25, 61, 61, 1, 0, 33, 34, 1, 0, 21, 23, 1, 0, 24, 25, 686, 0, 147, 1, 0, 0, 0, 2, 152, 1, 0, 0, 0, 4, 154, 1, 0, 0, 0, 6, 156, 1, 0, 0, 0, 8, 162, 1, 0, 0, 0, 10, 170, 1, 0, 0, 0, 12, 174, 1, 0, 0, 0, 14, 185, 1, 0, 0, 0, 16, 187, 1, 0, 0, 0, 18, 224, 1, 0, 0, 0, 20, 233, 1, 0, 0, 0, 22, 239, 1, 0, 0, 0, 24, 243, 1, 0, 0, 0, 26, 247, 1, 0, 0, 0, 28, 251, 1, 0, 0, 0, 30, 253, 1, 0, 0, 0, 32, 256, 1, 0, 0, 0, 34, 267, 1, 0, 0, 0, 36, 269, 1, 0, 0, 0, 38, 278, 1, 0, 0, 0, 40, 300, 1, 0, 0, 0, 42, 302, 1, 0, 0, 0, 44, 306, 1, 0, 0, 0, 46, 314, 1, 0, 0, 0, 48, 323, 1, 0, 0, 0, 50, 335, 1, 0, 0, 0, 52, 337, 1, 0, 0, 0, 54, 342, 1, 0, 0, 0, 56, 361, 1, 0, 0, 0, 58, 366, 1, 0, 0, 0, 60, 368, 1, 0, 0, 0, 62, 371, 1, 0, 0, 0, 64, 383, 1, 0, 0, 0, 66, 387, 1, 0, 0, 0, 68, 396, 1, 0, 0, 0, 70, 398, 1, 0, 0, 0, 72, 404, 1, 0, 0, 0, 74, 420, 1, 0, 0, 0, 76, 422, 1, 0, 0, 0, 78, 424, 1, 0, 0, 0, 80, 426, 1, 0, 0, 0, 82, 428, 1, 0, 0, 0, 84, 439, 1, 0, 0, 0, 86, 441, 1, 0, 0, 0, 88, 450, 1, 0, 0, 0, 90, 452, 1, 0, 0, 0, 92, 458, 1, 0, 0, 0, 94, 461, 1, 0, 0, 0, 96, 472, 1, 0, 0, 0, 98, 474, 1, 0, 0, 0, 100, 478, 1, 0, 0, 0, 102, 489, 1, 0, 0, 0, 104, 491, 1, 0, 0, 0, 106, 513, 1, 0, 0, 0, 108, 515, 1, 0, 0, 0, 110, 517, 1, 0, 0, 0, 112, 519, 1, 0, 0, 0, 114, 526, 1, 0, 0, 0, 116, 533, 1, 0, 0, 0, 118, 555, 1, 0, 0, 0, 120, 596, 1, 0, 0, 0, 122, 615, 1, 0, 0, 0, 124, 620, 1, 0, 0, 0, 126, 623, 1, 0, 0, 0, 128, 628, 1, 0, 0, 0, 130, 632, 1, 0, 0, 0, 132, 634, 1, 0, 0, 0, 134, 636, 1, 0, 0, 0, 136, 638, 1, 0, 0, 0, 138, 640, 1, 0, 0, 0, 140, 642, 1, 0, 0, 0, 142, 644, 1, 0, 0, 0, 144, 146, 3, 2, 1, 0, 145, 144, 1, 0, 0, 0, 146, 149, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 150, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 150, 151, 3, 8, 4, 0, 151, 1, 1, 0, 0, 0, 152, 153, 3, 4, 2, 0, 153, 3, 1, 0, 0, 0, 154, 155, 3, 6, 3, 0, 155, 5, 1, 0, 0, 0, 156, 157, 5, 51, 0, 0, 157, 158, 3, 90, 45, 0, 158, 7, 1, 0, 0, 0, 159, 161, 3, 10, 5, 0, 160, 159, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 3, 12, 6, 0, 166, 9, 1, 0, 0, 0, 167, 171, 3, 14, 7, 0, 168, 171, 3, 98, 49, 0, 169, 171, 3, 54, 27, 0, 170, 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 11, 1, 0, 0, 0, 172, 175, 3, 16, 8, 0, 173, 175, 3, 18, 9, 0, 174, 172, 1, 0, 0, 0, 174, 173, 1, 0, 0, 0, 175, 13, 1, 0, 0, 0, 176, 177, 5, 45, 0, 0, 177, 178, 7, 0, 0, 0, 178, 179, 5, 31, 0, 0, 179, 186, 3, 116, 58, 0, 180, 181, 5, 45, 0, 0, 181, 182, 3, 108, 54, 0, 182, 183, 5, 31, 0, 0, 183, 184, 3, 116, 58, 0, 184, 186, 1, 0, 0, 0, 185, 176, 1, 0, 0, 0, 185, 180, 1, 0, 0, 0, 186, 15, 1, 0, 0, 0, 187, 189, 5, 36, 0, 0, 188, 190, 5, 40, 0, 0, 189, 188, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 3, 116, 58, 0, 192, 17, 1, 0, 0, 0, 193, 194, 5, 35, 0, 0, 194, 197, 7, 0, 0, 0, 195, 196, 5, 8, 0, 0, 196, 198, 5, 66, 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 200, 5, 62, 0, 0, 200, 204, 3, 20, 10, 0, 201, 203, 3, 26, 13, 0, 202, 201, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 207, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, 3, 28, 14, 0, 208, 225, 1, 0, 0, 0, 209, 210, 5, 35, 0, 0, 210, 212, 7, 0, 0, 0, 211, 213, 5, 63, 0, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 215, 5, 64, 0, 0, 215, 219, 3, 116, 58, 0, 216, 218, 3, 26, 13, 0, 217, 216, 1, 0, 0, 0, 218, 221, 1, 0, 0, 0, 219, 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 222, 223, 3, 28, 14, 0, 223, 225, 1, 0, 0, 0, 224, 193, 1, 0, 0, 0, 224, 209, 1, 0, 0, 0, 225, 19, 1, 0, 0, 0, 226, 234, 3, 98, 49, 0, 227, 234, 3, 70, 35, 0, 228, 234, 3, 72, 36, 0, 229, 234, 3, 66, 33, 0, 230, 234, 3, 94, 47, 0, 231, 234, 3, 112, 56, 0, 232, 234, 3, 64, 32, 0, 233, 226, 1, 0, 0, 0, 233, 227, 1, 0, 0, 0, 233, 228, 1, 0, 0, 0, 233, 229, 1, 0, 0, 0, 233, 230, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 232, 1, 0, 0, 0, 234, 21, 1, 0, 0, 0, 235, 240, 3, 32, 16, 0, 236, 240, 3, 36, 18, 0, 237, 240, 3, 30, 15, 0, 238, 240, 3, 40, 20, 0, 239, 235, 1, 0, 0, 0, 239, 236, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, 240, 23, 1, 0, 0, 0, 241, 244, 3, 14, 7, 0, 242, 244, 3, 98, 49, 0, 243, 241, 1, 0, 0, 0, 243, 242, 1, 0, 0, 0, 244, 25, 1, 0, 0, 0, 245, 248, 3, 24, 12, 0, 246, 248, 3, 22, 11, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 27, 1, 0, 0, 0, 249, 252, 3, 16, 8, 0, 250, 252, 3, 18, 9, 0, 251, 249, 1, 0, 0, 0, 251, 250, 1, 0, 0, 0, 252, 29, 1, 0, 0, 0, 253, 254, 5, 41, 0, 0, 254, 255, 3, 116, 58, 0, 255, 31, 1, 0, 0, 0, 256, 257, 5, 44, 0, 0, 257, 260, 3, 34, 17, 0, 258, 259, 5, 8, 0, 0, 259, 261, 3, 34, 17, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 33, 1, 0, 0, 0, 262, 268, 3, 80, 40, 0, 263, 268, 3, 64, 32, 0, 264, 268, 3, 66, 33, 0, 265, 268, 3, 98, 49, 0, 266, 268, 3, 94, 47, 0, 267, 262, 1, 0, 0, 0, 267, 263, 1, 0, 0, 0, 267, 264, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 266, 1, 0, 0, 0, 268, 35, 1, 0, 0, 0, 269, 270, 5, 43, 0, 0, 270, 275, 3, 38, 19, 0, 271, 272, 5, 8, 0, 0, 272, 274, 3, 38, 19, 0, 273, 271, 1, 0, 0, 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 37, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 280, 3, 116, 58, 0, 279, 281, 5, 47, 0, 0, 280, 279, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 39, 1, 0, 0, 0, 282, 283, 5, 46, 0, 0, 283, 301, 3, 52, 26, 0, 284, 285, 5, 46, 0, 0, 285, 301, 3, 46, 23, 0, 286, 287, 5, 46, 0, 0, 287, 288, 3, 44, 22, 0, 288, 289, 3, 46, 23, 0, 289, 301, 1, 0, 0, 0, 290, 291, 5, 46, 0, 0, 291, 292, 3, 44, 22, 0, 292, 293, 3, 50, 25, 0, 293, 301, 1, 0, 0, 0, 294, 295, 5, 46, 0, 0, 295, 296, 3, 44, 22, 0, 296, 297, 3, 52, 26, 0, 297, 301, 1, 0, 0, 0, 298, 299, 5, 46, 0, 0, 299, 301, 3, 44, 22, 0, 300, 282, 1, 0, 0, 0, 300, 284, 1, 0, 0, 0, 300, 286, 1, 0, 0, 0, 300, 290, 1, 0, 0, 0, 300, 294, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 301, 41, 1, 0, 0, 0, 302, 303, 5, 66, 0, 0, 303, 304, 5, 31, 0, 0, 304, 305, 3, 116, 58, 0, 305, 43, 1, 0, 0, 0, 306, 311, 3, 42, 21, 0, 307, 308, 5, 8, 0, 0, 308, 310, 3, 42, 21, 0, 309, 307, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 45, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 315, 5, 58, 0, 0, 315, 320, 3, 48, 24, 0, 316, 317, 5, 8, 0, 0, 317, 319, 3, 48, 24, 0, 318, 316, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 47, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 324, 5, 66, 0, 0, 324, 325, 5, 31, 0, 0, 325, 326, 3, 98, 49, 0, 326, 49, 1, 0, 0, 0, 327, 328, 5, 52, 0, 0, 328, 336, 3, 42, 21, 0, 329, 330, 5, 52, 0, 0, 330, 333, 5, 66, 0, 0, 331, 332, 5, 53, 0, 0, 332, 334, 5, 66, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 327, 1, 0, 0, 0, 335, 329, 1, 0, 0, 0, 336, 51, 1, 0, 0, 0, 337, 338, 5, 54, 0, 0, 338, 339, 5, 55, 0, 0, 339, 340, 5, 52, 0, 0, 340, 341, 5, 66, 0, 0, 341, 53, 1, 0, 0, 0, 342, 343, 5, 37, 0, 0, 343, 344, 5, 59, 0, 0, 344, 345, 3, 56, 28, 0, 345, 346, 5, 62, 0, 0, 346, 348, 3, 58, 29, 0, 347, 349, 3, 60, 30, 0, 348, 347, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 352, 3, 30, 15, 0, 351, 350, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 355, 3, 62, 31, 0, 354, 353, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 55, 1, 0, 0, 0, 356, 362, 3, 76, 38, 0, 357, 362, 3, 66, 33, 0, 358, 362, 3, 64, 32, 0, 359, 362, 3, 98, 49, 0, 360, 362, 3, 94, 47, 0, 361, 356, 1, 0, 0, 0, 361, 357, 1, 0, 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 361, 360, 1, 0, 0, 0, 362, 57, 1, 0, 0, 0, 363, 367, 3, 98, 49, 0, 364, 367, 3, 66, 33, 0, 365, 367, 3, 94, 47, 0, 366, 363, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 366, 365, 1, 0, 0, 0, 367, 59, 1, 0, 0, 0, 368, 369, 5, 38, 0, 0, 369, 370, 3, 72, 36, 0, 370, 61, 1, 0, 0, 0, 371, 377, 5, 39, 0, 0, 372, 378, 3, 80, 40, 0, 373, 378, 3, 66, 33, 0, 374, 378, 3, 64, 32, 0, 375, 378, 3, 94, 47, 0, 376, 378, 3, 100, 50, 0, 377, 372, 1, 0, 0, 0, 377, 373, 1, 0, 0, 0, 377, 374, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 376, 1, 0, 0, 0, 378, 63, 1, 0, 0, 0, 379, 380, 5, 65, 0, 0, 380, 384, 5, 66, 0, 0, 381, 382, 5, 65, 0, 0, 382, 384, 3, 108, 54, 0, 383, 379, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 65, 1, 0, 0, 0, 385, 388, 5, 66, 0, 0, 386, 388, 3, 108, 54, 0, 387, 385, 1, 0, 0, 0, 387, 386, 1, 0, 0, 0, 388, 67, 1, 0, 0, 0, 389, 397, 3, 70, 35, 0, 390, 397, 3, 72, 36, 0, 391, 397, 3, 74, 37, 0, 392, 397, 3, 76, 38, 0, 393, 397, 3, 78, 39, 0, 394, 397, 3, 80, 40, 0, 395, 397, 3, 82, 41, 0, 396, 389, 1, 0, 0, 0, 396, 390, 1, 0, 0, 0, 396, 391, 1, 0, 0, 0, 396, 392, 1, 0, 0, 0, 396, 393, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 69, 1, 0, 0, 0, 398, 400, 5, 9, 0, 0, 399, 401, 3, 104, 52, 0, 400, 399, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 5, 10, 0, 0, 403, 71, 1, 0, 0, 0, 404, 416, 5, 13, 0, 0, 405, 410, 3, 84, 42, 0, 406, 407, 5, 8, 0, 0, 407, 409, 3, 84, 42, 0, 408, 406, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 415, 5, 8, 0, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 405, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 5, 14, 0, 0, 419, 73, 1, 0, 0, 0, 420, 421, 5, 50, 0, 0, 421, 75, 1, 0, 0, 0, 422, 423, 5, 68, 0, 0, 423, 77, 1, 0, 0, 0, 424, 425, 5, 70, 0, 0, 425, 79, 1, 0, 0, 0, 426, 427, 5, 69, 0, 0, 427, 81, 1, 0, 0, 0, 428, 429, 7, 1, 0, 0, 429, 83, 1, 0, 0, 0, 430, 431, 3, 88, 44, 0, 431, 432, 5, 5, 0, 0, 432, 433, 3, 116, 58, 0, 433, 440, 1, 0, 0, 0, 434, 435, 3, 86, 43, 0, 435, 436, 5, 5, 0, 0, 436, 437, 3, 116, 58, 0, 437, 440, 1, 0, 0, 0, 438, 440, 3, 66, 33, 0, 439, 430, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 438, 1, 0, 0, 0, 440, 85, 1, 0, 0, 0, 441, 442, 5, 9, 0, 0, 442, 443, 3, 116, 58, 0, 443, 444, 5, 10, 0, 0, 444, 87, 1, 0, 0, 0, 445, 451, 5, 66, 0, 0, 446, 451, 3, 76, 38, 0, 447, 451, 3, 64, 32, 0, 448, 451, 3, 108, 54, 0, 449, 451, 3, 110, 55, 0, 450, 445, 1, 0, 0, 0, 450, 446, 1, 0, 0, 0, 450, 447, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 450, 449, 1, 0, 0, 0, 451, 89, 1, 0, 0, 0, 452, 453, 3, 92, 46, 0, 453, 454, 5, 66, 0, 0, 454, 91, 1, 0, 0, 0, 455, 457, 5, 71, 0, 0, 456, 455, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 93, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 3, 96, 48, 0, 462, 464, 3, 106, 53, 0, 463, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 95, 1, 0, 0, 0, 467, 473, 3, 66, 33, 0, 468, 473, 3, 64, 32, 0, 469, 473, 3, 70, 35, 0, 470, 473, 3, 72, 36, 0, 471, 473, 3, 100, 50, 0, 472, 467, 1, 0, 0, 0, 472, 468, 1, 0, 0, 0, 472, 469, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, 471, 1, 0, 0, 0, 473, 97, 1, 0, 0, 0, 474, 476, 3, 100, 50, 0, 475, 477, 3, 142, 71, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 99, 1, 0, 0, 0, 478, 479, 3, 92, 46, 0, 479, 480, 3, 102, 51, 0, 480, 482, 5, 11, 0, 0, 481, 483, 3, 104, 52, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 5, 12, 0, 0, 485, 101, 1, 0, 0, 0, 486, 490, 5, 66, 0, 0, 487, 490, 3, 108, 54, 0, 488, 490, 3, 110, 55, 0, 489, 486, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, 103, 1, 0, 0, 0, 491, 496, 3, 116, 58, 0, 492, 493, 5, 8, 0, 0, 493, 495, 3, 116, 58, 0, 494, 492, 1, 0, 0, 0, 495, 498, 1, 0, 0, 0, 496, 494, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 499, 501, 5, 8, 0, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 105, 1, 0, 0, 0, 502, 504, 3, 142, 71, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 7, 0, 0, 506, 514, 3, 88, 44, 0, 507, 508, 3, 142, 71, 0, 508, 509, 5, 7, 0, 0, 509, 511, 1, 0, 0, 0, 510, 507, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 514, 3, 86, 43, 0, 513, 503, 1, 0, 0, 0, 513, 510, 1, 0, 0, 0, 514, 107, 1, 0, 0, 0, 515, 516, 7, 2, 0, 0, 516, 109, 1, 0, 0, 0, 517, 518, 7, 3, 0, 0, 518, 111, 1, 0, 0, 0, 519, 520, 3, 114, 57, 0, 520, 521, 5, 30, 0, 0, 521, 522, 3, 114, 57, 0, 522, 113, 1, 0, 0, 0, 523, 527, 3, 80, 40, 0, 524, 527, 3, 66, 33, 0, 525, 527, 3, 64, 32, 0, 526, 523, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 115, 1, 0, 0, 0, 528, 529, 6, 58, -1, 0, 529, 530, 3, 130, 65, 0, 530, 531, 3, 116, 58, 5, 531, 534, 1, 0, 0, 0, 532, 534, 3, 118, 59, 0, 533, 528, 1, 0, 0, 0, 533, 532, 1, 0, 0, 0, 534, 552, 1, 0, 0, 0, 535, 536, 10, 4, 0, 0, 536, 537, 3, 134, 67, 0, 537, 538, 3, 116, 58, 5, 538, 551, 1, 0, 0, 0, 539, 540, 10, 3, 0, 0, 540, 541, 3, 136, 68, 0, 541, 542, 3, 116, 58, 4, 542, 551, 1, 0, 0, 0, 543, 544, 10, 2, 0, 0, 544, 546, 5, 32, 0, 0, 545, 547, 3, 116, 58, 0, 546, 545, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 5, 5, 0, 0, 549, 551, 3, 116, 58, 3, 550, 535, 1, 0, 0, 0, 550, 539, 1, 0, 0, 0, 550, 543, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 117, 1, 0, 0, 0, 554, 552, 1, 0, 0, 0, 555, 556, 6, 59, -1, 0, 556, 557, 3, 120, 60, 0, 557, 576, 1, 0, 0, 0, 558, 559, 10, 5, 0, 0, 559, 560, 3, 124, 62, 0, 560, 561, 3, 118, 59, 6, 561, 575, 1, 0, 0, 0, 562, 563, 10, 4, 0, 0, 563, 564, 3, 122, 61, 0, 564, 565, 3, 118, 59, 5, 565, 575, 1, 0, 0, 0, 566, 567, 10, 3, 0, 0, 567, 568, 3, 126, 63, 0, 568, 569, 3, 118, 59, 4, 569, 575, 1, 0, 0, 0, 570, 571, 10, 2, 0, 0, 571, 572, 3, 128, 64, 0, 572, 573, 3, 118, 59, 3, 573, 575, 1, 0, 0, 0, 574, 558, 1, 0, 0, 0, 574, 562, 1, 0, 0, 0, 574, 566, 1, 0, 0, 0, 574, 570, 1, 0, 0, 0, 575, 578, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 119, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 579, 580, 6, 60, -1, 0, 580, 597, 3, 98, 49, 0, 581, 597, 3, 112, 56, 0, 582, 597, 3, 68, 34, 0, 583, 597, 3, 66, 33, 0, 584, 597, 3, 94, 47, 0, 585, 597, 3, 64, 32, 0, 586, 590, 5, 11, 0, 0, 587, 591, 3, 18, 9, 0, 588, 591, 3, 54, 27, 0, 589, 591, 3, 116, 58, 0, 590, 587, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 590, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 5, 12, 0, 0, 593, 595, 3, 142, 71, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 597, 1, 0, 0, 0, 596, 579, 1, 0, 0, 0, 596, 581, 1, 0, 0, 0, 596, 582, 1, 0, 0, 0, 596, 583, 1, 0, 0, 0, 596, 584, 1, 0, 0, 0, 596, 585, 1, 0, 0, 0, 596, 586, 1, 0, 0, 0, 597, 612, 1, 0, 0, 0, 598, 599, 10, 10, 0, 0, 599, 600, 3, 138, 69, 0, 600, 601, 3, 120, 60, 11, 601, 611, 1, 0, 0, 0, 602, 603, 10, 9, 0, 0, 603, 604, 3, 140, 70, 0, 604, 605, 3, 120, 60, 10, 605, 611, 1, 0, 0, 0, 606, 607, 10, 8, 0, 0, 607, 608, 3, 132, 66, 0, 608, 609, 3, 120, 60, 9, 609, 611, 1, 0, 0, 0, 610, 598, 1, 0, 0, 0, 610, 602, 1, 0, 0, 0, 610, 606, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 121, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 615, 618, 7, 4, 0, 0, 616, 619, 3, 126, 63, 0, 617, 619, 3, 124, 62, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 123, 1, 0, 0, 0, 620, 621, 7, 5, 0, 0, 621, 125, 1, 0, 0, 0, 622, 624, 5, 61, 0, 0, 623, 622, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 626, 5, 62, 0, 0, 626, 127, 1, 0, 0, 0, 627, 629, 5, 61, 0, 0, 628, 627, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 5, 60, 0, 0, 631, 129, 1, 0, 0, 0, 632, 633, 7, 6, 0, 0, 633, 131, 1, 0, 0, 0, 634, 635, 7, 7, 0, 0, 635, 133, 1, 0, 0, 0, 636, 637, 5, 28, 0, 0, 637, 135, 1, 0, 0, 0, 638, 639, 5, 29, 0, 0, 639, 137, 1, 0, 0, 0, 640, 641, 7, 8, 0, 0, 641, 139, 1, 0, 0, 0, 642, 643, 7, 9, 0, 0, 643, 141, 1, 0, 0, 0, 644, 645, 5, 32, 0, 0, 645, 143, 1, 0, 0, 0, 66, 147, 162, 170, 174, 185, 189, 197, 204, 212, 219, 224, 233, 239, 243, 247, 251, 260, 267, 275, 280, 300, 311, 320, 333, 335, 348, 351, 354, 361, 366, 377, 383, 387, 396, 400, 410, 414, 416, 439, 450, 458, 465, 472, 476, 482, 489, 496, 500, 503, 510, 513, 526, 533, 546, 550, 552, 574, 576, 590, 594, 596, 610, 612, 618, 623, 628] \ No newline at end of file +[4, 1, 72, 653, 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, 5, 0, 144, 8, 0, 10, 0, 12, 0, 147, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 5, 4, 159, 8, 4, 10, 4, 12, 4, 162, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 169, 8, 5, 1, 6, 1, 6, 3, 6, 173, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 184, 8, 7, 1, 8, 1, 8, 3, 8, 188, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 196, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 201, 8, 9, 10, 9, 12, 9, 204, 9, 9, 1, 9, 5, 9, 207, 8, 9, 10, 9, 12, 9, 210, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 217, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 222, 8, 9, 10, 9, 12, 9, 225, 9, 9, 1, 9, 5, 9, 228, 8, 9, 10, 9, 12, 9, 231, 9, 9, 1, 9, 1, 9, 3, 9, 235, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 244, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 250, 8, 11, 1, 12, 1, 12, 3, 12, 254, 8, 12, 1, 13, 1, 13, 3, 13, 258, 8, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 267, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 274, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 280, 8, 17, 10, 17, 12, 17, 283, 9, 17, 1, 18, 1, 18, 3, 18, 287, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 307, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 316, 8, 21, 10, 21, 12, 21, 319, 9, 21, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 325, 8, 22, 10, 22, 12, 22, 328, 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 340, 8, 24, 3, 24, 342, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 355, 8, 26, 1, 26, 3, 26, 358, 8, 26, 1, 26, 3, 26, 361, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 368, 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 373, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 384, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 390, 8, 31, 1, 32, 1, 32, 3, 32, 394, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 403, 8, 33, 1, 34, 1, 34, 3, 34, 407, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 415, 8, 35, 10, 35, 12, 35, 418, 9, 35, 1, 35, 3, 35, 421, 8, 35, 3, 35, 423, 8, 35, 1, 35, 1, 35, 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, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 446, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 457, 8, 43, 1, 44, 1, 44, 1, 44, 1, 45, 5, 45, 463, 8, 45, 10, 45, 12, 45, 466, 9, 45, 1, 46, 1, 46, 4, 46, 470, 8, 46, 11, 46, 12, 46, 471, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 479, 8, 47, 1, 48, 1, 48, 3, 48, 483, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 489, 8, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 496, 8, 50, 1, 51, 1, 51, 1, 51, 5, 51, 501, 8, 51, 10, 51, 12, 51, 504, 9, 51, 1, 51, 3, 51, 507, 8, 51, 1, 52, 3, 52, 510, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 517, 8, 52, 1, 52, 3, 52, 520, 8, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 3, 56, 533, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 540, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 553, 8, 57, 1, 57, 1, 57, 5, 57, 557, 8, 57, 10, 57, 12, 57, 560, 9, 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, 5, 58, 581, 8, 58, 10, 58, 12, 58, 584, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 597, 8, 59, 1, 59, 1, 59, 3, 59, 601, 8, 59, 3, 59, 603, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 617, 8, 59, 10, 59, 12, 59, 620, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 625, 8, 60, 1, 61, 1, 61, 1, 62, 3, 62, 630, 8, 62, 1, 62, 1, 62, 1, 63, 3, 63, 635, 8, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 0, 3, 114, 116, 118, 71, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 0, 10, 1, 0, 66, 67, 1, 0, 48, 49, 4, 0, 28, 29, 38, 44, 46, 47, 52, 59, 4, 0, 35, 37, 45, 45, 48, 51, 60, 64, 2, 0, 48, 48, 56, 57, 1, 0, 15, 20, 2, 0, 24, 25, 61, 61, 1, 0, 33, 34, 1, 0, 21, 23, 1, 0, 24, 25, 694, 0, 145, 1, 0, 0, 0, 2, 150, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 6, 154, 1, 0, 0, 0, 8, 160, 1, 0, 0, 0, 10, 168, 1, 0, 0, 0, 12, 172, 1, 0, 0, 0, 14, 183, 1, 0, 0, 0, 16, 185, 1, 0, 0, 0, 18, 234, 1, 0, 0, 0, 20, 243, 1, 0, 0, 0, 22, 249, 1, 0, 0, 0, 24, 253, 1, 0, 0, 0, 26, 257, 1, 0, 0, 0, 28, 259, 1, 0, 0, 0, 30, 262, 1, 0, 0, 0, 32, 273, 1, 0, 0, 0, 34, 275, 1, 0, 0, 0, 36, 284, 1, 0, 0, 0, 38, 306, 1, 0, 0, 0, 40, 308, 1, 0, 0, 0, 42, 312, 1, 0, 0, 0, 44, 320, 1, 0, 0, 0, 46, 329, 1, 0, 0, 0, 48, 341, 1, 0, 0, 0, 50, 343, 1, 0, 0, 0, 52, 348, 1, 0, 0, 0, 54, 367, 1, 0, 0, 0, 56, 372, 1, 0, 0, 0, 58, 374, 1, 0, 0, 0, 60, 377, 1, 0, 0, 0, 62, 389, 1, 0, 0, 0, 64, 393, 1, 0, 0, 0, 66, 402, 1, 0, 0, 0, 68, 404, 1, 0, 0, 0, 70, 410, 1, 0, 0, 0, 72, 426, 1, 0, 0, 0, 74, 428, 1, 0, 0, 0, 76, 430, 1, 0, 0, 0, 78, 432, 1, 0, 0, 0, 80, 434, 1, 0, 0, 0, 82, 445, 1, 0, 0, 0, 84, 447, 1, 0, 0, 0, 86, 456, 1, 0, 0, 0, 88, 458, 1, 0, 0, 0, 90, 464, 1, 0, 0, 0, 92, 467, 1, 0, 0, 0, 94, 478, 1, 0, 0, 0, 96, 480, 1, 0, 0, 0, 98, 484, 1, 0, 0, 0, 100, 495, 1, 0, 0, 0, 102, 497, 1, 0, 0, 0, 104, 519, 1, 0, 0, 0, 106, 521, 1, 0, 0, 0, 108, 523, 1, 0, 0, 0, 110, 525, 1, 0, 0, 0, 112, 532, 1, 0, 0, 0, 114, 539, 1, 0, 0, 0, 116, 561, 1, 0, 0, 0, 118, 602, 1, 0, 0, 0, 120, 621, 1, 0, 0, 0, 122, 626, 1, 0, 0, 0, 124, 629, 1, 0, 0, 0, 126, 634, 1, 0, 0, 0, 128, 638, 1, 0, 0, 0, 130, 640, 1, 0, 0, 0, 132, 642, 1, 0, 0, 0, 134, 644, 1, 0, 0, 0, 136, 646, 1, 0, 0, 0, 138, 648, 1, 0, 0, 0, 140, 650, 1, 0, 0, 0, 142, 144, 3, 2, 1, 0, 143, 142, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 148, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 148, 149, 3, 8, 4, 0, 149, 1, 1, 0, 0, 0, 150, 151, 3, 4, 2, 0, 151, 3, 1, 0, 0, 0, 152, 153, 3, 6, 3, 0, 153, 5, 1, 0, 0, 0, 154, 155, 5, 51, 0, 0, 155, 156, 3, 88, 44, 0, 156, 7, 1, 0, 0, 0, 157, 159, 3, 10, 5, 0, 158, 157, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, 3, 12, 6, 0, 164, 9, 1, 0, 0, 0, 165, 169, 3, 14, 7, 0, 166, 169, 3, 96, 48, 0, 167, 169, 3, 52, 26, 0, 168, 165, 1, 0, 0, 0, 168, 166, 1, 0, 0, 0, 168, 167, 1, 0, 0, 0, 169, 11, 1, 0, 0, 0, 170, 173, 3, 16, 8, 0, 171, 173, 3, 18, 9, 0, 172, 170, 1, 0, 0, 0, 172, 171, 1, 0, 0, 0, 173, 13, 1, 0, 0, 0, 174, 175, 5, 45, 0, 0, 175, 176, 7, 0, 0, 0, 176, 177, 5, 31, 0, 0, 177, 184, 3, 114, 57, 0, 178, 179, 5, 45, 0, 0, 179, 180, 3, 106, 53, 0, 180, 181, 5, 31, 0, 0, 181, 182, 3, 114, 57, 0, 182, 184, 1, 0, 0, 0, 183, 174, 1, 0, 0, 0, 183, 178, 1, 0, 0, 0, 184, 15, 1, 0, 0, 0, 185, 187, 5, 36, 0, 0, 186, 188, 5, 40, 0, 0, 187, 186, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 190, 3, 114, 57, 0, 190, 17, 1, 0, 0, 0, 191, 192, 5, 35, 0, 0, 192, 195, 7, 0, 0, 0, 193, 194, 5, 8, 0, 0, 194, 196, 5, 66, 0, 0, 195, 193, 1, 0, 0, 0, 195, 196, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 198, 5, 62, 0, 0, 198, 202, 3, 20, 10, 0, 199, 201, 3, 22, 11, 0, 200, 199, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 208, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 207, 3, 24, 12, 0, 206, 205, 1, 0, 0, 0, 207, 210, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 211, 1, 0, 0, 0, 210, 208, 1, 0, 0, 0, 211, 212, 3, 26, 13, 0, 212, 235, 1, 0, 0, 0, 213, 214, 5, 35, 0, 0, 214, 216, 7, 0, 0, 0, 215, 217, 5, 63, 0, 0, 216, 215, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 219, 5, 64, 0, 0, 219, 223, 3, 114, 57, 0, 220, 222, 3, 22, 11, 0, 221, 220, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 3, 24, 12, 0, 227, 226, 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 232, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 233, 3, 26, 13, 0, 233, 235, 1, 0, 0, 0, 234, 191, 1, 0, 0, 0, 234, 213, 1, 0, 0, 0, 235, 19, 1, 0, 0, 0, 236, 244, 3, 96, 48, 0, 237, 244, 3, 68, 34, 0, 238, 244, 3, 70, 35, 0, 239, 244, 3, 64, 32, 0, 240, 244, 3, 92, 46, 0, 241, 244, 3, 110, 55, 0, 242, 244, 3, 62, 31, 0, 243, 236, 1, 0, 0, 0, 243, 237, 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 243, 239, 1, 0, 0, 0, 243, 240, 1, 0, 0, 0, 243, 241, 1, 0, 0, 0, 243, 242, 1, 0, 0, 0, 244, 21, 1, 0, 0, 0, 245, 250, 3, 30, 15, 0, 246, 250, 3, 34, 17, 0, 247, 250, 3, 28, 14, 0, 248, 250, 3, 38, 19, 0, 249, 245, 1, 0, 0, 0, 249, 246, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 248, 1, 0, 0, 0, 250, 23, 1, 0, 0, 0, 251, 254, 3, 14, 7, 0, 252, 254, 3, 96, 48, 0, 253, 251, 1, 0, 0, 0, 253, 252, 1, 0, 0, 0, 254, 25, 1, 0, 0, 0, 255, 258, 3, 16, 8, 0, 256, 258, 3, 18, 9, 0, 257, 255, 1, 0, 0, 0, 257, 256, 1, 0, 0, 0, 258, 27, 1, 0, 0, 0, 259, 260, 5, 41, 0, 0, 260, 261, 3, 114, 57, 0, 261, 29, 1, 0, 0, 0, 262, 263, 5, 44, 0, 0, 263, 266, 3, 32, 16, 0, 264, 265, 5, 8, 0, 0, 265, 267, 3, 32, 16, 0, 266, 264, 1, 0, 0, 0, 266, 267, 1, 0, 0, 0, 267, 31, 1, 0, 0, 0, 268, 274, 3, 78, 39, 0, 269, 274, 3, 62, 31, 0, 270, 274, 3, 64, 32, 0, 271, 274, 3, 96, 48, 0, 272, 274, 3, 92, 46, 0, 273, 268, 1, 0, 0, 0, 273, 269, 1, 0, 0, 0, 273, 270, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 273, 272, 1, 0, 0, 0, 274, 33, 1, 0, 0, 0, 275, 276, 5, 43, 0, 0, 276, 281, 3, 36, 18, 0, 277, 278, 5, 8, 0, 0, 278, 280, 3, 36, 18, 0, 279, 277, 1, 0, 0, 0, 280, 283, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 35, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 284, 286, 3, 114, 57, 0, 285, 287, 5, 47, 0, 0, 286, 285, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 37, 1, 0, 0, 0, 288, 289, 5, 46, 0, 0, 289, 307, 3, 50, 25, 0, 290, 291, 5, 46, 0, 0, 291, 307, 3, 44, 22, 0, 292, 293, 5, 46, 0, 0, 293, 294, 3, 42, 21, 0, 294, 295, 3, 44, 22, 0, 295, 307, 1, 0, 0, 0, 296, 297, 5, 46, 0, 0, 297, 298, 3, 42, 21, 0, 298, 299, 3, 48, 24, 0, 299, 307, 1, 0, 0, 0, 300, 301, 5, 46, 0, 0, 301, 302, 3, 42, 21, 0, 302, 303, 3, 50, 25, 0, 303, 307, 1, 0, 0, 0, 304, 305, 5, 46, 0, 0, 305, 307, 3, 42, 21, 0, 306, 288, 1, 0, 0, 0, 306, 290, 1, 0, 0, 0, 306, 292, 1, 0, 0, 0, 306, 296, 1, 0, 0, 0, 306, 300, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 39, 1, 0, 0, 0, 308, 309, 5, 66, 0, 0, 309, 310, 5, 31, 0, 0, 310, 311, 3, 114, 57, 0, 311, 41, 1, 0, 0, 0, 312, 317, 3, 40, 20, 0, 313, 314, 5, 8, 0, 0, 314, 316, 3, 40, 20, 0, 315, 313, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 43, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, 321, 5, 58, 0, 0, 321, 326, 3, 46, 23, 0, 322, 323, 5, 8, 0, 0, 323, 325, 3, 46, 23, 0, 324, 322, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 45, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 330, 5, 66, 0, 0, 330, 331, 5, 31, 0, 0, 331, 332, 3, 96, 48, 0, 332, 47, 1, 0, 0, 0, 333, 334, 5, 52, 0, 0, 334, 342, 3, 40, 20, 0, 335, 336, 5, 52, 0, 0, 336, 339, 5, 66, 0, 0, 337, 338, 5, 53, 0, 0, 338, 340, 5, 66, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 342, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341, 335, 1, 0, 0, 0, 342, 49, 1, 0, 0, 0, 343, 344, 5, 54, 0, 0, 344, 345, 5, 55, 0, 0, 345, 346, 5, 52, 0, 0, 346, 347, 5, 66, 0, 0, 347, 51, 1, 0, 0, 0, 348, 349, 5, 37, 0, 0, 349, 350, 5, 59, 0, 0, 350, 351, 3, 54, 27, 0, 351, 352, 5, 62, 0, 0, 352, 354, 3, 56, 28, 0, 353, 355, 3, 58, 29, 0, 354, 353, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 357, 1, 0, 0, 0, 356, 358, 3, 28, 14, 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 360, 1, 0, 0, 0, 359, 361, 3, 60, 30, 0, 360, 359, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 53, 1, 0, 0, 0, 362, 368, 3, 74, 37, 0, 363, 368, 3, 64, 32, 0, 364, 368, 3, 62, 31, 0, 365, 368, 3, 96, 48, 0, 366, 368, 3, 92, 46, 0, 367, 362, 1, 0, 0, 0, 367, 363, 1, 0, 0, 0, 367, 364, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 366, 1, 0, 0, 0, 368, 55, 1, 0, 0, 0, 369, 373, 3, 96, 48, 0, 370, 373, 3, 64, 32, 0, 371, 373, 3, 92, 46, 0, 372, 369, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 372, 371, 1, 0, 0, 0, 373, 57, 1, 0, 0, 0, 374, 375, 5, 38, 0, 0, 375, 376, 3, 70, 35, 0, 376, 59, 1, 0, 0, 0, 377, 383, 5, 39, 0, 0, 378, 384, 3, 78, 39, 0, 379, 384, 3, 64, 32, 0, 380, 384, 3, 62, 31, 0, 381, 384, 3, 92, 46, 0, 382, 384, 3, 98, 49, 0, 383, 378, 1, 0, 0, 0, 383, 379, 1, 0, 0, 0, 383, 380, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 382, 1, 0, 0, 0, 384, 61, 1, 0, 0, 0, 385, 386, 5, 65, 0, 0, 386, 390, 5, 66, 0, 0, 387, 388, 5, 65, 0, 0, 388, 390, 3, 106, 53, 0, 389, 385, 1, 0, 0, 0, 389, 387, 1, 0, 0, 0, 390, 63, 1, 0, 0, 0, 391, 394, 5, 66, 0, 0, 392, 394, 3, 106, 53, 0, 393, 391, 1, 0, 0, 0, 393, 392, 1, 0, 0, 0, 394, 65, 1, 0, 0, 0, 395, 403, 3, 68, 34, 0, 396, 403, 3, 70, 35, 0, 397, 403, 3, 72, 36, 0, 398, 403, 3, 74, 37, 0, 399, 403, 3, 76, 38, 0, 400, 403, 3, 78, 39, 0, 401, 403, 3, 80, 40, 0, 402, 395, 1, 0, 0, 0, 402, 396, 1, 0, 0, 0, 402, 397, 1, 0, 0, 0, 402, 398, 1, 0, 0, 0, 402, 399, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 402, 401, 1, 0, 0, 0, 403, 67, 1, 0, 0, 0, 404, 406, 5, 9, 0, 0, 405, 407, 3, 102, 51, 0, 406, 405, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 409, 5, 10, 0, 0, 409, 69, 1, 0, 0, 0, 410, 422, 5, 13, 0, 0, 411, 416, 3, 82, 41, 0, 412, 413, 5, 8, 0, 0, 413, 415, 3, 82, 41, 0, 414, 412, 1, 0, 0, 0, 415, 418, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 420, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 419, 421, 5, 8, 0, 0, 420, 419, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 423, 1, 0, 0, 0, 422, 411, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 425, 5, 14, 0, 0, 425, 71, 1, 0, 0, 0, 426, 427, 5, 50, 0, 0, 427, 73, 1, 0, 0, 0, 428, 429, 5, 68, 0, 0, 429, 75, 1, 0, 0, 0, 430, 431, 5, 70, 0, 0, 431, 77, 1, 0, 0, 0, 432, 433, 5, 69, 0, 0, 433, 79, 1, 0, 0, 0, 434, 435, 7, 1, 0, 0, 435, 81, 1, 0, 0, 0, 436, 437, 3, 86, 43, 0, 437, 438, 5, 5, 0, 0, 438, 439, 3, 114, 57, 0, 439, 446, 1, 0, 0, 0, 440, 441, 3, 84, 42, 0, 441, 442, 5, 5, 0, 0, 442, 443, 3, 114, 57, 0, 443, 446, 1, 0, 0, 0, 444, 446, 3, 64, 32, 0, 445, 436, 1, 0, 0, 0, 445, 440, 1, 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 83, 1, 0, 0, 0, 447, 448, 5, 9, 0, 0, 448, 449, 3, 114, 57, 0, 449, 450, 5, 10, 0, 0, 450, 85, 1, 0, 0, 0, 451, 457, 5, 66, 0, 0, 452, 457, 3, 74, 37, 0, 453, 457, 3, 62, 31, 0, 454, 457, 3, 106, 53, 0, 455, 457, 3, 108, 54, 0, 456, 451, 1, 0, 0, 0, 456, 452, 1, 0, 0, 0, 456, 453, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 456, 455, 1, 0, 0, 0, 457, 87, 1, 0, 0, 0, 458, 459, 3, 90, 45, 0, 459, 460, 5, 66, 0, 0, 460, 89, 1, 0, 0, 0, 461, 463, 5, 71, 0, 0, 462, 461, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 91, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 467, 469, 3, 94, 47, 0, 468, 470, 3, 104, 52, 0, 469, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 93, 1, 0, 0, 0, 473, 479, 3, 64, 32, 0, 474, 479, 3, 62, 31, 0, 475, 479, 3, 68, 34, 0, 476, 479, 3, 70, 35, 0, 477, 479, 3, 98, 49, 0, 478, 473, 1, 0, 0, 0, 478, 474, 1, 0, 0, 0, 478, 475, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 477, 1, 0, 0, 0, 479, 95, 1, 0, 0, 0, 480, 482, 3, 98, 49, 0, 481, 483, 3, 140, 70, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 97, 1, 0, 0, 0, 484, 485, 3, 90, 45, 0, 485, 486, 3, 100, 50, 0, 486, 488, 5, 11, 0, 0, 487, 489, 3, 102, 51, 0, 488, 487, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 5, 12, 0, 0, 491, 99, 1, 0, 0, 0, 492, 496, 5, 66, 0, 0, 493, 496, 3, 106, 53, 0, 494, 496, 3, 108, 54, 0, 495, 492, 1, 0, 0, 0, 495, 493, 1, 0, 0, 0, 495, 494, 1, 0, 0, 0, 496, 101, 1, 0, 0, 0, 497, 502, 3, 114, 57, 0, 498, 499, 5, 8, 0, 0, 499, 501, 3, 114, 57, 0, 500, 498, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 506, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 505, 507, 5, 8, 0, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 103, 1, 0, 0, 0, 508, 510, 3, 140, 70, 0, 509, 508, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 512, 5, 7, 0, 0, 512, 520, 3, 86, 43, 0, 513, 514, 3, 140, 70, 0, 514, 515, 5, 7, 0, 0, 515, 517, 1, 0, 0, 0, 516, 513, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 520, 3, 84, 42, 0, 519, 509, 1, 0, 0, 0, 519, 516, 1, 0, 0, 0, 520, 105, 1, 0, 0, 0, 521, 522, 7, 2, 0, 0, 522, 107, 1, 0, 0, 0, 523, 524, 7, 3, 0, 0, 524, 109, 1, 0, 0, 0, 525, 526, 3, 112, 56, 0, 526, 527, 5, 30, 0, 0, 527, 528, 3, 112, 56, 0, 528, 111, 1, 0, 0, 0, 529, 533, 3, 78, 39, 0, 530, 533, 3, 64, 32, 0, 531, 533, 3, 62, 31, 0, 532, 529, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 113, 1, 0, 0, 0, 534, 535, 6, 57, -1, 0, 535, 536, 3, 128, 64, 0, 536, 537, 3, 114, 57, 5, 537, 540, 1, 0, 0, 0, 538, 540, 3, 116, 58, 0, 539, 534, 1, 0, 0, 0, 539, 538, 1, 0, 0, 0, 540, 558, 1, 0, 0, 0, 541, 542, 10, 4, 0, 0, 542, 543, 3, 132, 66, 0, 543, 544, 3, 114, 57, 5, 544, 557, 1, 0, 0, 0, 545, 546, 10, 3, 0, 0, 546, 547, 3, 134, 67, 0, 547, 548, 3, 114, 57, 4, 548, 557, 1, 0, 0, 0, 549, 550, 10, 2, 0, 0, 550, 552, 5, 32, 0, 0, 551, 553, 3, 114, 57, 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 5, 5, 0, 0, 555, 557, 3, 114, 57, 3, 556, 541, 1, 0, 0, 0, 556, 545, 1, 0, 0, 0, 556, 549, 1, 0, 0, 0, 557, 560, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 115, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 561, 562, 6, 58, -1, 0, 562, 563, 3, 118, 59, 0, 563, 582, 1, 0, 0, 0, 564, 565, 10, 5, 0, 0, 565, 566, 3, 122, 61, 0, 566, 567, 3, 116, 58, 6, 567, 581, 1, 0, 0, 0, 568, 569, 10, 4, 0, 0, 569, 570, 3, 120, 60, 0, 570, 571, 3, 116, 58, 5, 571, 581, 1, 0, 0, 0, 572, 573, 10, 3, 0, 0, 573, 574, 3, 124, 62, 0, 574, 575, 3, 116, 58, 4, 575, 581, 1, 0, 0, 0, 576, 577, 10, 2, 0, 0, 577, 578, 3, 126, 63, 0, 578, 579, 3, 116, 58, 3, 579, 581, 1, 0, 0, 0, 580, 564, 1, 0, 0, 0, 580, 568, 1, 0, 0, 0, 580, 572, 1, 0, 0, 0, 580, 576, 1, 0, 0, 0, 581, 584, 1, 0, 0, 0, 582, 580, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 117, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 585, 586, 6, 59, -1, 0, 586, 603, 3, 96, 48, 0, 587, 603, 3, 110, 55, 0, 588, 603, 3, 66, 33, 0, 589, 603, 3, 64, 32, 0, 590, 603, 3, 92, 46, 0, 591, 603, 3, 62, 31, 0, 592, 596, 5, 11, 0, 0, 593, 597, 3, 18, 9, 0, 594, 597, 3, 52, 26, 0, 595, 597, 3, 114, 57, 0, 596, 593, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 596, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 600, 5, 12, 0, 0, 599, 601, 3, 140, 70, 0, 600, 599, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 603, 1, 0, 0, 0, 602, 585, 1, 0, 0, 0, 602, 587, 1, 0, 0, 0, 602, 588, 1, 0, 0, 0, 602, 589, 1, 0, 0, 0, 602, 590, 1, 0, 0, 0, 602, 591, 1, 0, 0, 0, 602, 592, 1, 0, 0, 0, 603, 618, 1, 0, 0, 0, 604, 605, 10, 10, 0, 0, 605, 606, 3, 136, 68, 0, 606, 607, 3, 118, 59, 11, 607, 617, 1, 0, 0, 0, 608, 609, 10, 9, 0, 0, 609, 610, 3, 138, 69, 0, 610, 611, 3, 118, 59, 10, 611, 617, 1, 0, 0, 0, 612, 613, 10, 8, 0, 0, 613, 614, 3, 130, 65, 0, 614, 615, 3, 118, 59, 9, 615, 617, 1, 0, 0, 0, 616, 604, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 612, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 119, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 624, 7, 4, 0, 0, 622, 625, 3, 124, 62, 0, 623, 625, 3, 122, 61, 0, 624, 622, 1, 0, 0, 0, 624, 623, 1, 0, 0, 0, 625, 121, 1, 0, 0, 0, 626, 627, 7, 5, 0, 0, 627, 123, 1, 0, 0, 0, 628, 630, 5, 61, 0, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 5, 62, 0, 0, 632, 125, 1, 0, 0, 0, 633, 635, 5, 61, 0, 0, 634, 633, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 637, 5, 60, 0, 0, 637, 127, 1, 0, 0, 0, 638, 639, 7, 6, 0, 0, 639, 129, 1, 0, 0, 0, 640, 641, 7, 7, 0, 0, 641, 131, 1, 0, 0, 0, 642, 643, 5, 28, 0, 0, 643, 133, 1, 0, 0, 0, 644, 645, 5, 29, 0, 0, 645, 135, 1, 0, 0, 0, 646, 647, 7, 8, 0, 0, 647, 137, 1, 0, 0, 0, 648, 649, 7, 9, 0, 0, 649, 139, 1, 0, 0, 0, 650, 651, 5, 32, 0, 0, 651, 141, 1, 0, 0, 0, 67, 145, 160, 168, 172, 183, 187, 195, 202, 208, 216, 223, 229, 234, 243, 249, 253, 257, 266, 273, 281, 286, 306, 317, 326, 339, 341, 354, 357, 360, 367, 372, 383, 389, 393, 402, 406, 416, 420, 422, 445, 456, 464, 471, 478, 482, 488, 495, 502, 506, 509, 516, 519, 532, 539, 552, 556, 558, 580, 582, 596, 600, 602, 616, 618, 624, 629, 634] \ No newline at end of file diff --git a/pkg/parser/fql/fql_parser.go b/pkg/parser/fql/fql_parser.go index d8f0a332..fd399060 100644 --- a/pkg/parser/fql/fql_parser.go +++ b/pkg/parser/fql/fql_parser.go @@ -58,9 +58,9 @@ func fqlparserParserInit() { "program", "head", "useExpression", "use", "body", "bodyStatement", "bodyExpression", "variableDeclaration", "returnExpression", "forExpression", "forExpressionSource", "forExpressionClause", "forExpressionStatement", - "forExpressionBody", "forExpressionReturn", "filterClause", "limitClause", - "limitClauseValue", "sortClause", "sortClauseExpression", "collectClause", - "collectSelector", "collectGrouping", "collectAggregator", "collectAggregateSelector", + "forExpressionReturn", "filterClause", "limitClause", "limitClauseValue", + "sortClause", "sortClauseExpression", "collectClause", "collectSelector", + "collectGrouping", "collectAggregator", "collectAggregateSelector", "collectGroupVariable", "collectCounter", "waitForExpression", "waitForEventName", "waitForEventSource", "optionsClause", "timeoutClause", "param", "variable", "literal", "arrayLiteral", "objectLiteral", "booleanLiteral", "stringLiteral", @@ -75,7 +75,7 @@ func fqlparserParserInit() { } staticData.PredictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 72, 647, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, + 4, 1, 72, 653, 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, @@ -88,286 +88,289 @@ func fqlparserParserInit() { 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, - 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 1, 0, 5, 0, 146, 8, 0, - 10, 0, 12, 0, 149, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, - 1, 3, 1, 4, 5, 4, 161, 8, 4, 10, 4, 12, 4, 164, 9, 4, 1, 4, 1, 4, 1, 5, - 1, 5, 1, 5, 3, 5, 171, 8, 5, 1, 6, 1, 6, 3, 6, 175, 8, 6, 1, 7, 1, 7, 1, - 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 186, 8, 7, 1, 8, 1, 8, 3, - 8, 190, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 198, 8, 9, 1, 9, - 1, 9, 1, 9, 5, 9, 203, 8, 9, 10, 9, 12, 9, 206, 9, 9, 1, 9, 1, 9, 1, 9, - 1, 9, 1, 9, 3, 9, 213, 8, 9, 1, 9, 1, 9, 1, 9, 5, 9, 218, 8, 9, 10, 9, - 12, 9, 221, 9, 9, 1, 9, 1, 9, 3, 9, 225, 8, 9, 1, 10, 1, 10, 1, 10, 1, - 10, 1, 10, 1, 10, 1, 10, 3, 10, 234, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, - 3, 11, 240, 8, 11, 1, 12, 1, 12, 3, 12, 244, 8, 12, 1, 13, 1, 13, 3, 13, - 248, 8, 13, 1, 14, 1, 14, 3, 14, 252, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, - 1, 16, 1, 16, 1, 16, 3, 16, 261, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, - 17, 3, 17, 268, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 274, 8, 18, 10, - 18, 12, 18, 277, 9, 18, 1, 19, 1, 19, 3, 19, 281, 8, 19, 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, 3, 20, 301, 8, 20, 1, 21, 1, 21, - 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 310, 8, 22, 10, 22, 12, 22, 313, - 9, 22, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 319, 8, 23, 10, 23, 12, 23, 322, - 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, - 25, 3, 25, 334, 8, 25, 3, 25, 336, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, - 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 349, 8, 27, 1, 27, - 3, 27, 352, 8, 27, 1, 27, 3, 27, 355, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, - 1, 28, 3, 28, 362, 8, 28, 1, 29, 1, 29, 1, 29, 3, 29, 367, 8, 29, 1, 30, - 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 378, 8, - 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 384, 8, 32, 1, 33, 1, 33, 3, 33, - 388, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 397, - 8, 34, 1, 35, 1, 35, 3, 35, 401, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, - 36, 1, 36, 5, 36, 409, 8, 36, 10, 36, 12, 36, 412, 9, 36, 1, 36, 3, 36, - 415, 8, 36, 3, 36, 417, 8, 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, 42, 1, 42, 1, - 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 440, 8, 42, 1, 43, 1, 43, 1, 43, - 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 451, 8, 44, 1, 45, 1, - 45, 1, 45, 1, 46, 5, 46, 457, 8, 46, 10, 46, 12, 46, 460, 9, 46, 1, 47, - 1, 47, 4, 47, 464, 8, 47, 11, 47, 12, 47, 465, 1, 48, 1, 48, 1, 48, 1, - 48, 1, 48, 3, 48, 473, 8, 48, 1, 49, 1, 49, 3, 49, 477, 8, 49, 1, 50, 1, - 50, 1, 50, 1, 50, 3, 50, 483, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, - 3, 51, 490, 8, 51, 1, 52, 1, 52, 1, 52, 5, 52, 495, 8, 52, 10, 52, 12, - 52, 498, 9, 52, 1, 52, 3, 52, 501, 8, 52, 1, 53, 3, 53, 504, 8, 53, 1, - 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 511, 8, 53, 1, 53, 3, 53, 514, 8, - 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, - 1, 57, 3, 57, 527, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 534, - 8, 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, 547, 8, 58, 1, 58, 1, 58, 5, 58, 551, 8, 58, 10, 58, - 12, 58, 554, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, - 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, - 1, 59, 5, 59, 575, 8, 59, 10, 59, 12, 59, 578, 9, 59, 1, 60, 1, 60, 1, - 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 591, - 8, 60, 1, 60, 1, 60, 3, 60, 595, 8, 60, 3, 60, 597, 8, 60, 1, 60, 1, 60, - 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, - 60, 611, 8, 60, 10, 60, 12, 60, 614, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, - 619, 8, 61, 1, 62, 1, 62, 1, 63, 3, 63, 624, 8, 63, 1, 63, 1, 63, 1, 64, - 3, 64, 629, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, - 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 0, 3, - 116, 118, 120, 72, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, - 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, - 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, - 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, - 132, 134, 136, 138, 140, 142, 0, 10, 1, 0, 66, 67, 1, 0, 48, 49, 4, 0, - 28, 29, 38, 44, 46, 47, 52, 59, 4, 0, 35, 37, 45, 45, 48, 51, 60, 64, 2, - 0, 48, 48, 56, 57, 1, 0, 15, 20, 2, 0, 24, 25, 61, 61, 1, 0, 33, 34, 1, - 0, 21, 23, 1, 0, 24, 25, 686, 0, 147, 1, 0, 0, 0, 2, 152, 1, 0, 0, 0, 4, - 154, 1, 0, 0, 0, 6, 156, 1, 0, 0, 0, 8, 162, 1, 0, 0, 0, 10, 170, 1, 0, - 0, 0, 12, 174, 1, 0, 0, 0, 14, 185, 1, 0, 0, 0, 16, 187, 1, 0, 0, 0, 18, - 224, 1, 0, 0, 0, 20, 233, 1, 0, 0, 0, 22, 239, 1, 0, 0, 0, 24, 243, 1, - 0, 0, 0, 26, 247, 1, 0, 0, 0, 28, 251, 1, 0, 0, 0, 30, 253, 1, 0, 0, 0, - 32, 256, 1, 0, 0, 0, 34, 267, 1, 0, 0, 0, 36, 269, 1, 0, 0, 0, 38, 278, - 1, 0, 0, 0, 40, 300, 1, 0, 0, 0, 42, 302, 1, 0, 0, 0, 44, 306, 1, 0, 0, - 0, 46, 314, 1, 0, 0, 0, 48, 323, 1, 0, 0, 0, 50, 335, 1, 0, 0, 0, 52, 337, - 1, 0, 0, 0, 54, 342, 1, 0, 0, 0, 56, 361, 1, 0, 0, 0, 58, 366, 1, 0, 0, - 0, 60, 368, 1, 0, 0, 0, 62, 371, 1, 0, 0, 0, 64, 383, 1, 0, 0, 0, 66, 387, - 1, 0, 0, 0, 68, 396, 1, 0, 0, 0, 70, 398, 1, 0, 0, 0, 72, 404, 1, 0, 0, - 0, 74, 420, 1, 0, 0, 0, 76, 422, 1, 0, 0, 0, 78, 424, 1, 0, 0, 0, 80, 426, - 1, 0, 0, 0, 82, 428, 1, 0, 0, 0, 84, 439, 1, 0, 0, 0, 86, 441, 1, 0, 0, - 0, 88, 450, 1, 0, 0, 0, 90, 452, 1, 0, 0, 0, 92, 458, 1, 0, 0, 0, 94, 461, - 1, 0, 0, 0, 96, 472, 1, 0, 0, 0, 98, 474, 1, 0, 0, 0, 100, 478, 1, 0, 0, - 0, 102, 489, 1, 0, 0, 0, 104, 491, 1, 0, 0, 0, 106, 513, 1, 0, 0, 0, 108, - 515, 1, 0, 0, 0, 110, 517, 1, 0, 0, 0, 112, 519, 1, 0, 0, 0, 114, 526, - 1, 0, 0, 0, 116, 533, 1, 0, 0, 0, 118, 555, 1, 0, 0, 0, 120, 596, 1, 0, - 0, 0, 122, 615, 1, 0, 0, 0, 124, 620, 1, 0, 0, 0, 126, 623, 1, 0, 0, 0, - 128, 628, 1, 0, 0, 0, 130, 632, 1, 0, 0, 0, 132, 634, 1, 0, 0, 0, 134, - 636, 1, 0, 0, 0, 136, 638, 1, 0, 0, 0, 138, 640, 1, 0, 0, 0, 140, 642, - 1, 0, 0, 0, 142, 644, 1, 0, 0, 0, 144, 146, 3, 2, 1, 0, 145, 144, 1, 0, - 0, 0, 146, 149, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, - 148, 150, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 150, 151, 3, 8, 4, 0, 151, - 1, 1, 0, 0, 0, 152, 153, 3, 4, 2, 0, 153, 3, 1, 0, 0, 0, 154, 155, 3, 6, - 3, 0, 155, 5, 1, 0, 0, 0, 156, 157, 5, 51, 0, 0, 157, 158, 3, 90, 45, 0, - 158, 7, 1, 0, 0, 0, 159, 161, 3, 10, 5, 0, 160, 159, 1, 0, 0, 0, 161, 164, - 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, - 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 3, 12, 6, 0, 166, 9, 1, 0, 0, 0, - 167, 171, 3, 14, 7, 0, 168, 171, 3, 98, 49, 0, 169, 171, 3, 54, 27, 0, - 170, 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, - 11, 1, 0, 0, 0, 172, 175, 3, 16, 8, 0, 173, 175, 3, 18, 9, 0, 174, 172, - 1, 0, 0, 0, 174, 173, 1, 0, 0, 0, 175, 13, 1, 0, 0, 0, 176, 177, 5, 45, - 0, 0, 177, 178, 7, 0, 0, 0, 178, 179, 5, 31, 0, 0, 179, 186, 3, 116, 58, - 0, 180, 181, 5, 45, 0, 0, 181, 182, 3, 108, 54, 0, 182, 183, 5, 31, 0, - 0, 183, 184, 3, 116, 58, 0, 184, 186, 1, 0, 0, 0, 185, 176, 1, 0, 0, 0, - 185, 180, 1, 0, 0, 0, 186, 15, 1, 0, 0, 0, 187, 189, 5, 36, 0, 0, 188, - 190, 5, 40, 0, 0, 189, 188, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, - 1, 0, 0, 0, 191, 192, 3, 116, 58, 0, 192, 17, 1, 0, 0, 0, 193, 194, 5, - 35, 0, 0, 194, 197, 7, 0, 0, 0, 195, 196, 5, 8, 0, 0, 196, 198, 5, 66, - 0, 0, 197, 195, 1, 0, 0, 0, 197, 198, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, - 199, 200, 5, 62, 0, 0, 200, 204, 3, 20, 10, 0, 201, 203, 3, 26, 13, 0, - 202, 201, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, - 205, 1, 0, 0, 0, 205, 207, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, - 3, 28, 14, 0, 208, 225, 1, 0, 0, 0, 209, 210, 5, 35, 0, 0, 210, 212, 7, - 0, 0, 0, 211, 213, 5, 63, 0, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, - 0, 213, 214, 1, 0, 0, 0, 214, 215, 5, 64, 0, 0, 215, 219, 3, 116, 58, 0, - 216, 218, 3, 26, 13, 0, 217, 216, 1, 0, 0, 0, 218, 221, 1, 0, 0, 0, 219, - 217, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 1, 0, 0, 0, 221, 219, - 1, 0, 0, 0, 222, 223, 3, 28, 14, 0, 223, 225, 1, 0, 0, 0, 224, 193, 1, - 0, 0, 0, 224, 209, 1, 0, 0, 0, 225, 19, 1, 0, 0, 0, 226, 234, 3, 98, 49, - 0, 227, 234, 3, 70, 35, 0, 228, 234, 3, 72, 36, 0, 229, 234, 3, 66, 33, - 0, 230, 234, 3, 94, 47, 0, 231, 234, 3, 112, 56, 0, 232, 234, 3, 64, 32, - 0, 233, 226, 1, 0, 0, 0, 233, 227, 1, 0, 0, 0, 233, 228, 1, 0, 0, 0, 233, - 229, 1, 0, 0, 0, 233, 230, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 232, - 1, 0, 0, 0, 234, 21, 1, 0, 0, 0, 235, 240, 3, 32, 16, 0, 236, 240, 3, 36, - 18, 0, 237, 240, 3, 30, 15, 0, 238, 240, 3, 40, 20, 0, 239, 235, 1, 0, - 0, 0, 239, 236, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, - 240, 23, 1, 0, 0, 0, 241, 244, 3, 14, 7, 0, 242, 244, 3, 98, 49, 0, 243, - 241, 1, 0, 0, 0, 243, 242, 1, 0, 0, 0, 244, 25, 1, 0, 0, 0, 245, 248, 3, - 24, 12, 0, 246, 248, 3, 22, 11, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, - 0, 0, 248, 27, 1, 0, 0, 0, 249, 252, 3, 16, 8, 0, 250, 252, 3, 18, 9, 0, - 251, 249, 1, 0, 0, 0, 251, 250, 1, 0, 0, 0, 252, 29, 1, 0, 0, 0, 253, 254, - 5, 41, 0, 0, 254, 255, 3, 116, 58, 0, 255, 31, 1, 0, 0, 0, 256, 257, 5, - 44, 0, 0, 257, 260, 3, 34, 17, 0, 258, 259, 5, 8, 0, 0, 259, 261, 3, 34, - 17, 0, 260, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 33, 1, 0, 0, 0, - 262, 268, 3, 80, 40, 0, 263, 268, 3, 64, 32, 0, 264, 268, 3, 66, 33, 0, - 265, 268, 3, 98, 49, 0, 266, 268, 3, 94, 47, 0, 267, 262, 1, 0, 0, 0, 267, - 263, 1, 0, 0, 0, 267, 264, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 266, - 1, 0, 0, 0, 268, 35, 1, 0, 0, 0, 269, 270, 5, 43, 0, 0, 270, 275, 3, 38, - 19, 0, 271, 272, 5, 8, 0, 0, 272, 274, 3, 38, 19, 0, 273, 271, 1, 0, 0, - 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, - 37, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 280, 3, 116, 58, 0, 279, 281, - 5, 47, 0, 0, 280, 279, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 39, 1, 0, - 0, 0, 282, 283, 5, 46, 0, 0, 283, 301, 3, 52, 26, 0, 284, 285, 5, 46, 0, - 0, 285, 301, 3, 46, 23, 0, 286, 287, 5, 46, 0, 0, 287, 288, 3, 44, 22, - 0, 288, 289, 3, 46, 23, 0, 289, 301, 1, 0, 0, 0, 290, 291, 5, 46, 0, 0, - 291, 292, 3, 44, 22, 0, 292, 293, 3, 50, 25, 0, 293, 301, 1, 0, 0, 0, 294, - 295, 5, 46, 0, 0, 295, 296, 3, 44, 22, 0, 296, 297, 3, 52, 26, 0, 297, - 301, 1, 0, 0, 0, 298, 299, 5, 46, 0, 0, 299, 301, 3, 44, 22, 0, 300, 282, - 1, 0, 0, 0, 300, 284, 1, 0, 0, 0, 300, 286, 1, 0, 0, 0, 300, 290, 1, 0, - 0, 0, 300, 294, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 301, 41, 1, 0, 0, 0, - 302, 303, 5, 66, 0, 0, 303, 304, 5, 31, 0, 0, 304, 305, 3, 116, 58, 0, - 305, 43, 1, 0, 0, 0, 306, 311, 3, 42, 21, 0, 307, 308, 5, 8, 0, 0, 308, - 310, 3, 42, 21, 0, 309, 307, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, - 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 45, 1, 0, 0, 0, 313, 311, 1, 0, - 0, 0, 314, 315, 5, 58, 0, 0, 315, 320, 3, 48, 24, 0, 316, 317, 5, 8, 0, - 0, 317, 319, 3, 48, 24, 0, 318, 316, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, - 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 47, 1, 0, 0, 0, 322, 320, - 1, 0, 0, 0, 323, 324, 5, 66, 0, 0, 324, 325, 5, 31, 0, 0, 325, 326, 3, - 98, 49, 0, 326, 49, 1, 0, 0, 0, 327, 328, 5, 52, 0, 0, 328, 336, 3, 42, - 21, 0, 329, 330, 5, 52, 0, 0, 330, 333, 5, 66, 0, 0, 331, 332, 5, 53, 0, - 0, 332, 334, 5, 66, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, - 336, 1, 0, 0, 0, 335, 327, 1, 0, 0, 0, 335, 329, 1, 0, 0, 0, 336, 51, 1, - 0, 0, 0, 337, 338, 5, 54, 0, 0, 338, 339, 5, 55, 0, 0, 339, 340, 5, 52, - 0, 0, 340, 341, 5, 66, 0, 0, 341, 53, 1, 0, 0, 0, 342, 343, 5, 37, 0, 0, - 343, 344, 5, 59, 0, 0, 344, 345, 3, 56, 28, 0, 345, 346, 5, 62, 0, 0, 346, - 348, 3, 58, 29, 0, 347, 349, 3, 60, 30, 0, 348, 347, 1, 0, 0, 0, 348, 349, - 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 352, 3, 30, 15, 0, 351, 350, 1, - 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 355, 3, 62, 31, - 0, 354, 353, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 55, 1, 0, 0, 0, 356, - 362, 3, 76, 38, 0, 357, 362, 3, 66, 33, 0, 358, 362, 3, 64, 32, 0, 359, - 362, 3, 98, 49, 0, 360, 362, 3, 94, 47, 0, 361, 356, 1, 0, 0, 0, 361, 357, - 1, 0, 0, 0, 361, 358, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 361, 360, 1, 0, - 0, 0, 362, 57, 1, 0, 0, 0, 363, 367, 3, 98, 49, 0, 364, 367, 3, 66, 33, - 0, 365, 367, 3, 94, 47, 0, 366, 363, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, - 366, 365, 1, 0, 0, 0, 367, 59, 1, 0, 0, 0, 368, 369, 5, 38, 0, 0, 369, - 370, 3, 72, 36, 0, 370, 61, 1, 0, 0, 0, 371, 377, 5, 39, 0, 0, 372, 378, - 3, 80, 40, 0, 373, 378, 3, 66, 33, 0, 374, 378, 3, 64, 32, 0, 375, 378, - 3, 94, 47, 0, 376, 378, 3, 100, 50, 0, 377, 372, 1, 0, 0, 0, 377, 373, - 1, 0, 0, 0, 377, 374, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 376, 1, 0, - 0, 0, 378, 63, 1, 0, 0, 0, 379, 380, 5, 65, 0, 0, 380, 384, 5, 66, 0, 0, - 381, 382, 5, 65, 0, 0, 382, 384, 3, 108, 54, 0, 383, 379, 1, 0, 0, 0, 383, - 381, 1, 0, 0, 0, 384, 65, 1, 0, 0, 0, 385, 388, 5, 66, 0, 0, 386, 388, - 3, 108, 54, 0, 387, 385, 1, 0, 0, 0, 387, 386, 1, 0, 0, 0, 388, 67, 1, - 0, 0, 0, 389, 397, 3, 70, 35, 0, 390, 397, 3, 72, 36, 0, 391, 397, 3, 74, - 37, 0, 392, 397, 3, 76, 38, 0, 393, 397, 3, 78, 39, 0, 394, 397, 3, 80, - 40, 0, 395, 397, 3, 82, 41, 0, 396, 389, 1, 0, 0, 0, 396, 390, 1, 0, 0, - 0, 396, 391, 1, 0, 0, 0, 396, 392, 1, 0, 0, 0, 396, 393, 1, 0, 0, 0, 396, - 394, 1, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 69, 1, 0, 0, 0, 398, 400, 5, - 9, 0, 0, 399, 401, 3, 104, 52, 0, 400, 399, 1, 0, 0, 0, 400, 401, 1, 0, - 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 5, 10, 0, 0, 403, 71, 1, 0, 0, 0, - 404, 416, 5, 13, 0, 0, 405, 410, 3, 84, 42, 0, 406, 407, 5, 8, 0, 0, 407, - 409, 3, 84, 42, 0, 408, 406, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, - 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, - 0, 0, 413, 415, 5, 8, 0, 0, 414, 413, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, - 415, 417, 1, 0, 0, 0, 416, 405, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, - 418, 1, 0, 0, 0, 418, 419, 5, 14, 0, 0, 419, 73, 1, 0, 0, 0, 420, 421, - 5, 50, 0, 0, 421, 75, 1, 0, 0, 0, 422, 423, 5, 68, 0, 0, 423, 77, 1, 0, - 0, 0, 424, 425, 5, 70, 0, 0, 425, 79, 1, 0, 0, 0, 426, 427, 5, 69, 0, 0, - 427, 81, 1, 0, 0, 0, 428, 429, 7, 1, 0, 0, 429, 83, 1, 0, 0, 0, 430, 431, - 3, 88, 44, 0, 431, 432, 5, 5, 0, 0, 432, 433, 3, 116, 58, 0, 433, 440, - 1, 0, 0, 0, 434, 435, 3, 86, 43, 0, 435, 436, 5, 5, 0, 0, 436, 437, 3, - 116, 58, 0, 437, 440, 1, 0, 0, 0, 438, 440, 3, 66, 33, 0, 439, 430, 1, - 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 438, 1, 0, 0, 0, 440, 85, 1, 0, 0, - 0, 441, 442, 5, 9, 0, 0, 442, 443, 3, 116, 58, 0, 443, 444, 5, 10, 0, 0, - 444, 87, 1, 0, 0, 0, 445, 451, 5, 66, 0, 0, 446, 451, 3, 76, 38, 0, 447, - 451, 3, 64, 32, 0, 448, 451, 3, 108, 54, 0, 449, 451, 3, 110, 55, 0, 450, - 445, 1, 0, 0, 0, 450, 446, 1, 0, 0, 0, 450, 447, 1, 0, 0, 0, 450, 448, - 1, 0, 0, 0, 450, 449, 1, 0, 0, 0, 451, 89, 1, 0, 0, 0, 452, 453, 3, 92, - 46, 0, 453, 454, 5, 66, 0, 0, 454, 91, 1, 0, 0, 0, 455, 457, 5, 71, 0, - 0, 456, 455, 1, 0, 0, 0, 457, 460, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 458, - 459, 1, 0, 0, 0, 459, 93, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 461, 463, 3, - 96, 48, 0, 462, 464, 3, 106, 53, 0, 463, 462, 1, 0, 0, 0, 464, 465, 1, - 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 95, 1, 0, 0, - 0, 467, 473, 3, 66, 33, 0, 468, 473, 3, 64, 32, 0, 469, 473, 3, 70, 35, - 0, 470, 473, 3, 72, 36, 0, 471, 473, 3, 100, 50, 0, 472, 467, 1, 0, 0, - 0, 472, 468, 1, 0, 0, 0, 472, 469, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, - 471, 1, 0, 0, 0, 473, 97, 1, 0, 0, 0, 474, 476, 3, 100, 50, 0, 475, 477, - 3, 142, 71, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 99, 1, - 0, 0, 0, 478, 479, 3, 92, 46, 0, 479, 480, 3, 102, 51, 0, 480, 482, 5, - 11, 0, 0, 481, 483, 3, 104, 52, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, - 0, 0, 483, 484, 1, 0, 0, 0, 484, 485, 5, 12, 0, 0, 485, 101, 1, 0, 0, 0, - 486, 490, 5, 66, 0, 0, 487, 490, 3, 108, 54, 0, 488, 490, 3, 110, 55, 0, - 489, 486, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, - 103, 1, 0, 0, 0, 491, 496, 3, 116, 58, 0, 492, 493, 5, 8, 0, 0, 493, 495, - 3, 116, 58, 0, 494, 492, 1, 0, 0, 0, 495, 498, 1, 0, 0, 0, 496, 494, 1, - 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, - 0, 499, 501, 5, 8, 0, 0, 500, 499, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, - 105, 1, 0, 0, 0, 502, 504, 3, 142, 71, 0, 503, 502, 1, 0, 0, 0, 503, 504, - 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 5, 7, 0, 0, 506, 514, 3, 88, - 44, 0, 507, 508, 3, 142, 71, 0, 508, 509, 5, 7, 0, 0, 509, 511, 1, 0, 0, - 0, 510, 507, 1, 0, 0, 0, 510, 511, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, - 514, 3, 86, 43, 0, 513, 503, 1, 0, 0, 0, 513, 510, 1, 0, 0, 0, 514, 107, - 1, 0, 0, 0, 515, 516, 7, 2, 0, 0, 516, 109, 1, 0, 0, 0, 517, 518, 7, 3, - 0, 0, 518, 111, 1, 0, 0, 0, 519, 520, 3, 114, 57, 0, 520, 521, 5, 30, 0, - 0, 521, 522, 3, 114, 57, 0, 522, 113, 1, 0, 0, 0, 523, 527, 3, 80, 40, - 0, 524, 527, 3, 66, 33, 0, 525, 527, 3, 64, 32, 0, 526, 523, 1, 0, 0, 0, - 526, 524, 1, 0, 0, 0, 526, 525, 1, 0, 0, 0, 527, 115, 1, 0, 0, 0, 528, - 529, 6, 58, -1, 0, 529, 530, 3, 130, 65, 0, 530, 531, 3, 116, 58, 5, 531, - 534, 1, 0, 0, 0, 532, 534, 3, 118, 59, 0, 533, 528, 1, 0, 0, 0, 533, 532, - 1, 0, 0, 0, 534, 552, 1, 0, 0, 0, 535, 536, 10, 4, 0, 0, 536, 537, 3, 134, - 67, 0, 537, 538, 3, 116, 58, 5, 538, 551, 1, 0, 0, 0, 539, 540, 10, 3, - 0, 0, 540, 541, 3, 136, 68, 0, 541, 542, 3, 116, 58, 4, 542, 551, 1, 0, - 0, 0, 543, 544, 10, 2, 0, 0, 544, 546, 5, 32, 0, 0, 545, 547, 3, 116, 58, - 0, 546, 545, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, - 549, 5, 5, 0, 0, 549, 551, 3, 116, 58, 3, 550, 535, 1, 0, 0, 0, 550, 539, - 1, 0, 0, 0, 550, 543, 1, 0, 0, 0, 551, 554, 1, 0, 0, 0, 552, 550, 1, 0, - 0, 0, 552, 553, 1, 0, 0, 0, 553, 117, 1, 0, 0, 0, 554, 552, 1, 0, 0, 0, - 555, 556, 6, 59, -1, 0, 556, 557, 3, 120, 60, 0, 557, 576, 1, 0, 0, 0, - 558, 559, 10, 5, 0, 0, 559, 560, 3, 124, 62, 0, 560, 561, 3, 118, 59, 6, - 561, 575, 1, 0, 0, 0, 562, 563, 10, 4, 0, 0, 563, 564, 3, 122, 61, 0, 564, - 565, 3, 118, 59, 5, 565, 575, 1, 0, 0, 0, 566, 567, 10, 3, 0, 0, 567, 568, - 3, 126, 63, 0, 568, 569, 3, 118, 59, 4, 569, 575, 1, 0, 0, 0, 570, 571, - 10, 2, 0, 0, 571, 572, 3, 128, 64, 0, 572, 573, 3, 118, 59, 3, 573, 575, - 1, 0, 0, 0, 574, 558, 1, 0, 0, 0, 574, 562, 1, 0, 0, 0, 574, 566, 1, 0, - 0, 0, 574, 570, 1, 0, 0, 0, 575, 578, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, - 576, 577, 1, 0, 0, 0, 577, 119, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 579, - 580, 6, 60, -1, 0, 580, 597, 3, 98, 49, 0, 581, 597, 3, 112, 56, 0, 582, - 597, 3, 68, 34, 0, 583, 597, 3, 66, 33, 0, 584, 597, 3, 94, 47, 0, 585, - 597, 3, 64, 32, 0, 586, 590, 5, 11, 0, 0, 587, 591, 3, 18, 9, 0, 588, 591, - 3, 54, 27, 0, 589, 591, 3, 116, 58, 0, 590, 587, 1, 0, 0, 0, 590, 588, - 1, 0, 0, 0, 590, 589, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 594, 5, 12, - 0, 0, 593, 595, 3, 142, 71, 0, 594, 593, 1, 0, 0, 0, 594, 595, 1, 0, 0, - 0, 595, 597, 1, 0, 0, 0, 596, 579, 1, 0, 0, 0, 596, 581, 1, 0, 0, 0, 596, - 582, 1, 0, 0, 0, 596, 583, 1, 0, 0, 0, 596, 584, 1, 0, 0, 0, 596, 585, - 1, 0, 0, 0, 596, 586, 1, 0, 0, 0, 597, 612, 1, 0, 0, 0, 598, 599, 10, 10, - 0, 0, 599, 600, 3, 138, 69, 0, 600, 601, 3, 120, 60, 11, 601, 611, 1, 0, - 0, 0, 602, 603, 10, 9, 0, 0, 603, 604, 3, 140, 70, 0, 604, 605, 3, 120, - 60, 10, 605, 611, 1, 0, 0, 0, 606, 607, 10, 8, 0, 0, 607, 608, 3, 132, - 66, 0, 608, 609, 3, 120, 60, 9, 609, 611, 1, 0, 0, 0, 610, 598, 1, 0, 0, - 0, 610, 602, 1, 0, 0, 0, 610, 606, 1, 0, 0, 0, 611, 614, 1, 0, 0, 0, 612, - 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 121, 1, 0, 0, 0, 614, 612, - 1, 0, 0, 0, 615, 618, 7, 4, 0, 0, 616, 619, 3, 126, 63, 0, 617, 619, 3, - 124, 62, 0, 618, 616, 1, 0, 0, 0, 618, 617, 1, 0, 0, 0, 619, 123, 1, 0, - 0, 0, 620, 621, 7, 5, 0, 0, 621, 125, 1, 0, 0, 0, 622, 624, 5, 61, 0, 0, - 623, 622, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, - 626, 5, 62, 0, 0, 626, 127, 1, 0, 0, 0, 627, 629, 5, 61, 0, 0, 628, 627, - 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 5, 60, - 0, 0, 631, 129, 1, 0, 0, 0, 632, 633, 7, 6, 0, 0, 633, 131, 1, 0, 0, 0, - 634, 635, 7, 7, 0, 0, 635, 133, 1, 0, 0, 0, 636, 637, 5, 28, 0, 0, 637, - 135, 1, 0, 0, 0, 638, 639, 5, 29, 0, 0, 639, 137, 1, 0, 0, 0, 640, 641, - 7, 8, 0, 0, 641, 139, 1, 0, 0, 0, 642, 643, 7, 9, 0, 0, 643, 141, 1, 0, - 0, 0, 644, 645, 5, 32, 0, 0, 645, 143, 1, 0, 0, 0, 66, 147, 162, 170, 174, - 185, 189, 197, 204, 212, 219, 224, 233, 239, 243, 247, 251, 260, 267, 275, - 280, 300, 311, 320, 333, 335, 348, 351, 354, 361, 366, 377, 383, 387, 396, - 400, 410, 414, 416, 439, 450, 458, 465, 472, 476, 482, 489, 496, 500, 503, - 510, 513, 526, 533, 546, 550, 552, 574, 576, 590, 594, 596, 610, 612, 618, - 623, 628, + 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 1, 0, 5, 0, 144, 8, 0, 10, 0, 12, 0, + 147, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, + 5, 4, 159, 8, 4, 10, 4, 12, 4, 162, 9, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, + 3, 5, 169, 8, 5, 1, 6, 1, 6, 3, 6, 173, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, + 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 184, 8, 7, 1, 8, 1, 8, 3, 8, 188, 8, 8, + 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 196, 8, 9, 1, 9, 1, 9, 1, 9, + 5, 9, 201, 8, 9, 10, 9, 12, 9, 204, 9, 9, 1, 9, 5, 9, 207, 8, 9, 10, 9, + 12, 9, 210, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 217, 8, 9, 1, 9, + 1, 9, 1, 9, 5, 9, 222, 8, 9, 10, 9, 12, 9, 225, 9, 9, 1, 9, 5, 9, 228, + 8, 9, 10, 9, 12, 9, 231, 9, 9, 1, 9, 1, 9, 3, 9, 235, 8, 9, 1, 10, 1, 10, + 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 244, 8, 10, 1, 11, 1, 11, 1, + 11, 1, 11, 3, 11, 250, 8, 11, 1, 12, 1, 12, 3, 12, 254, 8, 12, 1, 13, 1, + 13, 3, 13, 258, 8, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, + 3, 15, 267, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 274, 8, 16, + 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 280, 8, 17, 10, 17, 12, 17, 283, 9, + 17, 1, 18, 1, 18, 3, 18, 287, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, + 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 19, 1, 19, 1, 19, 3, 19, 307, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, + 1, 21, 1, 21, 5, 21, 316, 8, 21, 10, 21, 12, 21, 319, 9, 21, 1, 22, 1, + 22, 1, 22, 1, 22, 5, 22, 325, 8, 22, 10, 22, 12, 22, 328, 9, 22, 1, 23, + 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 340, + 8, 24, 3, 24, 342, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 355, 8, 26, 1, 26, 3, 26, 358, 8, + 26, 1, 26, 3, 26, 361, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, + 368, 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 373, 8, 28, 1, 29, 1, 29, 1, 29, + 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 384, 8, 30, 1, 31, 1, + 31, 1, 31, 1, 31, 3, 31, 390, 8, 31, 1, 32, 1, 32, 3, 32, 394, 8, 32, 1, + 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 403, 8, 33, 1, 34, + 1, 34, 3, 34, 407, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, + 35, 415, 8, 35, 10, 35, 12, 35, 418, 9, 35, 1, 35, 3, 35, 421, 8, 35, 3, + 35, 423, 8, 35, 1, 35, 1, 35, 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, 41, 1, 41, 1, 41, 1, 41, 1, + 41, 1, 41, 1, 41, 3, 41, 446, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, + 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 457, 8, 43, 1, 44, 1, 44, 1, 44, 1, + 45, 5, 45, 463, 8, 45, 10, 45, 12, 45, 466, 9, 45, 1, 46, 1, 46, 4, 46, + 470, 8, 46, 11, 46, 12, 46, 471, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, + 47, 479, 8, 47, 1, 48, 1, 48, 3, 48, 483, 8, 48, 1, 49, 1, 49, 1, 49, 1, + 49, 3, 49, 489, 8, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 496, 8, + 50, 1, 51, 1, 51, 1, 51, 5, 51, 501, 8, 51, 10, 51, 12, 51, 504, 9, 51, + 1, 51, 3, 51, 507, 8, 51, 1, 52, 3, 52, 510, 8, 52, 1, 52, 1, 52, 1, 52, + 1, 52, 1, 52, 3, 52, 517, 8, 52, 1, 52, 3, 52, 520, 8, 52, 1, 53, 1, 53, + 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 3, 56, 533, + 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 540, 8, 57, 1, 57, 1, + 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, + 553, 8, 57, 1, 57, 1, 57, 5, 57, 557, 8, 57, 10, 57, 12, 57, 560, 9, 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, 5, 58, 581, + 8, 58, 10, 58, 12, 58, 584, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, + 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 597, 8, 59, 1, 59, 1, 59, + 3, 59, 601, 8, 59, 3, 59, 603, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 617, 8, 59, 10, + 59, 12, 59, 620, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 625, 8, 60, 1, 61, + 1, 61, 1, 62, 3, 62, 630, 8, 62, 1, 62, 1, 62, 1, 63, 3, 63, 635, 8, 63, + 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, + 68, 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 0, 3, 114, 116, 118, 71, + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, + 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, + 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, + 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, + 138, 140, 0, 10, 1, 0, 66, 67, 1, 0, 48, 49, 4, 0, 28, 29, 38, 44, 46, + 47, 52, 59, 4, 0, 35, 37, 45, 45, 48, 51, 60, 64, 2, 0, 48, 48, 56, 57, + 1, 0, 15, 20, 2, 0, 24, 25, 61, 61, 1, 0, 33, 34, 1, 0, 21, 23, 1, 0, 24, + 25, 694, 0, 145, 1, 0, 0, 0, 2, 150, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 6, + 154, 1, 0, 0, 0, 8, 160, 1, 0, 0, 0, 10, 168, 1, 0, 0, 0, 12, 172, 1, 0, + 0, 0, 14, 183, 1, 0, 0, 0, 16, 185, 1, 0, 0, 0, 18, 234, 1, 0, 0, 0, 20, + 243, 1, 0, 0, 0, 22, 249, 1, 0, 0, 0, 24, 253, 1, 0, 0, 0, 26, 257, 1, + 0, 0, 0, 28, 259, 1, 0, 0, 0, 30, 262, 1, 0, 0, 0, 32, 273, 1, 0, 0, 0, + 34, 275, 1, 0, 0, 0, 36, 284, 1, 0, 0, 0, 38, 306, 1, 0, 0, 0, 40, 308, + 1, 0, 0, 0, 42, 312, 1, 0, 0, 0, 44, 320, 1, 0, 0, 0, 46, 329, 1, 0, 0, + 0, 48, 341, 1, 0, 0, 0, 50, 343, 1, 0, 0, 0, 52, 348, 1, 0, 0, 0, 54, 367, + 1, 0, 0, 0, 56, 372, 1, 0, 0, 0, 58, 374, 1, 0, 0, 0, 60, 377, 1, 0, 0, + 0, 62, 389, 1, 0, 0, 0, 64, 393, 1, 0, 0, 0, 66, 402, 1, 0, 0, 0, 68, 404, + 1, 0, 0, 0, 70, 410, 1, 0, 0, 0, 72, 426, 1, 0, 0, 0, 74, 428, 1, 0, 0, + 0, 76, 430, 1, 0, 0, 0, 78, 432, 1, 0, 0, 0, 80, 434, 1, 0, 0, 0, 82, 445, + 1, 0, 0, 0, 84, 447, 1, 0, 0, 0, 86, 456, 1, 0, 0, 0, 88, 458, 1, 0, 0, + 0, 90, 464, 1, 0, 0, 0, 92, 467, 1, 0, 0, 0, 94, 478, 1, 0, 0, 0, 96, 480, + 1, 0, 0, 0, 98, 484, 1, 0, 0, 0, 100, 495, 1, 0, 0, 0, 102, 497, 1, 0, + 0, 0, 104, 519, 1, 0, 0, 0, 106, 521, 1, 0, 0, 0, 108, 523, 1, 0, 0, 0, + 110, 525, 1, 0, 0, 0, 112, 532, 1, 0, 0, 0, 114, 539, 1, 0, 0, 0, 116, + 561, 1, 0, 0, 0, 118, 602, 1, 0, 0, 0, 120, 621, 1, 0, 0, 0, 122, 626, + 1, 0, 0, 0, 124, 629, 1, 0, 0, 0, 126, 634, 1, 0, 0, 0, 128, 638, 1, 0, + 0, 0, 130, 640, 1, 0, 0, 0, 132, 642, 1, 0, 0, 0, 134, 644, 1, 0, 0, 0, + 136, 646, 1, 0, 0, 0, 138, 648, 1, 0, 0, 0, 140, 650, 1, 0, 0, 0, 142, + 144, 3, 2, 1, 0, 143, 142, 1, 0, 0, 0, 144, 147, 1, 0, 0, 0, 145, 143, + 1, 0, 0, 0, 145, 146, 1, 0, 0, 0, 146, 148, 1, 0, 0, 0, 147, 145, 1, 0, + 0, 0, 148, 149, 3, 8, 4, 0, 149, 1, 1, 0, 0, 0, 150, 151, 3, 4, 2, 0, 151, + 3, 1, 0, 0, 0, 152, 153, 3, 6, 3, 0, 153, 5, 1, 0, 0, 0, 154, 155, 5, 51, + 0, 0, 155, 156, 3, 88, 44, 0, 156, 7, 1, 0, 0, 0, 157, 159, 3, 10, 5, 0, + 158, 157, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 160, + 161, 1, 0, 0, 0, 161, 163, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 164, + 3, 12, 6, 0, 164, 9, 1, 0, 0, 0, 165, 169, 3, 14, 7, 0, 166, 169, 3, 96, + 48, 0, 167, 169, 3, 52, 26, 0, 168, 165, 1, 0, 0, 0, 168, 166, 1, 0, 0, + 0, 168, 167, 1, 0, 0, 0, 169, 11, 1, 0, 0, 0, 170, 173, 3, 16, 8, 0, 171, + 173, 3, 18, 9, 0, 172, 170, 1, 0, 0, 0, 172, 171, 1, 0, 0, 0, 173, 13, + 1, 0, 0, 0, 174, 175, 5, 45, 0, 0, 175, 176, 7, 0, 0, 0, 176, 177, 5, 31, + 0, 0, 177, 184, 3, 114, 57, 0, 178, 179, 5, 45, 0, 0, 179, 180, 3, 106, + 53, 0, 180, 181, 5, 31, 0, 0, 181, 182, 3, 114, 57, 0, 182, 184, 1, 0, + 0, 0, 183, 174, 1, 0, 0, 0, 183, 178, 1, 0, 0, 0, 184, 15, 1, 0, 0, 0, + 185, 187, 5, 36, 0, 0, 186, 188, 5, 40, 0, 0, 187, 186, 1, 0, 0, 0, 187, + 188, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 190, 3, 114, 57, 0, 190, 17, + 1, 0, 0, 0, 191, 192, 5, 35, 0, 0, 192, 195, 7, 0, 0, 0, 193, 194, 5, 8, + 0, 0, 194, 196, 5, 66, 0, 0, 195, 193, 1, 0, 0, 0, 195, 196, 1, 0, 0, 0, + 196, 197, 1, 0, 0, 0, 197, 198, 5, 62, 0, 0, 198, 202, 3, 20, 10, 0, 199, + 201, 3, 22, 11, 0, 200, 199, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, + 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 208, 1, 0, 0, 0, 204, 202, 1, 0, + 0, 0, 205, 207, 3, 24, 12, 0, 206, 205, 1, 0, 0, 0, 207, 210, 1, 0, 0, + 0, 208, 206, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 211, 1, 0, 0, 0, 210, + 208, 1, 0, 0, 0, 211, 212, 3, 26, 13, 0, 212, 235, 1, 0, 0, 0, 213, 214, + 5, 35, 0, 0, 214, 216, 7, 0, 0, 0, 215, 217, 5, 63, 0, 0, 216, 215, 1, + 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 219, 5, 64, 0, + 0, 219, 223, 3, 114, 57, 0, 220, 222, 3, 22, 11, 0, 221, 220, 1, 0, 0, + 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, + 229, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 3, 24, 12, 0, 227, 226, + 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, + 0, 0, 230, 232, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 233, 3, 26, 13, + 0, 233, 235, 1, 0, 0, 0, 234, 191, 1, 0, 0, 0, 234, 213, 1, 0, 0, 0, 235, + 19, 1, 0, 0, 0, 236, 244, 3, 96, 48, 0, 237, 244, 3, 68, 34, 0, 238, 244, + 3, 70, 35, 0, 239, 244, 3, 64, 32, 0, 240, 244, 3, 92, 46, 0, 241, 244, + 3, 110, 55, 0, 242, 244, 3, 62, 31, 0, 243, 236, 1, 0, 0, 0, 243, 237, + 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 243, 239, 1, 0, 0, 0, 243, 240, 1, 0, + 0, 0, 243, 241, 1, 0, 0, 0, 243, 242, 1, 0, 0, 0, 244, 21, 1, 0, 0, 0, + 245, 250, 3, 30, 15, 0, 246, 250, 3, 34, 17, 0, 247, 250, 3, 28, 14, 0, + 248, 250, 3, 38, 19, 0, 249, 245, 1, 0, 0, 0, 249, 246, 1, 0, 0, 0, 249, + 247, 1, 0, 0, 0, 249, 248, 1, 0, 0, 0, 250, 23, 1, 0, 0, 0, 251, 254, 3, + 14, 7, 0, 252, 254, 3, 96, 48, 0, 253, 251, 1, 0, 0, 0, 253, 252, 1, 0, + 0, 0, 254, 25, 1, 0, 0, 0, 255, 258, 3, 16, 8, 0, 256, 258, 3, 18, 9, 0, + 257, 255, 1, 0, 0, 0, 257, 256, 1, 0, 0, 0, 258, 27, 1, 0, 0, 0, 259, 260, + 5, 41, 0, 0, 260, 261, 3, 114, 57, 0, 261, 29, 1, 0, 0, 0, 262, 263, 5, + 44, 0, 0, 263, 266, 3, 32, 16, 0, 264, 265, 5, 8, 0, 0, 265, 267, 3, 32, + 16, 0, 266, 264, 1, 0, 0, 0, 266, 267, 1, 0, 0, 0, 267, 31, 1, 0, 0, 0, + 268, 274, 3, 78, 39, 0, 269, 274, 3, 62, 31, 0, 270, 274, 3, 64, 32, 0, + 271, 274, 3, 96, 48, 0, 272, 274, 3, 92, 46, 0, 273, 268, 1, 0, 0, 0, 273, + 269, 1, 0, 0, 0, 273, 270, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 273, 272, + 1, 0, 0, 0, 274, 33, 1, 0, 0, 0, 275, 276, 5, 43, 0, 0, 276, 281, 3, 36, + 18, 0, 277, 278, 5, 8, 0, 0, 278, 280, 3, 36, 18, 0, 279, 277, 1, 0, 0, + 0, 280, 283, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, + 35, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 284, 286, 3, 114, 57, 0, 285, 287, + 5, 47, 0, 0, 286, 285, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 37, 1, 0, + 0, 0, 288, 289, 5, 46, 0, 0, 289, 307, 3, 50, 25, 0, 290, 291, 5, 46, 0, + 0, 291, 307, 3, 44, 22, 0, 292, 293, 5, 46, 0, 0, 293, 294, 3, 42, 21, + 0, 294, 295, 3, 44, 22, 0, 295, 307, 1, 0, 0, 0, 296, 297, 5, 46, 0, 0, + 297, 298, 3, 42, 21, 0, 298, 299, 3, 48, 24, 0, 299, 307, 1, 0, 0, 0, 300, + 301, 5, 46, 0, 0, 301, 302, 3, 42, 21, 0, 302, 303, 3, 50, 25, 0, 303, + 307, 1, 0, 0, 0, 304, 305, 5, 46, 0, 0, 305, 307, 3, 42, 21, 0, 306, 288, + 1, 0, 0, 0, 306, 290, 1, 0, 0, 0, 306, 292, 1, 0, 0, 0, 306, 296, 1, 0, + 0, 0, 306, 300, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 307, 39, 1, 0, 0, 0, + 308, 309, 5, 66, 0, 0, 309, 310, 5, 31, 0, 0, 310, 311, 3, 114, 57, 0, + 311, 41, 1, 0, 0, 0, 312, 317, 3, 40, 20, 0, 313, 314, 5, 8, 0, 0, 314, + 316, 3, 40, 20, 0, 315, 313, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, + 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 43, 1, 0, 0, 0, 319, 317, 1, 0, + 0, 0, 320, 321, 5, 58, 0, 0, 321, 326, 3, 46, 23, 0, 322, 323, 5, 8, 0, + 0, 323, 325, 3, 46, 23, 0, 324, 322, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, + 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 45, 1, 0, 0, 0, 328, 326, + 1, 0, 0, 0, 329, 330, 5, 66, 0, 0, 330, 331, 5, 31, 0, 0, 331, 332, 3, + 96, 48, 0, 332, 47, 1, 0, 0, 0, 333, 334, 5, 52, 0, 0, 334, 342, 3, 40, + 20, 0, 335, 336, 5, 52, 0, 0, 336, 339, 5, 66, 0, 0, 337, 338, 5, 53, 0, + 0, 338, 340, 5, 66, 0, 0, 339, 337, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, + 342, 1, 0, 0, 0, 341, 333, 1, 0, 0, 0, 341, 335, 1, 0, 0, 0, 342, 49, 1, + 0, 0, 0, 343, 344, 5, 54, 0, 0, 344, 345, 5, 55, 0, 0, 345, 346, 5, 52, + 0, 0, 346, 347, 5, 66, 0, 0, 347, 51, 1, 0, 0, 0, 348, 349, 5, 37, 0, 0, + 349, 350, 5, 59, 0, 0, 350, 351, 3, 54, 27, 0, 351, 352, 5, 62, 0, 0, 352, + 354, 3, 56, 28, 0, 353, 355, 3, 58, 29, 0, 354, 353, 1, 0, 0, 0, 354, 355, + 1, 0, 0, 0, 355, 357, 1, 0, 0, 0, 356, 358, 3, 28, 14, 0, 357, 356, 1, + 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 360, 1, 0, 0, 0, 359, 361, 3, 60, 30, + 0, 360, 359, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 53, 1, 0, 0, 0, 362, + 368, 3, 74, 37, 0, 363, 368, 3, 64, 32, 0, 364, 368, 3, 62, 31, 0, 365, + 368, 3, 96, 48, 0, 366, 368, 3, 92, 46, 0, 367, 362, 1, 0, 0, 0, 367, 363, + 1, 0, 0, 0, 367, 364, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 366, 1, 0, + 0, 0, 368, 55, 1, 0, 0, 0, 369, 373, 3, 96, 48, 0, 370, 373, 3, 64, 32, + 0, 371, 373, 3, 92, 46, 0, 372, 369, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, + 372, 371, 1, 0, 0, 0, 373, 57, 1, 0, 0, 0, 374, 375, 5, 38, 0, 0, 375, + 376, 3, 70, 35, 0, 376, 59, 1, 0, 0, 0, 377, 383, 5, 39, 0, 0, 378, 384, + 3, 78, 39, 0, 379, 384, 3, 64, 32, 0, 380, 384, 3, 62, 31, 0, 381, 384, + 3, 92, 46, 0, 382, 384, 3, 98, 49, 0, 383, 378, 1, 0, 0, 0, 383, 379, 1, + 0, 0, 0, 383, 380, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 382, 1, 0, 0, + 0, 384, 61, 1, 0, 0, 0, 385, 386, 5, 65, 0, 0, 386, 390, 5, 66, 0, 0, 387, + 388, 5, 65, 0, 0, 388, 390, 3, 106, 53, 0, 389, 385, 1, 0, 0, 0, 389, 387, + 1, 0, 0, 0, 390, 63, 1, 0, 0, 0, 391, 394, 5, 66, 0, 0, 392, 394, 3, 106, + 53, 0, 393, 391, 1, 0, 0, 0, 393, 392, 1, 0, 0, 0, 394, 65, 1, 0, 0, 0, + 395, 403, 3, 68, 34, 0, 396, 403, 3, 70, 35, 0, 397, 403, 3, 72, 36, 0, + 398, 403, 3, 74, 37, 0, 399, 403, 3, 76, 38, 0, 400, 403, 3, 78, 39, 0, + 401, 403, 3, 80, 40, 0, 402, 395, 1, 0, 0, 0, 402, 396, 1, 0, 0, 0, 402, + 397, 1, 0, 0, 0, 402, 398, 1, 0, 0, 0, 402, 399, 1, 0, 0, 0, 402, 400, + 1, 0, 0, 0, 402, 401, 1, 0, 0, 0, 403, 67, 1, 0, 0, 0, 404, 406, 5, 9, + 0, 0, 405, 407, 3, 102, 51, 0, 406, 405, 1, 0, 0, 0, 406, 407, 1, 0, 0, + 0, 407, 408, 1, 0, 0, 0, 408, 409, 5, 10, 0, 0, 409, 69, 1, 0, 0, 0, 410, + 422, 5, 13, 0, 0, 411, 416, 3, 82, 41, 0, 412, 413, 5, 8, 0, 0, 413, 415, + 3, 82, 41, 0, 414, 412, 1, 0, 0, 0, 415, 418, 1, 0, 0, 0, 416, 414, 1, + 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 420, 1, 0, 0, 0, 418, 416, 1, 0, 0, + 0, 419, 421, 5, 8, 0, 0, 420, 419, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, + 423, 1, 0, 0, 0, 422, 411, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, + 1, 0, 0, 0, 424, 425, 5, 14, 0, 0, 425, 71, 1, 0, 0, 0, 426, 427, 5, 50, + 0, 0, 427, 73, 1, 0, 0, 0, 428, 429, 5, 68, 0, 0, 429, 75, 1, 0, 0, 0, + 430, 431, 5, 70, 0, 0, 431, 77, 1, 0, 0, 0, 432, 433, 5, 69, 0, 0, 433, + 79, 1, 0, 0, 0, 434, 435, 7, 1, 0, 0, 435, 81, 1, 0, 0, 0, 436, 437, 3, + 86, 43, 0, 437, 438, 5, 5, 0, 0, 438, 439, 3, 114, 57, 0, 439, 446, 1, + 0, 0, 0, 440, 441, 3, 84, 42, 0, 441, 442, 5, 5, 0, 0, 442, 443, 3, 114, + 57, 0, 443, 446, 1, 0, 0, 0, 444, 446, 3, 64, 32, 0, 445, 436, 1, 0, 0, + 0, 445, 440, 1, 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 83, 1, 0, 0, 0, 447, + 448, 5, 9, 0, 0, 448, 449, 3, 114, 57, 0, 449, 450, 5, 10, 0, 0, 450, 85, + 1, 0, 0, 0, 451, 457, 5, 66, 0, 0, 452, 457, 3, 74, 37, 0, 453, 457, 3, + 62, 31, 0, 454, 457, 3, 106, 53, 0, 455, 457, 3, 108, 54, 0, 456, 451, + 1, 0, 0, 0, 456, 452, 1, 0, 0, 0, 456, 453, 1, 0, 0, 0, 456, 454, 1, 0, + 0, 0, 456, 455, 1, 0, 0, 0, 457, 87, 1, 0, 0, 0, 458, 459, 3, 90, 45, 0, + 459, 460, 5, 66, 0, 0, 460, 89, 1, 0, 0, 0, 461, 463, 5, 71, 0, 0, 462, + 461, 1, 0, 0, 0, 463, 466, 1, 0, 0, 0, 464, 462, 1, 0, 0, 0, 464, 465, + 1, 0, 0, 0, 465, 91, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 467, 469, 3, 94, + 47, 0, 468, 470, 3, 104, 52, 0, 469, 468, 1, 0, 0, 0, 470, 471, 1, 0, 0, + 0, 471, 469, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 93, 1, 0, 0, 0, 473, + 479, 3, 64, 32, 0, 474, 479, 3, 62, 31, 0, 475, 479, 3, 68, 34, 0, 476, + 479, 3, 70, 35, 0, 477, 479, 3, 98, 49, 0, 478, 473, 1, 0, 0, 0, 478, 474, + 1, 0, 0, 0, 478, 475, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 478, 477, 1, 0, + 0, 0, 479, 95, 1, 0, 0, 0, 480, 482, 3, 98, 49, 0, 481, 483, 3, 140, 70, + 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 97, 1, 0, 0, 0, 484, + 485, 3, 90, 45, 0, 485, 486, 3, 100, 50, 0, 486, 488, 5, 11, 0, 0, 487, + 489, 3, 102, 51, 0, 488, 487, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 490, + 1, 0, 0, 0, 490, 491, 5, 12, 0, 0, 491, 99, 1, 0, 0, 0, 492, 496, 5, 66, + 0, 0, 493, 496, 3, 106, 53, 0, 494, 496, 3, 108, 54, 0, 495, 492, 1, 0, + 0, 0, 495, 493, 1, 0, 0, 0, 495, 494, 1, 0, 0, 0, 496, 101, 1, 0, 0, 0, + 497, 502, 3, 114, 57, 0, 498, 499, 5, 8, 0, 0, 499, 501, 3, 114, 57, 0, + 500, 498, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, + 503, 1, 0, 0, 0, 503, 506, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 505, 507, + 5, 8, 0, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 103, 1, 0, + 0, 0, 508, 510, 3, 140, 70, 0, 509, 508, 1, 0, 0, 0, 509, 510, 1, 0, 0, + 0, 510, 511, 1, 0, 0, 0, 511, 512, 5, 7, 0, 0, 512, 520, 3, 86, 43, 0, + 513, 514, 3, 140, 70, 0, 514, 515, 5, 7, 0, 0, 515, 517, 1, 0, 0, 0, 516, + 513, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 520, + 3, 84, 42, 0, 519, 509, 1, 0, 0, 0, 519, 516, 1, 0, 0, 0, 520, 105, 1, + 0, 0, 0, 521, 522, 7, 2, 0, 0, 522, 107, 1, 0, 0, 0, 523, 524, 7, 3, 0, + 0, 524, 109, 1, 0, 0, 0, 525, 526, 3, 112, 56, 0, 526, 527, 5, 30, 0, 0, + 527, 528, 3, 112, 56, 0, 528, 111, 1, 0, 0, 0, 529, 533, 3, 78, 39, 0, + 530, 533, 3, 64, 32, 0, 531, 533, 3, 62, 31, 0, 532, 529, 1, 0, 0, 0, 532, + 530, 1, 0, 0, 0, 532, 531, 1, 0, 0, 0, 533, 113, 1, 0, 0, 0, 534, 535, + 6, 57, -1, 0, 535, 536, 3, 128, 64, 0, 536, 537, 3, 114, 57, 5, 537, 540, + 1, 0, 0, 0, 538, 540, 3, 116, 58, 0, 539, 534, 1, 0, 0, 0, 539, 538, 1, + 0, 0, 0, 540, 558, 1, 0, 0, 0, 541, 542, 10, 4, 0, 0, 542, 543, 3, 132, + 66, 0, 543, 544, 3, 114, 57, 5, 544, 557, 1, 0, 0, 0, 545, 546, 10, 3, + 0, 0, 546, 547, 3, 134, 67, 0, 547, 548, 3, 114, 57, 4, 548, 557, 1, 0, + 0, 0, 549, 550, 10, 2, 0, 0, 550, 552, 5, 32, 0, 0, 551, 553, 3, 114, 57, + 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, + 555, 5, 5, 0, 0, 555, 557, 3, 114, 57, 3, 556, 541, 1, 0, 0, 0, 556, 545, + 1, 0, 0, 0, 556, 549, 1, 0, 0, 0, 557, 560, 1, 0, 0, 0, 558, 556, 1, 0, + 0, 0, 558, 559, 1, 0, 0, 0, 559, 115, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, + 561, 562, 6, 58, -1, 0, 562, 563, 3, 118, 59, 0, 563, 582, 1, 0, 0, 0, + 564, 565, 10, 5, 0, 0, 565, 566, 3, 122, 61, 0, 566, 567, 3, 116, 58, 6, + 567, 581, 1, 0, 0, 0, 568, 569, 10, 4, 0, 0, 569, 570, 3, 120, 60, 0, 570, + 571, 3, 116, 58, 5, 571, 581, 1, 0, 0, 0, 572, 573, 10, 3, 0, 0, 573, 574, + 3, 124, 62, 0, 574, 575, 3, 116, 58, 4, 575, 581, 1, 0, 0, 0, 576, 577, + 10, 2, 0, 0, 577, 578, 3, 126, 63, 0, 578, 579, 3, 116, 58, 3, 579, 581, + 1, 0, 0, 0, 580, 564, 1, 0, 0, 0, 580, 568, 1, 0, 0, 0, 580, 572, 1, 0, + 0, 0, 580, 576, 1, 0, 0, 0, 581, 584, 1, 0, 0, 0, 582, 580, 1, 0, 0, 0, + 582, 583, 1, 0, 0, 0, 583, 117, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 585, + 586, 6, 59, -1, 0, 586, 603, 3, 96, 48, 0, 587, 603, 3, 110, 55, 0, 588, + 603, 3, 66, 33, 0, 589, 603, 3, 64, 32, 0, 590, 603, 3, 92, 46, 0, 591, + 603, 3, 62, 31, 0, 592, 596, 5, 11, 0, 0, 593, 597, 3, 18, 9, 0, 594, 597, + 3, 52, 26, 0, 595, 597, 3, 114, 57, 0, 596, 593, 1, 0, 0, 0, 596, 594, + 1, 0, 0, 0, 596, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 600, 5, 12, + 0, 0, 599, 601, 3, 140, 70, 0, 600, 599, 1, 0, 0, 0, 600, 601, 1, 0, 0, + 0, 601, 603, 1, 0, 0, 0, 602, 585, 1, 0, 0, 0, 602, 587, 1, 0, 0, 0, 602, + 588, 1, 0, 0, 0, 602, 589, 1, 0, 0, 0, 602, 590, 1, 0, 0, 0, 602, 591, + 1, 0, 0, 0, 602, 592, 1, 0, 0, 0, 603, 618, 1, 0, 0, 0, 604, 605, 10, 10, + 0, 0, 605, 606, 3, 136, 68, 0, 606, 607, 3, 118, 59, 11, 607, 617, 1, 0, + 0, 0, 608, 609, 10, 9, 0, 0, 609, 610, 3, 138, 69, 0, 610, 611, 3, 118, + 59, 10, 611, 617, 1, 0, 0, 0, 612, 613, 10, 8, 0, 0, 613, 614, 3, 130, + 65, 0, 614, 615, 3, 118, 59, 9, 615, 617, 1, 0, 0, 0, 616, 604, 1, 0, 0, + 0, 616, 608, 1, 0, 0, 0, 616, 612, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, + 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 119, 1, 0, 0, 0, 620, 618, + 1, 0, 0, 0, 621, 624, 7, 4, 0, 0, 622, 625, 3, 124, 62, 0, 623, 625, 3, + 122, 61, 0, 624, 622, 1, 0, 0, 0, 624, 623, 1, 0, 0, 0, 625, 121, 1, 0, + 0, 0, 626, 627, 7, 5, 0, 0, 627, 123, 1, 0, 0, 0, 628, 630, 5, 61, 0, 0, + 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, + 632, 5, 62, 0, 0, 632, 125, 1, 0, 0, 0, 633, 635, 5, 61, 0, 0, 634, 633, + 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 637, 5, 60, + 0, 0, 637, 127, 1, 0, 0, 0, 638, 639, 7, 6, 0, 0, 639, 129, 1, 0, 0, 0, + 640, 641, 7, 7, 0, 0, 641, 131, 1, 0, 0, 0, 642, 643, 5, 28, 0, 0, 643, + 133, 1, 0, 0, 0, 644, 645, 5, 29, 0, 0, 645, 135, 1, 0, 0, 0, 646, 647, + 7, 8, 0, 0, 647, 137, 1, 0, 0, 0, 648, 649, 7, 9, 0, 0, 649, 139, 1, 0, + 0, 0, 650, 651, 5, 32, 0, 0, 651, 141, 1, 0, 0, 0, 67, 145, 160, 168, 172, + 183, 187, 195, 202, 208, 216, 223, 229, 234, 243, 249, 253, 257, 266, 273, + 281, 286, 306, 317, 326, 339, 341, 354, 357, 360, 367, 372, 383, 389, 393, + 402, 406, 416, 420, 422, 445, 456, 464, 471, 478, 482, 488, 495, 502, 506, + 509, 516, 519, 532, 539, 552, 556, 558, 580, 582, 596, 600, 602, 616, 618, + 624, 629, 634, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -495,65 +498,64 @@ const ( FqlParserRULE_forExpressionSource = 10 FqlParserRULE_forExpressionClause = 11 FqlParserRULE_forExpressionStatement = 12 - FqlParserRULE_forExpressionBody = 13 - FqlParserRULE_forExpressionReturn = 14 - FqlParserRULE_filterClause = 15 - FqlParserRULE_limitClause = 16 - FqlParserRULE_limitClauseValue = 17 - FqlParserRULE_sortClause = 18 - FqlParserRULE_sortClauseExpression = 19 - FqlParserRULE_collectClause = 20 - FqlParserRULE_collectSelector = 21 - FqlParserRULE_collectGrouping = 22 - FqlParserRULE_collectAggregator = 23 - FqlParserRULE_collectAggregateSelector = 24 - FqlParserRULE_collectGroupVariable = 25 - FqlParserRULE_collectCounter = 26 - FqlParserRULE_waitForExpression = 27 - FqlParserRULE_waitForEventName = 28 - FqlParserRULE_waitForEventSource = 29 - FqlParserRULE_optionsClause = 30 - FqlParserRULE_timeoutClause = 31 - FqlParserRULE_param = 32 - FqlParserRULE_variable = 33 - FqlParserRULE_literal = 34 - FqlParserRULE_arrayLiteral = 35 - FqlParserRULE_objectLiteral = 36 - FqlParserRULE_booleanLiteral = 37 - FqlParserRULE_stringLiteral = 38 - FqlParserRULE_floatLiteral = 39 - FqlParserRULE_integerLiteral = 40 - FqlParserRULE_noneLiteral = 41 - FqlParserRULE_propertyAssignment = 42 - FqlParserRULE_computedPropertyName = 43 - FqlParserRULE_propertyName = 44 - FqlParserRULE_namespaceIdentifier = 45 - FqlParserRULE_namespace = 46 - FqlParserRULE_memberExpression = 47 - FqlParserRULE_memberExpressionSource = 48 - FqlParserRULE_functionCallExpression = 49 - FqlParserRULE_functionCall = 50 - FqlParserRULE_functionName = 51 - FqlParserRULE_argumentList = 52 - FqlParserRULE_memberExpressionPath = 53 - FqlParserRULE_safeReservedWord = 54 - FqlParserRULE_unsafeReservedWord = 55 - FqlParserRULE_rangeOperator = 56 - FqlParserRULE_rangeOperand = 57 - FqlParserRULE_expression = 58 - FqlParserRULE_predicate = 59 - FqlParserRULE_expressionAtom = 60 - FqlParserRULE_arrayOperator = 61 - FqlParserRULE_equalityOperator = 62 - FqlParserRULE_inOperator = 63 - FqlParserRULE_likeOperator = 64 - FqlParserRULE_unaryOperator = 65 - FqlParserRULE_regexpOperator = 66 - FqlParserRULE_logicalAndOperator = 67 - FqlParserRULE_logicalOrOperator = 68 - FqlParserRULE_multiplicativeOperator = 69 - FqlParserRULE_additiveOperator = 70 - FqlParserRULE_errorOperator = 71 + FqlParserRULE_forExpressionReturn = 13 + FqlParserRULE_filterClause = 14 + FqlParserRULE_limitClause = 15 + FqlParserRULE_limitClauseValue = 16 + FqlParserRULE_sortClause = 17 + FqlParserRULE_sortClauseExpression = 18 + FqlParserRULE_collectClause = 19 + FqlParserRULE_collectSelector = 20 + FqlParserRULE_collectGrouping = 21 + FqlParserRULE_collectAggregator = 22 + FqlParserRULE_collectAggregateSelector = 23 + FqlParserRULE_collectGroupVariable = 24 + FqlParserRULE_collectCounter = 25 + FqlParserRULE_waitForExpression = 26 + FqlParserRULE_waitForEventName = 27 + FqlParserRULE_waitForEventSource = 28 + FqlParserRULE_optionsClause = 29 + FqlParserRULE_timeoutClause = 30 + FqlParserRULE_param = 31 + FqlParserRULE_variable = 32 + FqlParserRULE_literal = 33 + FqlParserRULE_arrayLiteral = 34 + FqlParserRULE_objectLiteral = 35 + FqlParserRULE_booleanLiteral = 36 + FqlParserRULE_stringLiteral = 37 + FqlParserRULE_floatLiteral = 38 + FqlParserRULE_integerLiteral = 39 + FqlParserRULE_noneLiteral = 40 + FqlParserRULE_propertyAssignment = 41 + FqlParserRULE_computedPropertyName = 42 + FqlParserRULE_propertyName = 43 + FqlParserRULE_namespaceIdentifier = 44 + FqlParserRULE_namespace = 45 + FqlParserRULE_memberExpression = 46 + FqlParserRULE_memberExpressionSource = 47 + FqlParserRULE_functionCallExpression = 48 + FqlParserRULE_functionCall = 49 + FqlParserRULE_functionName = 50 + FqlParserRULE_argumentList = 51 + FqlParserRULE_memberExpressionPath = 52 + FqlParserRULE_safeReservedWord = 53 + FqlParserRULE_unsafeReservedWord = 54 + FqlParserRULE_rangeOperator = 55 + FqlParserRULE_rangeOperand = 56 + FqlParserRULE_expression = 57 + FqlParserRULE_predicate = 58 + FqlParserRULE_expressionAtom = 59 + FqlParserRULE_arrayOperator = 60 + FqlParserRULE_equalityOperator = 61 + FqlParserRULE_inOperator = 62 + FqlParserRULE_likeOperator = 63 + FqlParserRULE_unaryOperator = 64 + FqlParserRULE_regexpOperator = 65 + FqlParserRULE_logicalAndOperator = 66 + FqlParserRULE_logicalOrOperator = 67 + FqlParserRULE_multiplicativeOperator = 68 + FqlParserRULE_additiveOperator = 69 + FqlParserRULE_errorOperator = 70 ) // IProgramContext is an interface to support dynamic dispatch. @@ -697,7 +699,7 @@ func (p *FqlParser) Program() (localctx IProgramContext) { var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(147) + p.SetState(145) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -709,12 +711,12 @@ func (p *FqlParser) Program() (localctx IProgramContext) { for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(144) + p.SetState(142) p.Head() } } - p.SetState(149) + p.SetState(147) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -725,7 +727,7 @@ func (p *FqlParser) Program() (localctx IProgramContext) { } } { - p.SetState(150) + p.SetState(148) p.Body() } @@ -839,7 +841,7 @@ func (p *FqlParser) Head() (localctx IHeadContext) { p.EnterRule(localctx, 2, FqlParserRULE_head) p.EnterOuterAlt(localctx, 1) { - p.SetState(152) + p.SetState(150) p.UseExpression() } @@ -953,7 +955,7 @@ func (p *FqlParser) UseExpression() (localctx IUseExpressionContext) { p.EnterRule(localctx, 4, FqlParserRULE_useExpression) p.EnterOuterAlt(localctx, 1) { - p.SetState(154) + p.SetState(152) p.Use() } @@ -1072,7 +1074,7 @@ func (p *FqlParser) Use() (localctx IUseContext) { p.EnterRule(localctx, 6, FqlParserRULE_use) p.EnterOuterAlt(localctx, 1) { - p.SetState(156) + p.SetState(154) p.Match(FqlParserUse) if p.HasError() { // Recognition error - abort rule @@ -1080,7 +1082,7 @@ func (p *FqlParser) Use() (localctx IUseContext) { } } { - p.SetState(157) + p.SetState(155) p.NamespaceIdentifier() } @@ -1238,7 +1240,7 @@ func (p *FqlParser) Body() (localctx IBodyContext) { var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(162) + p.SetState(160) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1250,12 +1252,12 @@ func (p *FqlParser) Body() (localctx IBodyContext) { for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(159) + p.SetState(157) p.BodyStatement() } } - p.SetState(164) + p.SetState(162) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1266,7 +1268,7 @@ func (p *FqlParser) Body() (localctx IBodyContext) { } } { - p.SetState(165) + p.SetState(163) p.BodyExpression() } @@ -1412,7 +1414,7 @@ func (s *BodyStatementContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) BodyStatement() (localctx IBodyStatementContext) { localctx = NewBodyStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 10, FqlParserRULE_bodyStatement) - p.SetState(170) + p.SetState(168) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1422,21 +1424,21 @@ func (p *FqlParser) BodyStatement() (localctx IBodyStatementContext) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(167) + p.SetState(165) p.VariableDeclaration() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(168) + p.SetState(166) p.FunctionCallExpression() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(169) + p.SetState(167) p.WaitForExpression() } @@ -1569,7 +1571,7 @@ func (s *BodyExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FqlParser) BodyExpression() (localctx IBodyExpressionContext) { localctx = NewBodyExpressionContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 12, FqlParserRULE_bodyExpression) - p.SetState(174) + p.SetState(172) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1579,14 +1581,14 @@ func (p *FqlParser) BodyExpression() (localctx IBodyExpressionContext) { case FqlParserReturn: p.EnterOuterAlt(localctx, 1) { - p.SetState(172) + p.SetState(170) p.ReturnExpression() } case FqlParserFor: p.EnterOuterAlt(localctx, 2) { - p.SetState(173) + p.SetState(171) p.ForExpression() } @@ -1753,7 +1755,7 @@ func (p *FqlParser) VariableDeclaration() (localctx IVariableDeclarationContext) p.EnterRule(localctx, 14, FqlParserRULE_variableDeclaration) var _la int - p.SetState(185) + p.SetState(183) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -1763,7 +1765,7 @@ func (p *FqlParser) VariableDeclaration() (localctx IVariableDeclarationContext) case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(176) + p.SetState(174) p.Match(FqlParserLet) if p.HasError() { // Recognition error - abort rule @@ -1771,7 +1773,7 @@ func (p *FqlParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(177) + p.SetState(175) var _lt = p.GetTokenStream().LT(1) @@ -1789,7 +1791,7 @@ func (p *FqlParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(178) + p.SetState(176) p.Match(FqlParserAssign) if p.HasError() { // Recognition error - abort rule @@ -1797,14 +1799,14 @@ func (p *FqlParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(179) + p.SetState(177) p.expression(0) } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(180) + p.SetState(178) p.Match(FqlParserLet) if p.HasError() { // Recognition error - abort rule @@ -1812,11 +1814,11 @@ func (p *FqlParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(181) + p.SetState(179) p.SafeReservedWord() } { - p.SetState(182) + p.SetState(180) p.Match(FqlParserAssign) if p.HasError() { // Recognition error - abort rule @@ -1824,7 +1826,7 @@ func (p *FqlParser) VariableDeclaration() (localctx IVariableDeclarationContext) } } { - p.SetState(183) + p.SetState(181) p.expression(0) } @@ -1952,19 +1954,19 @@ func (p *FqlParser) ReturnExpression() (localctx IReturnExpressionContext) { p.EnterRule(localctx, 16, FqlParserRULE_returnExpression) p.EnterOuterAlt(localctx, 1) { - p.SetState(187) + p.SetState(185) p.Match(FqlParserReturn) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(189) + p.SetState(187) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 5, p.GetParserRuleContext()) == 1 { { - p.SetState(188) + p.SetState(186) p.Match(FqlParserDistinct) if p.HasError() { // Recognition error - abort rule @@ -1976,7 +1978,7 @@ func (p *FqlParser) ReturnExpression() (localctx IReturnExpressionContext) { goto errorExit } { - p.SetState(191) + p.SetState(189) p.expression(0) } @@ -2021,8 +2023,10 @@ type IForExpressionContext interface { Identifier(i int) antlr.TerminalNode IgnoreIdentifier() antlr.TerminalNode Comma() antlr.TerminalNode - AllForExpressionBody() []IForExpressionBodyContext - ForExpressionBody(i int) IForExpressionBodyContext + AllForExpressionClause() []IForExpressionClauseContext + ForExpressionClause(i int) IForExpressionClauseContext + AllForExpressionStatement() []IForExpressionStatementContext + ForExpressionStatement(i int) IForExpressionStatementContext While() antlr.TerminalNode Expression() IExpressionContext Do() antlr.TerminalNode @@ -2129,20 +2133,61 @@ func (s *ForExpressionContext) Comma() antlr.TerminalNode { return s.GetToken(FqlParserComma, 0) } -func (s *ForExpressionContext) AllForExpressionBody() []IForExpressionBodyContext { +func (s *ForExpressionContext) AllForExpressionClause() []IForExpressionClauseContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IForExpressionClauseContext); ok { + len++ + } + } + + tst := make([]IForExpressionClauseContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IForExpressionClauseContext); ok { + tst[i] = t.(IForExpressionClauseContext) + i++ + } + } + + return tst +} + +func (s *ForExpressionContext) ForExpressionClause(i int) IForExpressionClauseContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForExpressionClauseContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IForExpressionClauseContext) +} + +func (s *ForExpressionContext) AllForExpressionStatement() []IForExpressionStatementContext { children := s.GetChildren() len := 0 for _, ctx := range children { - if _, ok := ctx.(IForExpressionBodyContext); ok { + if _, ok := ctx.(IForExpressionStatementContext); ok { len++ } } - tst := make([]IForExpressionBodyContext, len) + tst := make([]IForExpressionStatementContext, len) i := 0 for _, ctx := range children { - if t, ok := ctx.(IForExpressionBodyContext); ok { - tst[i] = t.(IForExpressionBodyContext) + if t, ok := ctx.(IForExpressionStatementContext); ok { + tst[i] = t.(IForExpressionStatementContext) i++ } } @@ -2150,11 +2195,11 @@ func (s *ForExpressionContext) AllForExpressionBody() []IForExpressionBodyContex return tst } -func (s *ForExpressionContext) ForExpressionBody(i int) IForExpressionBodyContext { +func (s *ForExpressionContext) ForExpressionStatement(i int) IForExpressionStatementContext { var t antlr.RuleContext j := 0 for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForExpressionBodyContext); ok { + if _, ok := ctx.(IForExpressionStatementContext); ok { if j == i { t = ctx.(antlr.RuleContext) break @@ -2167,7 +2212,7 @@ func (s *ForExpressionContext) ForExpressionBody(i int) IForExpressionBodyContex return nil } - return t.(IForExpressionBodyContext) + return t.(IForExpressionStatementContext) } func (s *ForExpressionContext) While() antlr.TerminalNode { @@ -2231,17 +2276,17 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { var _alt int - p.SetState(224) + p.SetState(234) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 10, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 12, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(193) + p.SetState(191) p.Match(FqlParserFor) if p.HasError() { // Recognition error - abort rule @@ -2249,7 +2294,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { } } { - p.SetState(194) + p.SetState(192) var _lt = p.GetTokenStream().LT(1) @@ -2266,7 +2311,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { p.Consume() } } - p.SetState(197) + p.SetState(195) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2275,7 +2320,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { if _la == FqlParserComma { { - p.SetState(195) + p.SetState(193) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -2283,7 +2328,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { } } { - p.SetState(196) + p.SetState(194) var _m = p.Match(FqlParserIdentifier) @@ -2296,7 +2341,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { } { - p.SetState(199) + p.SetState(197) p.Match(FqlParserIn) if p.HasError() { // Recognition error - abort rule @@ -2304,10 +2349,10 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { } } { - p.SetState(200) + p.SetState(198) p.ForExpressionSource() } - p.SetState(204) + p.SetState(202) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2319,12 +2364,12 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(201) - p.ForExpressionBody() + p.SetState(199) + p.ForExpressionClause() } } - p.SetState(206) + p.SetState(204) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2334,15 +2379,42 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { goto errorExit } } + p.SetState(208) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 8, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(205) + p.ForExpressionStatement() + } + + } + p.SetState(210) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 8, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } { - p.SetState(207) + p.SetState(211) p.ForExpressionReturn() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(209) + p.SetState(213) p.Match(FqlParserFor) if p.HasError() { // Recognition error - abort rule @@ -2350,7 +2422,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { } } { - p.SetState(210) + p.SetState(214) var _lt = p.GetTokenStream().LT(1) @@ -2367,7 +2439,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { p.Consume() } } - p.SetState(212) + p.SetState(216) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2376,7 +2448,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { if _la == FqlParserDo { { - p.SetState(211) + p.SetState(215) p.Match(FqlParserDo) if p.HasError() { // Recognition error - abort rule @@ -2386,7 +2458,7 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { } { - p.SetState(214) + p.SetState(218) p.Match(FqlParserWhile) if p.HasError() { // Recognition error - abort rule @@ -2394,38 +2466,65 @@ func (p *FqlParser) ForExpression() (localctx IForExpressionContext) { } } { - p.SetState(215) + p.SetState(219) p.expression(0) } - p.SetState(219) + p.SetState(223) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 10, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(220) + p.ForExpressionClause() + } + + } + p.SetState(225) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 10, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + p.SetState(229) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 9, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 11, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(216) - p.ForExpressionBody() + p.SetState(226) + p.ForExpressionStatement() } } - p.SetState(221) + p.SetState(231) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 9, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 11, p.GetParserRuleContext()) if p.HasError() { goto errorExit } } { - p.SetState(222) + p.SetState(232) p.ForExpressionReturn() } @@ -2643,59 +2742,59 @@ func (s *ForExpressionSourceContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *FqlParser) ForExpressionSource() (localctx IForExpressionSourceContext) { localctx = NewForExpressionSourceContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 20, FqlParserRULE_forExpressionSource) - p.SetState(233) + p.SetState(243) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 11, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 13, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(226) + p.SetState(236) p.FunctionCallExpression() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(227) + p.SetState(237) p.ArrayLiteral() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(228) + p.SetState(238) p.ObjectLiteral() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(229) + p.SetState(239) p.Variable() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(230) + p.SetState(240) p.MemberExpression() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(231) + p.SetState(241) p.RangeOperator() } case 7: p.EnterOuterAlt(localctx, 7) { - p.SetState(232) + p.SetState(242) p.Param() } @@ -2862,7 +2961,7 @@ func (s *ForExpressionClauseContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *FqlParser) ForExpressionClause() (localctx IForExpressionClauseContext) { localctx = NewForExpressionClauseContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 22, FqlParserRULE_forExpressionClause) - p.SetState(239) + p.SetState(249) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -2872,28 +2971,28 @@ func (p *FqlParser) ForExpressionClause() (localctx IForExpressionClauseContext) case FqlParserLimit: p.EnterOuterAlt(localctx, 1) { - p.SetState(235) + p.SetState(245) p.LimitClause() } case FqlParserSort: p.EnterOuterAlt(localctx, 2) { - p.SetState(236) + p.SetState(246) p.SortClause() } case FqlParserFilter: p.EnterOuterAlt(localctx, 3) { - p.SetState(237) + p.SetState(247) p.FilterClause() } case FqlParserCollect: p.EnterOuterAlt(localctx, 4) { - p.SetState(238) + p.SetState(248) p.CollectClause() } @@ -3027,24 +3126,24 @@ func (s *ForExpressionStatementContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *FqlParser) ForExpressionStatement() (localctx IForExpressionStatementContext) { localctx = NewForExpressionStatementContext(p, p.GetParserRuleContext(), p.GetState()) p.EnterRule(localctx, 24, FqlParserRULE_forExpressionStatement) - p.SetState(243) + p.SetState(253) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 13, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 15, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(241) + p.SetState(251) p.VariableDeclaration() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(242) + p.SetState(252) p.FunctionCallExpression() } @@ -3065,156 +3164,6 @@ errorExit: goto errorExit // Trick to prevent compiler error if the label is not used } -// IForExpressionBodyContext is an interface to support dynamic dispatch. -type IForExpressionBodyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // Getter signatures - ForExpressionStatement() IForExpressionStatementContext - ForExpressionClause() IForExpressionClauseContext - - // IsForExpressionBodyContext differentiates from other interfaces. - IsForExpressionBodyContext() -} - -type ForExpressionBodyContext struct { - antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyForExpressionBodyContext() *ForExpressionBodyContext { - var p = new(ForExpressionBodyContext) - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = FqlParserRULE_forExpressionBody - return p -} - -func InitEmptyForExpressionBodyContext(p *ForExpressionBodyContext) { - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) - p.RuleIndex = FqlParserRULE_forExpressionBody -} - -func (*ForExpressionBodyContext) IsForExpressionBodyContext() {} - -func NewForExpressionBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ForExpressionBodyContext { - var p = new(ForExpressionBodyContext) - - antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) - - p.parser = parser - p.RuleIndex = FqlParserRULE_forExpressionBody - - return p -} - -func (s *ForExpressionBodyContext) GetParser() antlr.Parser { return s.parser } - -func (s *ForExpressionBodyContext) ForExpressionStatement() IForExpressionStatementContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForExpressionStatementContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IForExpressionStatementContext) -} - -func (s *ForExpressionBodyContext) ForExpressionClause() IForExpressionClauseContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForExpressionClauseContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IForExpressionClauseContext) -} - -func (s *ForExpressionBodyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *ForExpressionBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *ForExpressionBodyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(FqlParserListener); ok { - listenerT.EnterForExpressionBody(s) - } -} - -func (s *ForExpressionBodyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(FqlParserListener); ok { - listenerT.ExitForExpressionBody(s) - } -} - -func (s *ForExpressionBodyContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case FqlParserVisitor: - return t.VisitForExpressionBody(s) - - default: - return t.VisitChildren(s) - } -} - -func (p *FqlParser) ForExpressionBody() (localctx IForExpressionBodyContext) { - localctx = NewForExpressionBodyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 26, FqlParserRULE_forExpressionBody) - p.SetState(247) - p.GetErrorHandler().Sync(p) - if p.HasError() { - goto errorExit - } - - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 14, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(245) - p.ForExpressionStatement() - } - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(246) - p.ForExpressionClause() - } - - case antlr.ATNInvalidAltNumber: - goto errorExit - } - -errorExit: - if p.HasError() { - v := p.GetError() - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - p.SetError(nil) - } - p.ExitRule() - return localctx - goto errorExit // Trick to prevent compiler error if the label is not used -} - // IForExpressionReturnContext is an interface to support dynamic dispatch. type IForExpressionReturnContext interface { antlr.ParserRuleContext @@ -3326,8 +3275,8 @@ func (s *ForExpressionReturnContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *FqlParser) ForExpressionReturn() (localctx IForExpressionReturnContext) { localctx = NewForExpressionReturnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 28, FqlParserRULE_forExpressionReturn) - p.SetState(251) + p.EnterRule(localctx, 26, FqlParserRULE_forExpressionReturn) + p.SetState(257) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3337,14 +3286,14 @@ func (p *FqlParser) ForExpressionReturn() (localctx IForExpressionReturnContext) case FqlParserReturn: p.EnterOuterAlt(localctx, 1) { - p.SetState(249) + p.SetState(255) p.ReturnExpression() } case FqlParserFor: p.EnterOuterAlt(localctx, 2) { - p.SetState(250) + p.SetState(256) p.ForExpression() } @@ -3465,10 +3414,10 @@ func (s *FilterClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) FilterClause() (localctx IFilterClauseContext) { localctx = NewFilterClauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 30, FqlParserRULE_filterClause) + p.EnterRule(localctx, 28, FqlParserRULE_filterClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(253) + p.SetState(259) p.Match(FqlParserFilter) if p.HasError() { // Recognition error - abort rule @@ -3476,7 +3425,7 @@ func (p *FqlParser) FilterClause() (localctx IFilterClauseContext) { } } { - p.SetState(254) + p.SetState(260) p.expression(0) } @@ -3623,12 +3572,12 @@ func (s *LimitClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) LimitClause() (localctx ILimitClauseContext) { localctx = NewLimitClauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 32, FqlParserRULE_limitClause) + p.EnterRule(localctx, 30, FqlParserRULE_limitClause) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(256) + p.SetState(262) p.Match(FqlParserLimit) if p.HasError() { // Recognition error - abort rule @@ -3636,10 +3585,10 @@ func (p *FqlParser) LimitClause() (localctx ILimitClauseContext) { } } { - p.SetState(257) + p.SetState(263) p.LimitClauseValue() } - p.SetState(260) + p.SetState(266) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -3648,7 +3597,7 @@ func (p *FqlParser) LimitClause() (localctx ILimitClauseContext) { if _la == FqlParserComma { { - p.SetState(258) + p.SetState(264) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -3656,7 +3605,7 @@ func (p *FqlParser) LimitClause() (localctx ILimitClauseContext) { } } { - p.SetState(259) + p.SetState(265) p.LimitClauseValue() } @@ -3837,46 +3786,46 @@ func (s *LimitClauseValueContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FqlParser) LimitClauseValue() (localctx ILimitClauseValueContext) { localctx = NewLimitClauseValueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 34, FqlParserRULE_limitClauseValue) - p.SetState(267) + p.EnterRule(localctx, 32, FqlParserRULE_limitClauseValue) + p.SetState(273) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 17, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 18, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(262) + p.SetState(268) p.IntegerLiteral() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(263) + p.SetState(269) p.Param() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(264) + p.SetState(270) p.Variable() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(265) + p.SetState(271) p.FunctionCallExpression() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(266) + p.SetState(272) p.MemberExpression() } @@ -4032,12 +3981,12 @@ func (s *SortClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FqlParser) SortClause() (localctx ISortClauseContext) { localctx = NewSortClauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 36, FqlParserRULE_sortClause) + p.EnterRule(localctx, 34, FqlParserRULE_sortClause) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(269) + p.SetState(275) p.Match(FqlParserSort) if p.HasError() { // Recognition error - abort rule @@ -4045,10 +3994,10 @@ func (p *FqlParser) SortClause() (localctx ISortClauseContext) { } } { - p.SetState(270) + p.SetState(276) p.SortClauseExpression() } - p.SetState(275) + p.SetState(281) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4057,7 +4006,7 @@ func (p *FqlParser) SortClause() (localctx ISortClauseContext) { for _la == FqlParserComma { { - p.SetState(271) + p.SetState(277) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -4065,11 +4014,11 @@ func (p *FqlParser) SortClause() (localctx ISortClauseContext) { } } { - p.SetState(272) + p.SetState(278) p.SortClauseExpression() } - p.SetState(277) + p.SetState(283) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4189,18 +4138,18 @@ func (s *SortClauseExpressionContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *FqlParser) SortClauseExpression() (localctx ISortClauseExpressionContext) { localctx = NewSortClauseExpressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 38, FqlParserRULE_sortClauseExpression) + p.EnterRule(localctx, 36, FqlParserRULE_sortClauseExpression) p.EnterOuterAlt(localctx, 1) { - p.SetState(278) + p.SetState(284) p.expression(0) } - p.SetState(280) + p.SetState(286) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 19, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 20, p.GetParserRuleContext()) == 1 { { - p.SetState(279) + p.SetState(285) p.Match(FqlParserSortDirection) if p.HasError() { // Recognition error - abort rule @@ -4375,18 +4324,18 @@ func (s *CollectClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) CollectClause() (localctx ICollectClauseContext) { localctx = NewCollectClauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 40, FqlParserRULE_collectClause) - p.SetState(300) + p.EnterRule(localctx, 38, FqlParserRULE_collectClause) + p.SetState(306) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 20, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 21, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(282) + p.SetState(288) p.Match(FqlParserCollect) if p.HasError() { // Recognition error - abort rule @@ -4394,14 +4343,14 @@ func (p *FqlParser) CollectClause() (localctx ICollectClauseContext) { } } { - p.SetState(283) + p.SetState(289) p.CollectCounter() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(284) + p.SetState(290) p.Match(FqlParserCollect) if p.HasError() { // Recognition error - abort rule @@ -4409,14 +4358,14 @@ func (p *FqlParser) CollectClause() (localctx ICollectClauseContext) { } } { - p.SetState(285) + p.SetState(291) p.CollectAggregator() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(286) + p.SetState(292) p.Match(FqlParserCollect) if p.HasError() { // Recognition error - abort rule @@ -4424,18 +4373,18 @@ func (p *FqlParser) CollectClause() (localctx ICollectClauseContext) { } } { - p.SetState(287) + p.SetState(293) p.CollectGrouping() } { - p.SetState(288) + p.SetState(294) p.CollectAggregator() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(290) + p.SetState(296) p.Match(FqlParserCollect) if p.HasError() { // Recognition error - abort rule @@ -4443,18 +4392,18 @@ func (p *FqlParser) CollectClause() (localctx ICollectClauseContext) { } } { - p.SetState(291) + p.SetState(297) p.CollectGrouping() } { - p.SetState(292) + p.SetState(298) p.CollectGroupVariable() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(294) + p.SetState(300) p.Match(FqlParserCollect) if p.HasError() { // Recognition error - abort rule @@ -4462,18 +4411,18 @@ func (p *FqlParser) CollectClause() (localctx ICollectClauseContext) { } } { - p.SetState(295) + p.SetState(301) p.CollectGrouping() } { - p.SetState(296) + p.SetState(302) p.CollectCounter() } case 6: p.EnterOuterAlt(localctx, 6) { - p.SetState(298) + p.SetState(304) p.Match(FqlParserCollect) if p.HasError() { // Recognition error - abort rule @@ -4481,7 +4430,7 @@ func (p *FqlParser) CollectClause() (localctx ICollectClauseContext) { } } { - p.SetState(299) + p.SetState(305) p.CollectGrouping() } @@ -4606,10 +4555,10 @@ func (s *CollectSelectorContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *FqlParser) CollectSelector() (localctx ICollectSelectorContext) { localctx = NewCollectSelectorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 42, FqlParserRULE_collectSelector) + p.EnterRule(localctx, 40, FqlParserRULE_collectSelector) p.EnterOuterAlt(localctx, 1) { - p.SetState(302) + p.SetState(308) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -4617,7 +4566,7 @@ func (p *FqlParser) CollectSelector() (localctx ICollectSelectorContext) { } } { - p.SetState(303) + p.SetState(309) p.Match(FqlParserAssign) if p.HasError() { // Recognition error - abort rule @@ -4625,7 +4574,7 @@ func (p *FqlParser) CollectSelector() (localctx ICollectSelectorContext) { } } { - p.SetState(304) + p.SetState(310) p.expression(0) } @@ -4772,15 +4721,15 @@ func (s *CollectGroupingContext) Accept(visitor antlr.ParseTreeVisitor) interfac func (p *FqlParser) CollectGrouping() (localctx ICollectGroupingContext) { localctx = NewCollectGroupingContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 44, FqlParserRULE_collectGrouping) + p.EnterRule(localctx, 42, FqlParserRULE_collectGrouping) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(306) + p.SetState(312) p.CollectSelector() } - p.SetState(311) + p.SetState(317) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4789,7 +4738,7 @@ func (p *FqlParser) CollectGrouping() (localctx ICollectGroupingContext) { for _la == FqlParserComma { { - p.SetState(307) + p.SetState(313) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -4797,11 +4746,11 @@ func (p *FqlParser) CollectGrouping() (localctx ICollectGroupingContext) { } } { - p.SetState(308) + p.SetState(314) p.CollectSelector() } - p.SetState(313) + p.SetState(319) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4957,12 +4906,12 @@ func (s *CollectAggregatorContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *FqlParser) CollectAggregator() (localctx ICollectAggregatorContext) { localctx = NewCollectAggregatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 46, FqlParserRULE_collectAggregator) + p.EnterRule(localctx, 44, FqlParserRULE_collectAggregator) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(314) + p.SetState(320) p.Match(FqlParserAggregate) if p.HasError() { // Recognition error - abort rule @@ -4970,10 +4919,10 @@ func (p *FqlParser) CollectAggregator() (localctx ICollectAggregatorContext) { } } { - p.SetState(315) + p.SetState(321) p.CollectAggregateSelector() } - p.SetState(320) + p.SetState(326) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -4982,7 +4931,7 @@ func (p *FqlParser) CollectAggregator() (localctx ICollectAggregatorContext) { for _la == FqlParserComma { { - p.SetState(316) + p.SetState(322) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -4990,11 +4939,11 @@ func (p *FqlParser) CollectAggregator() (localctx ICollectAggregatorContext) { } } { - p.SetState(317) + p.SetState(323) p.CollectAggregateSelector() } - p.SetState(322) + p.SetState(328) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -5119,10 +5068,10 @@ func (s *CollectAggregateSelectorContext) Accept(visitor antlr.ParseTreeVisitor) func (p *FqlParser) CollectAggregateSelector() (localctx ICollectAggregateSelectorContext) { localctx = NewCollectAggregateSelectorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 48, FqlParserRULE_collectAggregateSelector) + p.EnterRule(localctx, 46, FqlParserRULE_collectAggregateSelector) p.EnterOuterAlt(localctx, 1) { - p.SetState(323) + p.SetState(329) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -5130,7 +5079,7 @@ func (p *FqlParser) CollectAggregateSelector() (localctx ICollectAggregateSelect } } { - p.SetState(324) + p.SetState(330) p.Match(FqlParserAssign) if p.HasError() { // Recognition error - abort rule @@ -5138,7 +5087,7 @@ func (p *FqlParser) CollectAggregateSelector() (localctx ICollectAggregateSelect } } { - p.SetState(325) + p.SetState(331) p.FunctionCallExpression() } @@ -5269,18 +5218,18 @@ func (s *CollectGroupVariableContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *FqlParser) CollectGroupVariable() (localctx ICollectGroupVariableContext) { localctx = NewCollectGroupVariableContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 50, FqlParserRULE_collectGroupVariable) - p.SetState(335) + p.EnterRule(localctx, 48, FqlParserRULE_collectGroupVariable) + p.SetState(341) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 24, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 25, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(327) + p.SetState(333) p.Match(FqlParserInto) if p.HasError() { // Recognition error - abort rule @@ -5288,14 +5237,14 @@ func (p *FqlParser) CollectGroupVariable() (localctx ICollectGroupVariableContex } } { - p.SetState(328) + p.SetState(334) p.CollectSelector() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(329) + p.SetState(335) p.Match(FqlParserInto) if p.HasError() { // Recognition error - abort rule @@ -5303,19 +5252,19 @@ func (p *FqlParser) CollectGroupVariable() (localctx ICollectGroupVariableContex } } { - p.SetState(330) + p.SetState(336) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(333) + p.SetState(339) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 23, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 24, p.GetParserRuleContext()) == 1 { { - p.SetState(331) + p.SetState(337) p.Match(FqlParserKeep) if p.HasError() { // Recognition error - abort rule @@ -5323,7 +5272,7 @@ func (p *FqlParser) CollectGroupVariable() (localctx ICollectGroupVariableContex } } { - p.SetState(332) + p.SetState(338) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -5449,10 +5398,10 @@ func (s *CollectCounterContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FqlParser) CollectCounter() (localctx ICollectCounterContext) { localctx = NewCollectCounterContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 52, FqlParserRULE_collectCounter) + p.EnterRule(localctx, 50, FqlParserRULE_collectCounter) p.EnterOuterAlt(localctx, 1) { - p.SetState(337) + p.SetState(343) p.Match(FqlParserWith) if p.HasError() { // Recognition error - abort rule @@ -5460,7 +5409,7 @@ func (p *FqlParser) CollectCounter() (localctx ICollectCounterContext) { } } { - p.SetState(338) + p.SetState(344) p.Match(FqlParserCount) if p.HasError() { // Recognition error - abort rule @@ -5468,7 +5417,7 @@ func (p *FqlParser) CollectCounter() (localctx ICollectCounterContext) { } } { - p.SetState(339) + p.SetState(345) p.Match(FqlParserInto) if p.HasError() { // Recognition error - abort rule @@ -5476,7 +5425,7 @@ func (p *FqlParser) CollectCounter() (localctx ICollectCounterContext) { } } { - p.SetState(340) + p.SetState(346) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -5674,10 +5623,10 @@ func (s *WaitForExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *FqlParser) WaitForExpression() (localctx IWaitForExpressionContext) { localctx = NewWaitForExpressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 54, FqlParserRULE_waitForExpression) + p.EnterRule(localctx, 52, FqlParserRULE_waitForExpression) p.EnterOuterAlt(localctx, 1) { - p.SetState(342) + p.SetState(348) p.Match(FqlParserWaitfor) if p.HasError() { // Recognition error - abort rule @@ -5685,7 +5634,7 @@ func (p *FqlParser) WaitForExpression() (localctx IWaitForExpressionContext) { } } { - p.SetState(343) + p.SetState(349) p.Match(FqlParserEvent) if p.HasError() { // Recognition error - abort rule @@ -5693,11 +5642,11 @@ func (p *FqlParser) WaitForExpression() (localctx IWaitForExpressionContext) { } } { - p.SetState(344) + p.SetState(350) p.WaitForEventName() } { - p.SetState(345) + p.SetState(351) p.Match(FqlParserIn) if p.HasError() { // Recognition error - abort rule @@ -5705,39 +5654,39 @@ func (p *FqlParser) WaitForExpression() (localctx IWaitForExpressionContext) { } } { - p.SetState(346) + p.SetState(352) p.WaitForEventSource() } - p.SetState(348) + p.SetState(354) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 25, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 26, p.GetParserRuleContext()) == 1 { { - p.SetState(347) + p.SetState(353) p.OptionsClause() } } else if p.HasError() { // JIM goto errorExit } - p.SetState(351) + p.SetState(357) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 26, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 27, p.GetParserRuleContext()) == 1 { { - p.SetState(350) + p.SetState(356) p.FilterClause() } } else if p.HasError() { // JIM goto errorExit } - p.SetState(354) + p.SetState(360) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 27, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 28, p.GetParserRuleContext()) == 1 { { - p.SetState(353) + p.SetState(359) p.TimeoutClause() } @@ -5920,46 +5869,46 @@ func (s *WaitForEventNameContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FqlParser) WaitForEventName() (localctx IWaitForEventNameContext) { localctx = NewWaitForEventNameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 56, FqlParserRULE_waitForEventName) - p.SetState(361) + p.EnterRule(localctx, 54, FqlParserRULE_waitForEventName) + p.SetState(367) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 28, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 29, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(356) + p.SetState(362) p.StringLiteral() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(357) + p.SetState(363) p.Variable() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(358) + p.SetState(364) p.Param() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(359) + p.SetState(365) p.FunctionCallExpression() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(360) + p.SetState(366) p.MemberExpression() } @@ -6108,32 +6057,32 @@ func (s *WaitForEventSourceContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *FqlParser) WaitForEventSource() (localctx IWaitForEventSourceContext) { localctx = NewWaitForEventSourceContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 58, FqlParserRULE_waitForEventSource) - p.SetState(366) + p.EnterRule(localctx, 56, FqlParserRULE_waitForEventSource) + p.SetState(372) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 29, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 30, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(363) + p.SetState(369) p.FunctionCallExpression() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(364) + p.SetState(370) p.Variable() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(365) + p.SetState(371) p.MemberExpression() } @@ -6253,10 +6202,10 @@ func (s *OptionsClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) OptionsClause() (localctx IOptionsClauseContext) { localctx = NewOptionsClauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 60, FqlParserRULE_optionsClause) + p.EnterRule(localctx, 58, FqlParserRULE_optionsClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(368) + p.SetState(374) p.Match(FqlParserOptions) if p.HasError() { // Recognition error - abort rule @@ -6264,7 +6213,7 @@ func (p *FqlParser) OptionsClause() (localctx IOptionsClauseContext) { } } { - p.SetState(369) + p.SetState(375) p.ObjectLiteral() } @@ -6448,50 +6397,50 @@ func (s *TimeoutClauseContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) TimeoutClause() (localctx ITimeoutClauseContext) { localctx = NewTimeoutClauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 62, FqlParserRULE_timeoutClause) + p.EnterRule(localctx, 60, FqlParserRULE_timeoutClause) p.EnterOuterAlt(localctx, 1) { - p.SetState(371) + p.SetState(377) p.Match(FqlParserTimeout) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(377) + p.SetState(383) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 30, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 31, p.GetParserRuleContext()) { case 1: { - p.SetState(372) + p.SetState(378) p.IntegerLiteral() } case 2: { - p.SetState(373) + p.SetState(379) p.Variable() } case 3: { - p.SetState(374) + p.SetState(380) p.Param() } case 4: { - p.SetState(375) + p.SetState(381) p.MemberExpression() } case 5: { - p.SetState(376) + p.SetState(382) p.FunctionCall() } @@ -6616,18 +6565,18 @@ func (s *ParamContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FqlParser) Param() (localctx IParamContext) { localctx = NewParamContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 64, FqlParserRULE_param) - p.SetState(383) + p.EnterRule(localctx, 62, FqlParserRULE_param) + p.SetState(389) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 31, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 32, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(379) + p.SetState(385) p.Match(FqlParserParam) if p.HasError() { // Recognition error - abort rule @@ -6635,7 +6584,7 @@ func (p *FqlParser) Param() (localctx IParamContext) { } } { - p.SetState(380) + p.SetState(386) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -6646,7 +6595,7 @@ func (p *FqlParser) Param() (localctx IParamContext) { case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(381) + p.SetState(387) p.Match(FqlParserParam) if p.HasError() { // Recognition error - abort rule @@ -6654,7 +6603,7 @@ func (p *FqlParser) Param() (localctx IParamContext) { } } { - p.SetState(382) + p.SetState(388) p.SafeReservedWord() } @@ -6774,8 +6723,8 @@ func (s *VariableContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FqlParser) Variable() (localctx IVariableContext) { localctx = NewVariableContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 66, FqlParserRULE_variable) - p.SetState(387) + p.EnterRule(localctx, 64, FqlParserRULE_variable) + p.SetState(393) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -6785,7 +6734,7 @@ func (p *FqlParser) Variable() (localctx IVariableContext) { case FqlParserIdentifier: p.EnterOuterAlt(localctx, 1) { - p.SetState(385) + p.SetState(391) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -6796,7 +6745,7 @@ func (p *FqlParser) Variable() (localctx IVariableContext) { case FqlParserAnd, FqlParserOr, FqlParserOptions, FqlParserTimeout, FqlParserDistinct, FqlParserFilter, FqlParserCurrent, FqlParserSort, FqlParserLimit, FqlParserCollect, FqlParserSortDirection, FqlParserInto, FqlParserKeep, FqlParserWith, FqlParserCount, FqlParserAll, FqlParserAny, FqlParserAggregate, FqlParserEvent: p.EnterOuterAlt(localctx, 2) { - p.SetState(386) + p.SetState(392) p.SafeReservedWord() } @@ -7014,8 +6963,8 @@ func (s *LiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FqlParser) Literal() (localctx ILiteralContext) { localctx = NewLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 68, FqlParserRULE_literal) - p.SetState(396) + p.EnterRule(localctx, 66, FqlParserRULE_literal) + p.SetState(402) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7025,49 +6974,49 @@ func (p *FqlParser) Literal() (localctx ILiteralContext) { case FqlParserOpenBracket: p.EnterOuterAlt(localctx, 1) { - p.SetState(389) + p.SetState(395) p.ArrayLiteral() } case FqlParserOpenBrace: p.EnterOuterAlt(localctx, 2) { - p.SetState(390) + p.SetState(396) p.ObjectLiteral() } case FqlParserBooleanLiteral: p.EnterOuterAlt(localctx, 3) { - p.SetState(391) + p.SetState(397) p.BooleanLiteral() } case FqlParserStringLiteral: p.EnterOuterAlt(localctx, 4) { - p.SetState(392) + p.SetState(398) p.StringLiteral() } case FqlParserFloatLiteral: p.EnterOuterAlt(localctx, 5) { - p.SetState(393) + p.SetState(399) p.FloatLiteral() } case FqlParserIntegerLiteral: p.EnterOuterAlt(localctx, 6) { - p.SetState(394) + p.SetState(400) p.IntegerLiteral() } case FqlParserNone, FqlParserNull: p.EnterOuterAlt(localctx, 7) { - p.SetState(395) + p.SetState(401) p.NoneLiteral() } @@ -7193,19 +7142,19 @@ func (s *ArrayLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) ArrayLiteral() (localctx IArrayLiteralContext) { localctx = NewArrayLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 70, FqlParserRULE_arrayLiteral) + p.EnterRule(localctx, 68, FqlParserRULE_arrayLiteral) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(398) + p.SetState(404) p.Match(FqlParserOpenBracket) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(400) + p.SetState(406) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7214,13 +7163,13 @@ func (p *FqlParser) ArrayLiteral() (localctx IArrayLiteralContext) { if (int64((_la-9)) & ^0x3f) == 0 && ((int64(1)<<(_la-9))&8935141660637626389) != 0 { { - p.SetState(399) + p.SetState(405) p.ArgumentList() } } { - p.SetState(402) + p.SetState(408) p.Match(FqlParserCloseBracket) if p.HasError() { // Recognition error - abort rule @@ -7381,21 +7330,21 @@ func (s *ObjectLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) ObjectLiteral() (localctx IObjectLiteralContext) { localctx = NewObjectLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 72, FqlParserRULE_objectLiteral) + p.EnterRule(localctx, 70, FqlParserRULE_objectLiteral) var _la int var _alt int p.EnterOuterAlt(localctx, 1) { - p.SetState(404) + p.SetState(410) p.Match(FqlParserOpenBrace) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(416) + p.SetState(422) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7404,22 +7353,22 @@ func (p *FqlParser) ObjectLiteral() (localctx IObjectLiteralContext) { if (int64((_la-9)) & ^0x3f) == 0 && ((int64(1)<<(_la-9))&864691128389599233) != 0 { { - p.SetState(405) + p.SetState(411) p.PropertyAssignment() } - p.SetState(410) + p.SetState(416) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 35, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 36, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(406) + p.SetState(412) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -7427,22 +7376,22 @@ func (p *FqlParser) ObjectLiteral() (localctx IObjectLiteralContext) { } } { - p.SetState(407) + p.SetState(413) p.PropertyAssignment() } } - p.SetState(412) + p.SetState(418) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 35, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 36, p.GetParserRuleContext()) if p.HasError() { goto errorExit } } - p.SetState(414) + p.SetState(420) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -7451,7 +7400,7 @@ func (p *FqlParser) ObjectLiteral() (localctx IObjectLiteralContext) { if _la == FqlParserComma { { - p.SetState(413) + p.SetState(419) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -7463,7 +7412,7 @@ func (p *FqlParser) ObjectLiteral() (localctx IObjectLiteralContext) { } { - p.SetState(418) + p.SetState(424) p.Match(FqlParserCloseBrace) if p.HasError() { // Recognition error - abort rule @@ -7566,10 +7515,10 @@ func (s *BooleanLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FqlParser) BooleanLiteral() (localctx IBooleanLiteralContext) { localctx = NewBooleanLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 74, FqlParserRULE_booleanLiteral) + p.EnterRule(localctx, 72, FqlParserRULE_booleanLiteral) p.EnterOuterAlt(localctx, 1) { - p.SetState(420) + p.SetState(426) p.Match(FqlParserBooleanLiteral) if p.HasError() { // Recognition error - abort rule @@ -7672,10 +7621,10 @@ func (s *StringLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) StringLiteral() (localctx IStringLiteralContext) { localctx = NewStringLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 76, FqlParserRULE_stringLiteral) + p.EnterRule(localctx, 74, FqlParserRULE_stringLiteral) p.EnterOuterAlt(localctx, 1) { - p.SetState(422) + p.SetState(428) p.Match(FqlParserStringLiteral) if p.HasError() { // Recognition error - abort rule @@ -7778,10 +7727,10 @@ func (s *FloatLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) FloatLiteral() (localctx IFloatLiteralContext) { localctx = NewFloatLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 78, FqlParserRULE_floatLiteral) + p.EnterRule(localctx, 76, FqlParserRULE_floatLiteral) p.EnterOuterAlt(localctx, 1) { - p.SetState(424) + p.SetState(430) p.Match(FqlParserFloatLiteral) if p.HasError() { // Recognition error - abort rule @@ -7884,10 +7833,10 @@ func (s *IntegerLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FqlParser) IntegerLiteral() (localctx IIntegerLiteralContext) { localctx = NewIntegerLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, FqlParserRULE_integerLiteral) + p.EnterRule(localctx, 78, FqlParserRULE_integerLiteral) p.EnterOuterAlt(localctx, 1) { - p.SetState(426) + p.SetState(432) p.Match(FqlParserIntegerLiteral) if p.HasError() { // Recognition error - abort rule @@ -7995,12 +7944,12 @@ func (s *NoneLiteralContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) NoneLiteral() (localctx INoneLiteralContext) { localctx = NewNoneLiteralContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, FqlParserRULE_noneLiteral) + p.EnterRule(localctx, 80, FqlParserRULE_noneLiteral) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(428) + p.SetState(434) _la = p.GetTokenStream().LA(1) if !(_la == FqlParserNone || _la == FqlParserNull) { @@ -8174,22 +8123,22 @@ func (s *PropertyAssignmentContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *FqlParser) PropertyAssignment() (localctx IPropertyAssignmentContext) { localctx = NewPropertyAssignmentContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, FqlParserRULE_propertyAssignment) - p.SetState(439) + p.EnterRule(localctx, 82, FqlParserRULE_propertyAssignment) + p.SetState(445) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 38, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 39, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(430) + p.SetState(436) p.PropertyName() } { - p.SetState(431) + p.SetState(437) p.Match(FqlParserColon) if p.HasError() { // Recognition error - abort rule @@ -8197,18 +8146,18 @@ func (p *FqlParser) PropertyAssignment() (localctx IPropertyAssignmentContext) { } } { - p.SetState(432) + p.SetState(438) p.expression(0) } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(434) + p.SetState(440) p.ComputedPropertyName() } { - p.SetState(435) + p.SetState(441) p.Match(FqlParserColon) if p.HasError() { // Recognition error - abort rule @@ -8216,14 +8165,14 @@ func (p *FqlParser) PropertyAssignment() (localctx IPropertyAssignmentContext) { } } { - p.SetState(436) + p.SetState(442) p.expression(0) } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(438) + p.SetState(444) p.Variable() } @@ -8348,10 +8297,10 @@ func (s *ComputedPropertyNameContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *FqlParser) ComputedPropertyName() (localctx IComputedPropertyNameContext) { localctx = NewComputedPropertyNameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 86, FqlParserRULE_computedPropertyName) + p.EnterRule(localctx, 84, FqlParserRULE_computedPropertyName) p.EnterOuterAlt(localctx, 1) { - p.SetState(441) + p.SetState(447) p.Match(FqlParserOpenBracket) if p.HasError() { // Recognition error - abort rule @@ -8359,11 +8308,11 @@ func (p *FqlParser) ComputedPropertyName() (localctx IComputedPropertyNameContex } } { - p.SetState(442) + p.SetState(448) p.expression(0) } { - p.SetState(443) + p.SetState(449) p.Match(FqlParserCloseBracket) if p.HasError() { // Recognition error - abort rule @@ -8534,8 +8483,8 @@ func (s *PropertyNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) PropertyName() (localctx IPropertyNameContext) { localctx = NewPropertyNameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, FqlParserRULE_propertyName) - p.SetState(450) + p.EnterRule(localctx, 86, FqlParserRULE_propertyName) + p.SetState(456) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8545,7 +8494,7 @@ func (p *FqlParser) PropertyName() (localctx IPropertyNameContext) { case FqlParserIdentifier: p.EnterOuterAlt(localctx, 1) { - p.SetState(445) + p.SetState(451) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -8556,28 +8505,28 @@ func (p *FqlParser) PropertyName() (localctx IPropertyNameContext) { case FqlParserStringLiteral: p.EnterOuterAlt(localctx, 2) { - p.SetState(446) + p.SetState(452) p.StringLiteral() } case FqlParserParam: p.EnterOuterAlt(localctx, 3) { - p.SetState(447) + p.SetState(453) p.Param() } case FqlParserAnd, FqlParserOr, FqlParserOptions, FqlParserTimeout, FqlParserDistinct, FqlParserFilter, FqlParserCurrent, FqlParserSort, FqlParserLimit, FqlParserCollect, FqlParserSortDirection, FqlParserInto, FqlParserKeep, FqlParserWith, FqlParserCount, FqlParserAll, FqlParserAny, FqlParserAggregate, FqlParserEvent: p.EnterOuterAlt(localctx, 4) { - p.SetState(448) + p.SetState(454) p.SafeReservedWord() } case FqlParserFor, FqlParserReturn, FqlParserWaitfor, FqlParserLet, FqlParserNone, FqlParserNull, FqlParserBooleanLiteral, FqlParserUse, FqlParserLike, FqlParserNot, FqlParserIn, FqlParserDo, FqlParserWhile: p.EnterOuterAlt(localctx, 5) { - p.SetState(449) + p.SetState(455) p.UnsafeReservedWord() } @@ -8698,14 +8647,14 @@ func (s *NamespaceIdentifierContext) Accept(visitor antlr.ParseTreeVisitor) inte func (p *FqlParser) NamespaceIdentifier() (localctx INamespaceIdentifierContext) { localctx = NewNamespaceIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, FqlParserRULE_namespaceIdentifier) + p.EnterRule(localctx, 88, FqlParserRULE_namespaceIdentifier) p.EnterOuterAlt(localctx, 1) { - p.SetState(452) + p.SetState(458) p.Namespace() } { - p.SetState(453) + p.SetState(459) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -8813,11 +8762,11 @@ func (s *NamespaceContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FqlParser) Namespace() (localctx INamespaceContext) { localctx = NewNamespaceContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, FqlParserRULE_namespace) + p.EnterRule(localctx, 90, FqlParserRULE_namespace) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(458) + p.SetState(464) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8826,7 +8775,7 @@ func (p *FqlParser) Namespace() (localctx INamespaceContext) { for _la == FqlParserNamespaceSegment { { - p.SetState(455) + p.SetState(461) p.Match(FqlParserNamespaceSegment) if p.HasError() { // Recognition error - abort rule @@ -8834,7 +8783,7 @@ func (p *FqlParser) Namespace() (localctx INamespaceContext) { } } - p.SetState(460) + p.SetState(466) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -8992,15 +8941,15 @@ func (s *MemberExpressionContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FqlParser) MemberExpression() (localctx IMemberExpressionContext) { localctx = NewMemberExpressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 94, FqlParserRULE_memberExpression) + p.EnterRule(localctx, 92, FqlParserRULE_memberExpression) var _alt int p.EnterOuterAlt(localctx, 1) { - p.SetState(461) + p.SetState(467) p.MemberExpressionSource() } - p.SetState(463) + p.SetState(469) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9010,7 +8959,7 @@ func (p *FqlParser) MemberExpression() (localctx IMemberExpressionContext) { switch _alt { case 1: { - p.SetState(462) + p.SetState(468) p.MemberExpressionPath() } @@ -9019,9 +8968,9 @@ func (p *FqlParser) MemberExpression() (localctx IMemberExpressionContext) { goto errorExit } - p.SetState(465) + p.SetState(471) p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 41, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 42, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -9202,46 +9151,46 @@ func (s *MemberExpressionSourceContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *FqlParser) MemberExpressionSource() (localctx IMemberExpressionSourceContext) { localctx = NewMemberExpressionSourceContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, FqlParserRULE_memberExpressionSource) - p.SetState(472) + p.EnterRule(localctx, 94, FqlParserRULE_memberExpressionSource) + p.SetState(478) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 42, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 43, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) { - p.SetState(467) + p.SetState(473) p.Variable() } case 2: p.EnterOuterAlt(localctx, 2) { - p.SetState(468) + p.SetState(474) p.Param() } case 3: p.EnterOuterAlt(localctx, 3) { - p.SetState(469) + p.SetState(475) p.ArrayLiteral() } case 4: p.EnterOuterAlt(localctx, 4) { - p.SetState(470) + p.SetState(476) p.ObjectLiteral() } case 5: p.EnterOuterAlt(localctx, 5) { - p.SetState(471) + p.SetState(477) p.FunctionCall() } @@ -9373,18 +9322,18 @@ func (s *FunctionCallExpressionContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *FqlParser) FunctionCallExpression() (localctx IFunctionCallExpressionContext) { localctx = NewFunctionCallExpressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, FqlParserRULE_functionCallExpression) + p.EnterRule(localctx, 96, FqlParserRULE_functionCallExpression) p.EnterOuterAlt(localctx, 1) { - p.SetState(474) + p.SetState(480) p.FunctionCall() } - p.SetState(476) + p.SetState(482) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 43, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 44, p.GetParserRuleContext()) == 1 { { - p.SetState(475) + p.SetState(481) p.ErrorOperator() } @@ -9543,27 +9492,27 @@ func (s *FunctionCallContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) FunctionCall() (localctx IFunctionCallContext) { localctx = NewFunctionCallContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, FqlParserRULE_functionCall) + p.EnterRule(localctx, 98, FqlParserRULE_functionCall) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(478) + p.SetState(484) p.Namespace() } { - p.SetState(479) + p.SetState(485) p.FunctionName() } { - p.SetState(480) + p.SetState(486) p.Match(FqlParserOpenParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(482) + p.SetState(488) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9572,13 +9521,13 @@ func (p *FqlParser) FunctionCall() (localctx IFunctionCallContext) { if (int64((_la-9)) & ^0x3f) == 0 && ((int64(1)<<(_la-9))&8935141660637626389) != 0 { { - p.SetState(481) + p.SetState(487) p.ArgumentList() } } { - p.SetState(484) + p.SetState(490) p.Match(FqlParserCloseParen) if p.HasError() { // Recognition error - abort rule @@ -9715,8 +9664,8 @@ func (s *FunctionNameContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) FunctionName() (localctx IFunctionNameContext) { localctx = NewFunctionNameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, FqlParserRULE_functionName) - p.SetState(489) + p.EnterRule(localctx, 100, FqlParserRULE_functionName) + p.SetState(495) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9726,7 +9675,7 @@ func (p *FqlParser) FunctionName() (localctx IFunctionNameContext) { case FqlParserIdentifier: p.EnterOuterAlt(localctx, 1) { - p.SetState(486) + p.SetState(492) p.Match(FqlParserIdentifier) if p.HasError() { // Recognition error - abort rule @@ -9737,14 +9686,14 @@ func (p *FqlParser) FunctionName() (localctx IFunctionNameContext) { case FqlParserAnd, FqlParserOr, FqlParserOptions, FqlParserTimeout, FqlParserDistinct, FqlParserFilter, FqlParserCurrent, FqlParserSort, FqlParserLimit, FqlParserCollect, FqlParserSortDirection, FqlParserInto, FqlParserKeep, FqlParserWith, FqlParserCount, FqlParserAll, FqlParserAny, FqlParserAggregate, FqlParserEvent: p.EnterOuterAlt(localctx, 2) { - p.SetState(487) + p.SetState(493) p.SafeReservedWord() } case FqlParserFor, FqlParserReturn, FqlParserWaitfor, FqlParserLet, FqlParserNone, FqlParserNull, FqlParserBooleanLiteral, FqlParserUse, FqlParserLike, FqlParserNot, FqlParserIn, FqlParserDo, FqlParserWhile: p.EnterOuterAlt(localctx, 3) { - p.SetState(488) + p.SetState(494) p.UnsafeReservedWord() } @@ -9896,29 +9845,29 @@ func (s *ArgumentListContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) ArgumentList() (localctx IArgumentListContext) { localctx = NewArgumentListContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, FqlParserRULE_argumentList) + p.EnterRule(localctx, 102, FqlParserRULE_argumentList) var _la int var _alt int p.EnterOuterAlt(localctx, 1) { - p.SetState(491) + p.SetState(497) p.expression(0) } - p.SetState(496) + p.SetState(502) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 46, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 47, p.GetParserRuleContext()) if p.HasError() { goto errorExit } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { - p.SetState(492) + p.SetState(498) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -9926,22 +9875,22 @@ func (p *FqlParser) ArgumentList() (localctx IArgumentListContext) { } } { - p.SetState(493) + p.SetState(499) p.expression(0) } } - p.SetState(498) + p.SetState(504) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 46, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 47, p.GetParserRuleContext()) if p.HasError() { goto errorExit } } - p.SetState(500) + p.SetState(506) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -9950,7 +9899,7 @@ func (p *FqlParser) ArgumentList() (localctx IArgumentListContext) { if _la == FqlParserComma { { - p.SetState(499) + p.SetState(505) p.Match(FqlParserComma) if p.HasError() { // Recognition error - abort rule @@ -10106,19 +10055,19 @@ func (s *MemberExpressionPathContext) Accept(visitor antlr.ParseTreeVisitor) int func (p *FqlParser) MemberExpressionPath() (localctx IMemberExpressionPathContext) { localctx = NewMemberExpressionPathContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, FqlParserRULE_memberExpressionPath) + p.EnterRule(localctx, 104, FqlParserRULE_memberExpressionPath) var _la int - p.SetState(513) + p.SetState(519) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 50, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 51, p.GetParserRuleContext()) { case 1: p.EnterOuterAlt(localctx, 1) - p.SetState(503) + p.SetState(509) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10127,13 +10076,13 @@ func (p *FqlParser) MemberExpressionPath() (localctx IMemberExpressionPathContex if _la == FqlParserQuestionMark { { - p.SetState(502) + p.SetState(508) p.ErrorOperator() } } { - p.SetState(505) + p.SetState(511) p.Match(FqlParserDot) if p.HasError() { // Recognition error - abort rule @@ -10141,13 +10090,13 @@ func (p *FqlParser) MemberExpressionPath() (localctx IMemberExpressionPathContex } } { - p.SetState(506) + p.SetState(512) p.PropertyName() } case 2: p.EnterOuterAlt(localctx, 2) - p.SetState(510) + p.SetState(516) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10156,11 +10105,11 @@ func (p *FqlParser) MemberExpressionPath() (localctx IMemberExpressionPathContex if _la == FqlParserQuestionMark { { - p.SetState(507) + p.SetState(513) p.ErrorOperator() } { - p.SetState(508) + p.SetState(514) p.Match(FqlParserDot) if p.HasError() { // Recognition error - abort rule @@ -10170,7 +10119,7 @@ func (p *FqlParser) MemberExpressionPath() (localctx IMemberExpressionPathContex } { - p.SetState(512) + p.SetState(518) p.ComputedPropertyName() } @@ -10363,12 +10312,12 @@ func (s *SafeReservedWordContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FqlParser) SafeReservedWord() (localctx ISafeReservedWordContext) { localctx = NewSafeReservedWordContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, FqlParserRULE_safeReservedWord) + p.EnterRule(localctx, 106, FqlParserRULE_safeReservedWord) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(515) + p.SetState(521) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1148663921511497728) != 0) { @@ -10534,12 +10483,12 @@ func (s *UnsafeReservedWordContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *FqlParser) UnsafeReservedWord() (localctx IUnsafeReservedWordContext) { localctx = NewUnsafeReservedWordContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, FqlParserRULE_unsafeReservedWord) + p.EnterRule(localctx, 108, FqlParserRULE_unsafeReservedWord) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(517) + p.SetState(523) _la = p.GetTokenStream().LA(1) if !((int64((_la-35)) & ^0x3f) == 0 && ((int64(1)<<(_la-35))&1040311303) != 0) { @@ -10710,17 +10659,17 @@ func (s *RangeOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) RangeOperator() (localctx IRangeOperatorContext) { localctx = NewRangeOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, FqlParserRULE_rangeOperator) + p.EnterRule(localctx, 110, FqlParserRULE_rangeOperator) p.EnterOuterAlt(localctx, 1) { - p.SetState(519) + p.SetState(525) var _x = p.RangeOperand() localctx.(*RangeOperatorContext).left = _x } { - p.SetState(520) + p.SetState(526) p.Match(FqlParserRange) if p.HasError() { // Recognition error - abort rule @@ -10728,7 +10677,7 @@ func (p *FqlParser) RangeOperator() (localctx IRangeOperatorContext) { } } { - p.SetState(521) + p.SetState(527) var _x = p.RangeOperand() @@ -10876,8 +10825,8 @@ func (s *RangeOperandContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) RangeOperand() (localctx IRangeOperandContext) { localctx = NewRangeOperandContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, FqlParserRULE_rangeOperand) - p.SetState(526) + p.EnterRule(localctx, 112, FqlParserRULE_rangeOperand) + p.SetState(532) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -10887,21 +10836,21 @@ func (p *FqlParser) RangeOperand() (localctx IRangeOperandContext) { case FqlParserIntegerLiteral: p.EnterOuterAlt(localctx, 1) { - p.SetState(523) + p.SetState(529) p.IntegerLiteral() } case FqlParserAnd, FqlParserOr, FqlParserOptions, FqlParserTimeout, FqlParserDistinct, FqlParserFilter, FqlParserCurrent, FqlParserSort, FqlParserLimit, FqlParserCollect, FqlParserSortDirection, FqlParserInto, FqlParserKeep, FqlParserWith, FqlParserCount, FqlParserAll, FqlParserAny, FqlParserAggregate, FqlParserEvent, FqlParserIdentifier: p.EnterOuterAlt(localctx, 2) { - p.SetState(524) + p.SetState(530) p.Variable() } case FqlParserParam: p.EnterOuterAlt(localctx, 3) { - p.SetState(525) + p.SetState(531) p.Param() } @@ -11196,27 +11145,27 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { localctx = NewExpressionContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IExpressionContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 116 - p.EnterRecursionRule(localctx, 116, FqlParserRULE_expression, _p) + _startState := 114 + p.EnterRecursionRule(localctx, 114, FqlParserRULE_expression, _p) var _la int var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(533) + p.SetState(539) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 52, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 53, p.GetParserRuleContext()) { case 1: { - p.SetState(529) + p.SetState(535) p.UnaryOperator() } { - p.SetState(530) + p.SetState(536) var _x = p.expression(5) @@ -11225,7 +11174,7 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { case 2: { - p.SetState(532) + p.SetState(538) p.predicate(0) } @@ -11233,12 +11182,12 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(552) + p.SetState(558) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 55, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -11248,29 +11197,29 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(550) + p.SetState(556) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 54, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 55, p.GetParserRuleContext()) { case 1: localctx = NewExpressionContext(p, _parentctx, _parentState) localctx.(*ExpressionContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_expression) - p.SetState(535) + p.SetState(541) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(536) + p.SetState(542) p.LogicalAndOperator() } { - p.SetState(537) + p.SetState(543) var _x = p.expression(5) @@ -11281,18 +11230,18 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { localctx = NewExpressionContext(p, _parentctx, _parentState) localctx.(*ExpressionContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_expression) - p.SetState(539) + p.SetState(545) if !(p.Precpred(p.GetParserRuleContext(), 3)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", "")) goto errorExit } { - p.SetState(540) + p.SetState(546) p.LogicalOrOperator() } { - p.SetState(541) + p.SetState(547) var _x = p.expression(4) @@ -11303,14 +11252,14 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { localctx = NewExpressionContext(p, _parentctx, _parentState) localctx.(*ExpressionContext).condition = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_expression) - p.SetState(543) + p.SetState(549) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(544) + p.SetState(550) var _m = p.Match(FqlParserQuestionMark) @@ -11320,7 +11269,7 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { goto errorExit } } - p.SetState(546) + p.SetState(552) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -11329,7 +11278,7 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { if (int64((_la-9)) & ^0x3f) == 0 && ((int64(1)<<(_la-9))&8935141660637626389) != 0 { { - p.SetState(545) + p.SetState(551) var _x = p.expression(0) @@ -11338,7 +11287,7 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { } { - p.SetState(548) + p.SetState(554) p.Match(FqlParserColon) if p.HasError() { // Recognition error - abort rule @@ -11346,7 +11295,7 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { } } { - p.SetState(549) + p.SetState(555) var _x = p.expression(3) @@ -11358,12 +11307,12 @@ func (p *FqlParser) expression(_p int) (localctx IExpressionContext) { } } - p.SetState(554) + p.SetState(560) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 55, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -11618,23 +11567,23 @@ func (p *FqlParser) predicate(_p int) (localctx IPredicateContext) { localctx = NewPredicateContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IPredicateContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 118 - p.EnterRecursionRule(localctx, 118, FqlParserRULE_predicate, _p) + _startState := 116 + p.EnterRecursionRule(localctx, 116, FqlParserRULE_predicate, _p) var _alt int p.EnterOuterAlt(localctx, 1) { - p.SetState(556) + p.SetState(562) p.expressionAtom(0) } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(576) + p.SetState(582) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 57, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 58, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -11644,29 +11593,29 @@ func (p *FqlParser) predicate(_p int) (localctx IPredicateContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(574) + p.SetState(580) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 56, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 57, p.GetParserRuleContext()) { case 1: localctx = NewPredicateContext(p, _parentctx, _parentState) localctx.(*PredicateContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_predicate) - p.SetState(558) + p.SetState(564) if !(p.Precpred(p.GetParserRuleContext(), 5)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) goto errorExit } { - p.SetState(559) + p.SetState(565) p.EqualityOperator() } { - p.SetState(560) + p.SetState(566) var _x = p.predicate(6) @@ -11677,18 +11626,18 @@ func (p *FqlParser) predicate(_p int) (localctx IPredicateContext) { localctx = NewPredicateContext(p, _parentctx, _parentState) localctx.(*PredicateContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_predicate) - p.SetState(562) + p.SetState(568) if !(p.Precpred(p.GetParserRuleContext(), 4)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) goto errorExit } { - p.SetState(563) + p.SetState(569) p.ArrayOperator() } { - p.SetState(564) + p.SetState(570) var _x = p.predicate(5) @@ -11699,18 +11648,18 @@ func (p *FqlParser) predicate(_p int) (localctx IPredicateContext) { localctx = NewPredicateContext(p, _parentctx, _parentState) localctx.(*PredicateContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_predicate) - p.SetState(566) + p.SetState(572) if !(p.Precpred(p.GetParserRuleContext(), 3)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", "")) goto errorExit } { - p.SetState(567) + p.SetState(573) p.InOperator() } { - p.SetState(568) + p.SetState(574) var _x = p.predicate(4) @@ -11721,18 +11670,18 @@ func (p *FqlParser) predicate(_p int) (localctx IPredicateContext) { localctx = NewPredicateContext(p, _parentctx, _parentState) localctx.(*PredicateContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_predicate) - p.SetState(570) + p.SetState(576) if !(p.Precpred(p.GetParserRuleContext(), 2)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) goto errorExit } { - p.SetState(571) + p.SetState(577) p.LikeOperator() } { - p.SetState(572) + p.SetState(578) var _x = p.predicate(3) @@ -11744,12 +11693,12 @@ func (p *FqlParser) predicate(_p int) (localctx IPredicateContext) { } } - p.SetState(578) + p.SetState(584) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 57, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 58, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -12150,85 +12099,85 @@ func (p *FqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) { localctx = NewExpressionAtomContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IExpressionAtomContext = localctx var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 120 - p.EnterRecursionRule(localctx, 120, FqlParserRULE_expressionAtom, _p) + _startState := 118 + p.EnterRecursionRule(localctx, 118, FqlParserRULE_expressionAtom, _p) var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(596) + p.SetState(602) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 60, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 61, p.GetParserRuleContext()) { case 1: { - p.SetState(580) + p.SetState(586) p.FunctionCallExpression() } case 2: { - p.SetState(581) + p.SetState(587) p.RangeOperator() } case 3: { - p.SetState(582) + p.SetState(588) p.Literal() } case 4: { - p.SetState(583) + p.SetState(589) p.Variable() } case 5: { - p.SetState(584) + p.SetState(590) p.MemberExpression() } case 6: { - p.SetState(585) + p.SetState(591) p.Param() } case 7: { - p.SetState(586) + p.SetState(592) p.Match(FqlParserOpenParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(590) + p.SetState(596) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 58, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 59, p.GetParserRuleContext()) { case 1: { - p.SetState(587) + p.SetState(593) p.ForExpression() } case 2: { - p.SetState(588) + p.SetState(594) p.WaitForExpression() } case 3: { - p.SetState(589) + p.SetState(595) p.expression(0) } @@ -12236,19 +12185,19 @@ func (p *FqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) { goto errorExit } { - p.SetState(592) + p.SetState(598) p.Match(FqlParserCloseParen) if p.HasError() { // Recognition error - abort rule goto errorExit } } - p.SetState(594) + p.SetState(600) p.GetErrorHandler().Sync(p) - if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 59, p.GetParserRuleContext()) == 1 { + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 60, p.GetParserRuleContext()) == 1 { { - p.SetState(593) + p.SetState(599) p.ErrorOperator() } @@ -12260,12 +12209,12 @@ func (p *FqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) { goto errorExit } p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(612) + p.SetState(618) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 62, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 63, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -12275,29 +12224,29 @@ func (p *FqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) { p.TriggerExitRuleEvent() } _prevctx = localctx - p.SetState(610) + p.SetState(616) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 61, p.GetParserRuleContext()) { + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 62, p.GetParserRuleContext()) { case 1: localctx = NewExpressionAtomContext(p, _parentctx, _parentState) localctx.(*ExpressionAtomContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_expressionAtom) - p.SetState(598) + p.SetState(604) if !(p.Precpred(p.GetParserRuleContext(), 10)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 10)", "")) goto errorExit } { - p.SetState(599) + p.SetState(605) p.MultiplicativeOperator() } { - p.SetState(600) + p.SetState(606) var _x = p.expressionAtom(11) @@ -12308,18 +12257,18 @@ func (p *FqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) { localctx = NewExpressionAtomContext(p, _parentctx, _parentState) localctx.(*ExpressionAtomContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_expressionAtom) - p.SetState(602) + p.SetState(608) if !(p.Precpred(p.GetParserRuleContext(), 9)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) goto errorExit } { - p.SetState(603) + p.SetState(609) p.AdditiveOperator() } { - p.SetState(604) + p.SetState(610) var _x = p.expressionAtom(10) @@ -12330,18 +12279,18 @@ func (p *FqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) { localctx = NewExpressionAtomContext(p, _parentctx, _parentState) localctx.(*ExpressionAtomContext).left = _prevctx p.PushNewRecursionContext(localctx, _startState, FqlParserRULE_expressionAtom) - p.SetState(606) + p.SetState(612) if !(p.Precpred(p.GetParserRuleContext(), 8)) { p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) goto errorExit } { - p.SetState(607) + p.SetState(613) p.RegexpOperator() } { - p.SetState(608) + p.SetState(614) var _x = p.expressionAtom(9) @@ -12353,12 +12302,12 @@ func (p *FqlParser) expressionAtom(_p int) (localctx IExpressionAtomContext) { } } - p.SetState(614) + p.SetState(620) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit } - _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 62, p.GetParserRuleContext()) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 63, p.GetParserRuleContext()) if p.HasError() { goto errorExit } @@ -12514,12 +12463,12 @@ func (s *ArrayOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) ArrayOperator() (localctx IArrayOperatorContext) { localctx = NewArrayOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, FqlParserRULE_arrayOperator) + p.EnterRule(localctx, 120, FqlParserRULE_arrayOperator) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(615) + p.SetState(621) var _lt = p.GetTokenStream().LT(1) @@ -12536,7 +12485,7 @@ func (p *FqlParser) ArrayOperator() (localctx IArrayOperatorContext) { p.Consume() } } - p.SetState(618) + p.SetState(624) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12545,13 +12494,13 @@ func (p *FqlParser) ArrayOperator() (localctx IArrayOperatorContext) { switch p.GetTokenStream().LA(1) { case FqlParserNot, FqlParserIn: { - p.SetState(616) + p.SetState(622) p.InOperator() } case FqlParserGt, FqlParserLt, FqlParserEq, FqlParserGte, FqlParserLte, FqlParserNeq: { - p.SetState(617) + p.SetState(623) p.EqualityOperator() } @@ -12680,12 +12629,12 @@ func (s *EqualityOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FqlParser) EqualityOperator() (localctx IEqualityOperatorContext) { localctx = NewEqualityOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 124, FqlParserRULE_equalityOperator) + p.EnterRule(localctx, 122, FqlParserRULE_equalityOperator) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(620) + p.SetState(626) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2064384) != 0) { @@ -12796,11 +12745,11 @@ func (s *InOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { func (p *FqlParser) InOperator() (localctx IInOperatorContext) { localctx = NewInOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 126, FqlParserRULE_inOperator) + p.EnterRule(localctx, 124, FqlParserRULE_inOperator) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(623) + p.SetState(629) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12809,7 +12758,7 @@ func (p *FqlParser) InOperator() (localctx IInOperatorContext) { if _la == FqlParserNot { { - p.SetState(622) + p.SetState(628) p.Match(FqlParserNot) if p.HasError() { // Recognition error - abort rule @@ -12819,7 +12768,7 @@ func (p *FqlParser) InOperator() (localctx IInOperatorContext) { } { - p.SetState(625) + p.SetState(631) p.Match(FqlParserIn) if p.HasError() { // Recognition error - abort rule @@ -12927,11 +12876,11 @@ func (s *LikeOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} func (p *FqlParser) LikeOperator() (localctx ILikeOperatorContext) { localctx = NewLikeOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 128, FqlParserRULE_likeOperator) + p.EnterRule(localctx, 126, FqlParserRULE_likeOperator) var _la int p.EnterOuterAlt(localctx, 1) - p.SetState(628) + p.SetState(634) p.GetErrorHandler().Sync(p) if p.HasError() { goto errorExit @@ -12940,7 +12889,7 @@ func (p *FqlParser) LikeOperator() (localctx ILikeOperatorContext) { if _la == FqlParserNot { { - p.SetState(627) + p.SetState(633) p.Match(FqlParserNot) if p.HasError() { // Recognition error - abort rule @@ -12950,7 +12899,7 @@ func (p *FqlParser) LikeOperator() (localctx ILikeOperatorContext) { } { - p.SetState(630) + p.SetState(636) p.Match(FqlParserLike) if p.HasError() { // Recognition error - abort rule @@ -13063,12 +13012,12 @@ func (s *UnaryOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) UnaryOperator() (localctx IUnaryOperatorContext) { localctx = NewUnaryOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 130, FqlParserRULE_unaryOperator) + p.EnterRule(localctx, 128, FqlParserRULE_unaryOperator) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(632) + p.SetState(638) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&2305843009264025600) != 0) { @@ -13179,12 +13128,12 @@ func (s *RegexpOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface func (p *FqlParser) RegexpOperator() (localctx IRegexpOperatorContext) { localctx = NewRegexpOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 132, FqlParserRULE_regexpOperator) + p.EnterRule(localctx, 130, FqlParserRULE_regexpOperator) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(634) + p.SetState(640) _la = p.GetTokenStream().LA(1) if !(_la == FqlParserRegexNotMatch || _la == FqlParserRegexMatch) { @@ -13290,10 +13239,10 @@ func (s *LogicalAndOperatorContext) Accept(visitor antlr.ParseTreeVisitor) inter func (p *FqlParser) LogicalAndOperator() (localctx ILogicalAndOperatorContext) { localctx = NewLogicalAndOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 134, FqlParserRULE_logicalAndOperator) + p.EnterRule(localctx, 132, FqlParserRULE_logicalAndOperator) p.EnterOuterAlt(localctx, 1) { - p.SetState(636) + p.SetState(642) p.Match(FqlParserAnd) if p.HasError() { // Recognition error - abort rule @@ -13396,10 +13345,10 @@ func (s *LogicalOrOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interf func (p *FqlParser) LogicalOrOperator() (localctx ILogicalOrOperatorContext) { localctx = NewLogicalOrOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 136, FqlParserRULE_logicalOrOperator) + p.EnterRule(localctx, 134, FqlParserRULE_logicalOrOperator) p.EnterOuterAlt(localctx, 1) { - p.SetState(638) + p.SetState(644) p.Match(FqlParserOr) if p.HasError() { // Recognition error - abort rule @@ -13512,12 +13461,12 @@ func (s *MultiplicativeOperatorContext) Accept(visitor antlr.ParseTreeVisitor) i func (p *FqlParser) MultiplicativeOperator() (localctx IMultiplicativeOperatorContext) { localctx = NewMultiplicativeOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 138, FqlParserRULE_multiplicativeOperator) + p.EnterRule(localctx, 136, FqlParserRULE_multiplicativeOperator) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(640) + p.SetState(646) _la = p.GetTokenStream().LA(1) if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&14680064) != 0) { @@ -13628,12 +13577,12 @@ func (s *AdditiveOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interfa func (p *FqlParser) AdditiveOperator() (localctx IAdditiveOperatorContext) { localctx = NewAdditiveOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 140, FqlParserRULE_additiveOperator) + p.EnterRule(localctx, 138, FqlParserRULE_additiveOperator) var _la int p.EnterOuterAlt(localctx, 1) { - p.SetState(642) + p.SetState(648) _la = p.GetTokenStream().LA(1) if !(_la == FqlParserPlus || _la == FqlParserMinus) { @@ -13739,10 +13688,10 @@ func (s *ErrorOperatorContext) Accept(visitor antlr.ParseTreeVisitor) interface{ func (p *FqlParser) ErrorOperator() (localctx IErrorOperatorContext) { localctx = NewErrorOperatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 142, FqlParserRULE_errorOperator) + p.EnterRule(localctx, 140, FqlParserRULE_errorOperator) p.EnterOuterAlt(localctx, 1) { - p.SetState(644) + p.SetState(650) p.Match(FqlParserQuestionMark) if p.HasError() { // Recognition error - abort rule @@ -13765,21 +13714,21 @@ errorExit: func (p *FqlParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { switch ruleIndex { - case 58: + case 57: var t *ExpressionContext = nil if localctx != nil { t = localctx.(*ExpressionContext) } return p.Expression_Sempred(t, predIndex) - case 59: + case 58: var t *PredicateContext = nil if localctx != nil { t = localctx.(*PredicateContext) } return p.Predicate_Sempred(t, predIndex) - case 60: + case 59: var t *ExpressionAtomContext = nil if localctx != nil { t = localctx.(*ExpressionAtomContext) diff --git a/pkg/parser/fql/fqlparser_base_listener.go b/pkg/parser/fql/fqlparser_base_listener.go index 1cf07b35..255e5b7a 100644 --- a/pkg/parser/fql/fqlparser_base_listener.go +++ b/pkg/parser/fql/fqlparser_base_listener.go @@ -98,12 +98,6 @@ func (s *BaseFqlParserListener) EnterForExpressionStatement(ctx *ForExpressionSt // ExitForExpressionStatement is called when production forExpressionStatement is exited. func (s *BaseFqlParserListener) ExitForExpressionStatement(ctx *ForExpressionStatementContext) {} -// EnterForExpressionBody is called when production forExpressionBody is entered. -func (s *BaseFqlParserListener) EnterForExpressionBody(ctx *ForExpressionBodyContext) {} - -// ExitForExpressionBody is called when production forExpressionBody is exited. -func (s *BaseFqlParserListener) ExitForExpressionBody(ctx *ForExpressionBodyContext) {} - // EnterForExpressionReturn is called when production forExpressionReturn is entered. func (s *BaseFqlParserListener) EnterForExpressionReturn(ctx *ForExpressionReturnContext) {} diff --git a/pkg/parser/fql/fqlparser_base_visitor.go b/pkg/parser/fql/fqlparser_base_visitor.go index f7262d2d..999bb540 100644 --- a/pkg/parser/fql/fqlparser_base_visitor.go +++ b/pkg/parser/fql/fqlparser_base_visitor.go @@ -59,10 +59,6 @@ func (v *BaseFqlParserVisitor) VisitForExpressionStatement(ctx *ForExpressionSta return v.VisitChildren(ctx) } -func (v *BaseFqlParserVisitor) VisitForExpressionBody(ctx *ForExpressionBodyContext) interface{} { - return v.VisitChildren(ctx) -} - func (v *BaseFqlParserVisitor) VisitForExpressionReturn(ctx *ForExpressionReturnContext) interface{} { return v.VisitChildren(ctx) } diff --git a/pkg/parser/fql/fqlparser_listener.go b/pkg/parser/fql/fqlparser_listener.go index 2e53e949..0117b32f 100644 --- a/pkg/parser/fql/fqlparser_listener.go +++ b/pkg/parser/fql/fqlparser_listener.go @@ -46,9 +46,6 @@ type FqlParserListener interface { // EnterForExpressionStatement is called when entering the forExpressionStatement production. EnterForExpressionStatement(c *ForExpressionStatementContext) - // EnterForExpressionBody is called when entering the forExpressionBody production. - EnterForExpressionBody(c *ForExpressionBodyContext) - // EnterForExpressionReturn is called when entering the forExpressionReturn production. EnterForExpressionReturn(c *ForExpressionReturnContext) @@ -262,9 +259,6 @@ type FqlParserListener interface { // ExitForExpressionStatement is called when exiting the forExpressionStatement production. ExitForExpressionStatement(c *ForExpressionStatementContext) - // ExitForExpressionBody is called when exiting the forExpressionBody production. - ExitForExpressionBody(c *ForExpressionBodyContext) - // ExitForExpressionReturn is called when exiting the forExpressionReturn production. ExitForExpressionReturn(c *ForExpressionReturnContext) diff --git a/pkg/parser/fql/fqlparser_visitor.go b/pkg/parser/fql/fqlparser_visitor.go index 2f800009..73500d47 100644 --- a/pkg/parser/fql/fqlparser_visitor.go +++ b/pkg/parser/fql/fqlparser_visitor.go @@ -46,9 +46,6 @@ type FqlParserVisitor interface { // Visit a parse tree produced by FqlParser#forExpressionStatement. VisitForExpressionStatement(ctx *ForExpressionStatementContext) interface{} - // Visit a parse tree produced by FqlParser#forExpressionBody. - VisitForExpressionBody(ctx *ForExpressionBodyContext) interface{} - // Visit a parse tree produced by FqlParser#forExpressionReturn. VisitForExpressionReturn(ctx *ForExpressionReturnContext) interface{} diff --git a/pkg/runtime/opcode.go b/pkg/runtime/opcode.go index 8d054278..2a246bb2 100644 --- a/pkg/runtime/opcode.go +++ b/pkg/runtime/opcode.go @@ -54,16 +54,18 @@ const ( OpCall OpProtectedCall - OpLoopBegin // Creates a loop result dataset + OpSort + + OpLoopInit // Creates a loop result dataset OpLoopPush - OpLoopEnd + OpLoopFin - OpForLoopInit // Creates an iterator for a loop + OpForLoopStart // Creates an iterator for a loop OpForLoopNext OpForLoopValue OpForLoopKey - OpWhileLoopInit + OpWhileLoopStart OpWhileLoopNext OpWhileLoopValue ) diff --git a/pkg/runtime/values/noop_iter.go b/pkg/runtime/values/noop_iter.go index dcc7f423..d2b06d49 100644 --- a/pkg/runtime/values/noop_iter.go +++ b/pkg/runtime/values/noop_iter.go @@ -2,6 +2,7 @@ package values import ( "context" + "github.com/MontFerret/ferret/pkg/runtime/core" ) diff --git a/pkg/runtime/vm.go b/pkg/runtime/vm.go index 7a15f263..ac61c1d4 100644 --- a/pkg/runtime/vm.go +++ b/pkg/runtime/vm.go @@ -296,12 +296,13 @@ loop: } else { return nil, err } - case OpLoopBegin: + case OpLoopInit: reg[dst] = NewDataSet(src1 == 1) - case OpLoopEnd: + case OpLoopFin: + // TODO: Close iterator if it's closeable ds := reg[src1].(*DataSet) reg[dst] = ds.ToArray() - case OpForLoopInit: + case OpForLoopStart: input := reg[src1] switch src := input.(type) { @@ -346,7 +347,7 @@ loop: // TODO: Remove boxed value!!! iter := reg[src1].(*values.Boxed).Unwrap().(core.Iterator) reg[dst] = iter.Key() - case OpWhileLoopInit: + case OpWhileLoopStart: reg[dst] = values.Int(-1) case OpWhileLoopNext: cond := values.ToBoolean(reg[src1])