From 0f36c123491ebf040145e1821e31c97dc9a556f7 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 11 Nov 2020 13:22:46 +0530 Subject: [PATCH 01/11] Added tests Signed-off-by: GuptaManan100 --- go/test/endtoend/vtgate/misc_test.go | 10 ++++++++++ go/vt/sqlparser/parse_test.go | 18 ++++++------------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/go/test/endtoend/vtgate/misc_test.go b/go/test/endtoend/vtgate/misc_test.go index 70b929f5614..e65aa70e35c 100644 --- a/go/test/endtoend/vtgate/misc_test.go +++ b/go/test/endtoend/vtgate/misc_test.go @@ -350,6 +350,16 @@ func TestInsertStmtInOLAP(t *testing.T) { assertMatches(t, conn, `select id1 from t1 order by id1`, `[]`) } +func TestCreateIndex(t *testing.T) { + defer cluster.PanicHandler(t) + ctx := context.Background() + conn, err := mysql.Connect(ctx, &vtParams) + require.NoError(t, err) + defer conn.Close() + _, err = conn.ExecuteFetch(`create index i1 on t1 (id1)`, 1000, true) + require.NoError(t, err) +} + func assertMatches(t *testing.T, conn *mysql.Conn, query, expected string) { t.Helper() qr := exec(t, conn, query) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index f31b79d51c6..d5bf0b7e4ed 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1141,20 +1141,15 @@ var ( input: "alter vschema on a drop vindex `add`", output: "alter vschema on a drop vindex `add`", }, { - input: "create index a on b", - output: "alter table b", + input: "create index a on b (col1)", }, { - input: "create unique index a on b", - output: "alter table b", + input: "create unique index a on b (col1)", }, { - input: "create unique index a using foo on b", - output: "alter table b", + input: "create unique index a using foo on b (col1)", }, { - input: "create fulltext index a using foo on b", - output: "alter table b", + input: "create fulltext index a using foo on b (col1)", }, { - input: "create spatial index a using foo on b", - output: "alter table b", + input: "create spatial index a using foo on b (col1)", }, { input: "create view a", output: "create table a", @@ -1828,8 +1823,7 @@ func TestCaseSensitivity(t *testing.T) { input: "create table A (\n\t`B` int\n)", output: "create table A (\n\tB int\n)", }, { - input: "create index b on A", - output: "alter table A", + input: "create index b on A (col1)", }, { input: "alter table A foo", output: "alter table A", From 0567df0519b8d649ef4ec0088b3e1d3e864f0d35 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Thu, 12 Nov 2020 15:38:24 +0530 Subject: [PATCH 02/11] Parsing for create index statements complete Signed-off-by: GuptaManan100 --- go/vt/sqlparser/ast.go | 64 +- go/vt/sqlparser/ast_funcs.go | 14 +- go/vt/sqlparser/parse_test.go | 18 +- go/vt/sqlparser/rewriter.go | 22 + go/vt/sqlparser/sql.go | 8731 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 119 +- go/vt/sqlparser/token.go | 9 +- 7 files changed, 4692 insertions(+), 4285 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 07abacb4b7b..c8107f2d9f5 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -54,6 +54,12 @@ type ( SQLNode } + // DDLStatement represents any DDL Statement + DDLStatement interface { + iDDLStatement() + Statement + } + // Select represents a SELECT statement. Select struct { Cache *bool // a reference here so it can be nil @@ -253,6 +259,16 @@ type ( AutoIncSpec *AutoIncSpec } + // CreateIndex represents a CREATE INDEX query + CreateIndex struct { + Constraint ColIdent + Name ColIdent + IndexType ColIdent + Table TableName + Columns []*IndexColumn + Options []*IndexOption + } + // DDLAction is an enum for DDL.Action DDLAction int8 @@ -346,6 +362,10 @@ func (*Select) iSelectStatement() {} func (*Union) iSelectStatement() {} func (*ParenSelect) iSelectStatement() {} func (*Load) iStatement() {} +func (*CreateIndex) iStatement() {} + +func (*DDL) iDDLStatement() {} +func (*CreateIndex) iDDLStatement() {} // ParenSelect can actually not be a top level statement, // but we have to allow it because it's a requirement @@ -956,7 +976,7 @@ type Order struct { Direction OrderDirection } -// OrderDirection is an enum for Order.Direction +// OrderDirection is an enum for the direction in which to order - asc or desc. type OrderDirection int8 // Limit represents a LIMIT clause. @@ -1349,13 +1369,16 @@ func (idx *IndexDefinition) Format(buf *TrackedBuffer) { if col.Length != nil { buf.astPrintf(idx, "(%v)", col.Length) } + if col.Direction == DescOrder { + buf.astPrintf(idx, " desc") + } } buf.astPrintf(idx, ")") for _, opt := range idx.Options { buf.astPrintf(idx, " %s", opt.Name) - if opt.Using != "" { - buf.astPrintf(idx, " %s", opt.Using) + if opt.String != "" { + buf.astPrintf(idx, " %s", opt.String) } else { buf.astPrintf(idx, " %v", opt.Value) } @@ -2160,3 +2183,38 @@ func (node *SelectInto) Format(buf *TrackedBuffer) { } buf.astPrintf(node, "%s%s%s%s", node.FormatOption, node.ExportOption, node.Manifest, node.Overwrite) } + +// Format formats the node. +func (node *CreateIndex) Format(buf *TrackedBuffer) { + buf.WriteString("create") + if node.Constraint.String() != "" { + buf.astPrintf(node, " %v", node.Constraint) + } + buf.astPrintf(node, " index %v", node.Name) + if node.IndexType.String() != "" { + buf.astPrintf(node, " using %v", node.IndexType) + } + buf.astPrintf(node, " on %v (", node.Table) + for i, col := range node.Columns { + if i != 0 { + buf.astPrintf(node, ", %v", col.Column) + } else { + buf.astPrintf(node, "%v", col.Column) + } + if col.Length != nil { + buf.astPrintf(node, "(%v)", col.Length) + } + if col.Direction == DescOrder { + buf.astPrintf(node, " desc") + } + } + buf.astPrintf(node, ")") + for _, opt := range node.Options { + buf.astPrintf(node, " %s", strings.ToLower(opt.Name)) + if opt.String != "" { + buf.astPrintf(node, " %s", opt.String) + } else { + buf.astPrintf(node, " %v", opt.Value) + } + } +} diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index 00dda2ad570..085a576ea27 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -75,8 +75,9 @@ func Append(buf *strings.Builder, node SQLNode) { // IndexColumn describes a column in an index definition with optional length type IndexColumn struct { - Column ColIdent - Length *Literal + Column ColIdent + Length *Literal + Direction OrderDirection } // LengthScaleOption is used for types that have an optional length @@ -86,11 +87,11 @@ type LengthScaleOption struct { Scale *Literal } -// IndexOption is used for trailing options for indexes: COMMENT, KEY_BLOCK_SIZE, USING +// IndexOption is used for trailing options for indexes: COMMENT, KEY_BLOCK_SIZE, USING, WITH PARSER type IndexOption struct { - Name string - Value *Literal - Using string + Name string + Value *Literal + String string } // ColumnKeyOption indicates whether or not the given column is defined as an @@ -1122,6 +1123,7 @@ func (ty ExplainType) ToString() string { } } +// ToString returns the type as a string func (sel SelectIntoType) ToString() string { switch sel { case IntoOutfile: diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index d5bf0b7e4ed..8537f910975 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1143,13 +1143,21 @@ var ( }, { input: "create index a on b (col1)", }, { - input: "create unique index a on b (col1)", + input: "create unique index a on b (col1)", + output: "create `unique` index a on b (col1)", }, { - input: "create unique index a using foo on b (col1)", + input: "create `unique` index a using foo on b (col1 desc)", }, { - input: "create fulltext index a using foo on b (col1)", + input: "create fulltext index a using foo on b (col1)", + output: "create `fulltext` index a using foo on b (col1)", }, { - input: "create spatial index a using foo on b (col1)", + input: "create spatial index a using foo on b (col1)", + output: "create `spatial` index a using foo on b (col1)", + }, { + input: "create index a on b (col1) using btree key_block_size 12 with parser 'a' comment 'string' algorithm inplace lock none", + }, { + input: "create index a on b ((col1 + col2), (col1*col2))", + output: "create index a on b ()", }, { input: "create view a", output: "create table a", @@ -1823,7 +1831,7 @@ func TestCaseSensitivity(t *testing.T) { input: "create table A (\n\t`B` int\n)", output: "create table A (\n\tB int\n)", }, { - input: "create index b on A (col1)", + input: "create index b on A (col1 desc)", }, { input: "alter table A foo", output: "alter table A", diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go index 27b2f918fb3..f2200637856 100644 --- a/go/vt/sqlparser/rewriter.go +++ b/go/vt/sqlparser/rewriter.go @@ -168,6 +168,22 @@ func replaceConvertUsingExprExpr(newNode, parent SQLNode) { parent.(*ConvertUsingExpr).Expr = newNode.(Expr) } +func replaceCreateIndexConstraint(newNode, parent SQLNode) { + parent.(*CreateIndex).Constraint = newNode.(ColIdent) +} + +func replaceCreateIndexIndexType(newNode, parent SQLNode) { + parent.(*CreateIndex).IndexType = newNode.(ColIdent) +} + +func replaceCreateIndexName(newNode, parent SQLNode) { + parent.(*CreateIndex).Name = newNode.(ColIdent) +} + +func replaceCreateIndexTable(newNode, parent SQLNode) { + parent.(*CreateIndex).Table = newNode.(TableName) +} + func replaceCurTimeFuncExprFsp(newNode, parent SQLNode) { parent.(*CurTimeFuncExpr).Fsp = newNode.(Expr) } @@ -1015,6 +1031,12 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { case *ConvertUsingExpr: a.apply(node, n.Expr, replaceConvertUsingExprExpr) + case *CreateIndex: + a.apply(node, n.Constraint, replaceCreateIndexConstraint) + a.apply(node, n.IndexType, replaceCreateIndexIndexType) + a.apply(node, n.Name, replaceCreateIndexName) + a.apply(node, n.Table, replaceCreateIndexTable) + case *CurTimeFuncExpr: a.apply(node, n.Fsp, replaceCurTimeFuncExprFsp) a.apply(node, n.Name, replaceCurTimeFuncExprName) diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index cf66b5a2644..0ad6816aa8c 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -15,7 +15,7 @@ func setAllowComments(yylex interface{}, allow bool) { yylex.(*Tokenizer).AllowComments = allow } -func setDDL(yylex interface{}, ddl *DDL) { +func setDDL(yylex interface{}, ddl DDLStatement) { yylex.(*Tokenizer).partialDDL = ddl } @@ -122,6 +122,7 @@ type yySymType struct { orderDirection OrderDirection explainType ExplainType selectInto *SelectInto + createIndex *CreateIndex } const LEX_ERROR = 57346 @@ -157,336 +158,343 @@ const UNLOCK = 57375 const KEYS = 57376 const DO = 57377 const DISTINCTROW = 57378 -const OUTFILE = 57379 -const S3 = 57380 -const DATA = 57381 -const LOAD = 57382 -const LINES = 57383 -const TERMINATED = 57384 -const ESCAPED = 57385 -const ENCLOSED = 57386 -const DUMPFILE = 57387 -const CSV = 57388 -const HEADER = 57389 -const MANIFEST = 57390 -const OVERWRITE = 57391 -const STARTING = 57392 -const OPTIONALLY = 57393 -const VALUES = 57394 -const LAST_INSERT_ID = 57395 -const NEXT = 57396 -const VALUE = 57397 -const SHARE = 57398 -const MODE = 57399 -const SQL_NO_CACHE = 57400 -const SQL_CACHE = 57401 -const SQL_CALC_FOUND_ROWS = 57402 -const JOIN = 57403 -const STRAIGHT_JOIN = 57404 -const LEFT = 57405 -const RIGHT = 57406 -const INNER = 57407 -const OUTER = 57408 -const CROSS = 57409 -const NATURAL = 57410 -const USE = 57411 -const FORCE = 57412 -const ON = 57413 -const USING = 57414 -const ID = 57415 -const AT_ID = 57416 -const AT_AT_ID = 57417 -const HEX = 57418 -const STRING = 57419 -const INTEGRAL = 57420 -const FLOAT = 57421 -const HEXNUM = 57422 -const VALUE_ARG = 57423 -const LIST_ARG = 57424 -const COMMENT = 57425 -const COMMENT_KEYWORD = 57426 -const BIT_LITERAL = 57427 -const NULL = 57428 -const TRUE = 57429 -const FALSE = 57430 -const OFF = 57431 -const OR = 57432 -const XOR = 57433 -const AND = 57434 -const NOT = 57435 -const BETWEEN = 57436 -const CASE = 57437 -const WHEN = 57438 -const THEN = 57439 -const ELSE = 57440 -const END = 57441 -const LE = 57442 -const GE = 57443 -const NE = 57444 -const NULL_SAFE_EQUAL = 57445 -const IS = 57446 -const LIKE = 57447 -const REGEXP = 57448 -const IN = 57449 -const SHIFT_LEFT = 57450 -const SHIFT_RIGHT = 57451 -const DIV = 57452 -const MOD = 57453 -const UNARY = 57454 -const COLLATE = 57455 -const BINARY = 57456 -const UNDERSCORE_BINARY = 57457 -const UNDERSCORE_UTF8MB4 = 57458 -const UNDERSCORE_UTF8 = 57459 -const UNDERSCORE_LATIN1 = 57460 -const INTERVAL = 57461 -const JSON_EXTRACT_OP = 57462 -const JSON_UNQUOTE_EXTRACT_OP = 57463 -const CREATE = 57464 -const ALTER = 57465 -const DROP = 57466 -const RENAME = 57467 -const ANALYZE = 57468 -const ADD = 57469 -const FLUSH = 57470 -const SCHEMA = 57471 -const TABLE = 57472 -const INDEX = 57473 -const VIEW = 57474 -const TO = 57475 -const IGNORE = 57476 -const IF = 57477 -const UNIQUE = 57478 -const PRIMARY = 57479 -const COLUMN = 57480 -const SPATIAL = 57481 -const FULLTEXT = 57482 -const KEY_BLOCK_SIZE = 57483 -const CHECK = 57484 -const INDEXES = 57485 -const ACTION = 57486 -const CASCADE = 57487 -const CONSTRAINT = 57488 -const FOREIGN = 57489 -const NO = 57490 -const REFERENCES = 57491 -const RESTRICT = 57492 -const SHOW = 57493 -const DESCRIBE = 57494 -const EXPLAIN = 57495 -const DATE = 57496 -const ESCAPE = 57497 -const REPAIR = 57498 -const OPTIMIZE = 57499 -const TRUNCATE = 57500 -const MAXVALUE = 57501 -const PARTITION = 57502 -const REORGANIZE = 57503 -const LESS = 57504 -const THAN = 57505 -const PROCEDURE = 57506 -const TRIGGER = 57507 -const VINDEX = 57508 -const VINDEXES = 57509 -const STATUS = 57510 -const VARIABLES = 57511 -const WARNINGS = 57512 -const SEQUENCE = 57513 -const BEGIN = 57514 -const START = 57515 -const TRANSACTION = 57516 -const COMMIT = 57517 -const ROLLBACK = 57518 -const SAVEPOINT = 57519 -const RELEASE = 57520 -const WORK = 57521 -const BIT = 57522 -const TINYINT = 57523 -const SMALLINT = 57524 -const MEDIUMINT = 57525 -const INT = 57526 -const INTEGER = 57527 -const BIGINT = 57528 -const INTNUM = 57529 -const REAL = 57530 -const DOUBLE = 57531 -const FLOAT_TYPE = 57532 -const DECIMAL = 57533 -const NUMERIC = 57534 -const TIME = 57535 -const TIMESTAMP = 57536 -const DATETIME = 57537 -const YEAR = 57538 -const CHAR = 57539 -const VARCHAR = 57540 -const BOOL = 57541 -const CHARACTER = 57542 -const VARBINARY = 57543 -const NCHAR = 57544 -const TEXT = 57545 -const TINYTEXT = 57546 -const MEDIUMTEXT = 57547 -const LONGTEXT = 57548 -const BLOB = 57549 -const TINYBLOB = 57550 -const MEDIUMBLOB = 57551 -const LONGBLOB = 57552 -const JSON = 57553 -const ENUM = 57554 -const GEOMETRY = 57555 -const POINT = 57556 -const LINESTRING = 57557 -const POLYGON = 57558 -const GEOMETRYCOLLECTION = 57559 -const MULTIPOINT = 57560 -const MULTILINESTRING = 57561 -const MULTIPOLYGON = 57562 -const NULLX = 57563 -const AUTO_INCREMENT = 57564 -const APPROXNUM = 57565 -const SIGNED = 57566 -const UNSIGNED = 57567 -const ZEROFILL = 57568 -const COLLATION = 57569 -const DATABASES = 57570 -const TABLES = 57571 -const VITESS_METADATA = 57572 -const VSCHEMA = 57573 -const FULL = 57574 -const PROCESSLIST = 57575 -const COLUMNS = 57576 -const FIELDS = 57577 -const ENGINES = 57578 -const PLUGINS = 57579 -const EXTENDED = 57580 -const KEYSPACES = 57581 -const VITESS_KEYSPACES = 57582 -const VITESS_SHARDS = 57583 -const VITESS_TABLETS = 57584 -const NAMES = 57585 -const CHARSET = 57586 -const GLOBAL = 57587 -const SESSION = 57588 -const ISOLATION = 57589 -const LEVEL = 57590 -const READ = 57591 -const WRITE = 57592 -const ONLY = 57593 -const REPEATABLE = 57594 -const COMMITTED = 57595 -const UNCOMMITTED = 57596 -const SERIALIZABLE = 57597 -const CURRENT_TIMESTAMP = 57598 -const DATABASE = 57599 -const CURRENT_DATE = 57600 -const CURRENT_TIME = 57601 -const LOCALTIME = 57602 -const LOCALTIMESTAMP = 57603 -const UTC_DATE = 57604 -const UTC_TIME = 57605 -const UTC_TIMESTAMP = 57606 -const REPLACE = 57607 -const CONVERT = 57608 -const CAST = 57609 -const SUBSTR = 57610 -const SUBSTRING = 57611 -const GROUP_CONCAT = 57612 -const SEPARATOR = 57613 -const TIMESTAMPADD = 57614 -const TIMESTAMPDIFF = 57615 -const MATCH = 57616 -const AGAINST = 57617 -const BOOLEAN = 57618 -const LANGUAGE = 57619 -const WITH = 57620 -const QUERY = 57621 -const EXPANSION = 57622 -const UNUSED = 57623 -const ARRAY = 57624 -const CUME_DIST = 57625 -const DESCRIPTION = 57626 -const DENSE_RANK = 57627 -const EMPTY = 57628 -const EXCEPT = 57629 -const FIRST_VALUE = 57630 -const GROUPING = 57631 -const GROUPS = 57632 -const JSON_TABLE = 57633 -const LAG = 57634 -const LAST_VALUE = 57635 -const LATERAL = 57636 -const LEAD = 57637 -const MEMBER = 57638 -const NTH_VALUE = 57639 -const NTILE = 57640 -const OF = 57641 -const OVER = 57642 -const PERCENT_RANK = 57643 -const RANK = 57644 -const RECURSIVE = 57645 -const ROW_NUMBER = 57646 -const SYSTEM = 57647 -const WINDOW = 57648 -const ACTIVE = 57649 -const ADMIN = 57650 -const BUCKETS = 57651 -const CLONE = 57652 -const COMPONENT = 57653 -const DEFINITION = 57654 -const ENFORCED = 57655 -const EXCLUDE = 57656 -const FOLLOWING = 57657 -const GEOMCOLLECTION = 57658 -const GET_MASTER_PUBLIC_KEY = 57659 -const HISTOGRAM = 57660 -const HISTORY = 57661 -const INACTIVE = 57662 -const INVISIBLE = 57663 -const LOCKED = 57664 -const MASTER_COMPRESSION_ALGORITHMS = 57665 -const MASTER_PUBLIC_KEY_PATH = 57666 -const MASTER_TLS_CIPHERSUITES = 57667 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57668 -const NESTED = 57669 -const NETWORK_NAMESPACE = 57670 -const NOWAIT = 57671 -const NULLS = 57672 -const OJ = 57673 -const OLD = 57674 -const OPTIONAL = 57675 -const ORDINALITY = 57676 -const ORGANIZATION = 57677 -const OTHERS = 57678 -const PATH = 57679 -const PERSIST = 57680 -const PERSIST_ONLY = 57681 -const PRECEDING = 57682 -const PRIVILEGE_CHECKS_USER = 57683 -const PROCESS = 57684 -const RANDOM = 57685 -const REFERENCE = 57686 -const REQUIRE_ROW_FORMAT = 57687 -const RESOURCE = 57688 -const RESPECT = 57689 -const RESTART = 57690 -const RETAIN = 57691 -const REUSE = 57692 -const ROLE = 57693 -const SECONDARY = 57694 -const SECONDARY_ENGINE = 57695 -const SECONDARY_LOAD = 57696 -const SECONDARY_UNLOAD = 57697 -const SKIP = 57698 -const SRID = 57699 -const THREAD_PRIORITY = 57700 -const TIES = 57701 -const UNBOUNDED = 57702 -const VCPU = 57703 -const VISIBLE = 57704 -const FORMAT = 57705 -const TREE = 57706 -const VITESS = 57707 -const TRADITIONAL = 57708 +const PARSER = 57379 +const OUTFILE = 57380 +const S3 = 57381 +const DATA = 57382 +const LOAD = 57383 +const LINES = 57384 +const TERMINATED = 57385 +const ESCAPED = 57386 +const ENCLOSED = 57387 +const DUMPFILE = 57388 +const CSV = 57389 +const HEADER = 57390 +const MANIFEST = 57391 +const OVERWRITE = 57392 +const STARTING = 57393 +const OPTIONALLY = 57394 +const VALUES = 57395 +const LAST_INSERT_ID = 57396 +const NEXT = 57397 +const VALUE = 57398 +const SHARE = 57399 +const MODE = 57400 +const SQL_NO_CACHE = 57401 +const SQL_CACHE = 57402 +const SQL_CALC_FOUND_ROWS = 57403 +const JOIN = 57404 +const STRAIGHT_JOIN = 57405 +const LEFT = 57406 +const RIGHT = 57407 +const INNER = 57408 +const OUTER = 57409 +const CROSS = 57410 +const NATURAL = 57411 +const USE = 57412 +const FORCE = 57413 +const ON = 57414 +const USING = 57415 +const INPLACE = 57416 +const COPY = 57417 +const ALGORITHM = 57418 +const NONE = 57419 +const SHARED = 57420 +const EXCLUSIVE = 57421 +const ID = 57422 +const AT_ID = 57423 +const AT_AT_ID = 57424 +const HEX = 57425 +const STRING = 57426 +const INTEGRAL = 57427 +const FLOAT = 57428 +const HEXNUM = 57429 +const VALUE_ARG = 57430 +const LIST_ARG = 57431 +const COMMENT = 57432 +const COMMENT_KEYWORD = 57433 +const BIT_LITERAL = 57434 +const NULL = 57435 +const TRUE = 57436 +const FALSE = 57437 +const OFF = 57438 +const OR = 57439 +const XOR = 57440 +const AND = 57441 +const NOT = 57442 +const BETWEEN = 57443 +const CASE = 57444 +const WHEN = 57445 +const THEN = 57446 +const ELSE = 57447 +const END = 57448 +const LE = 57449 +const GE = 57450 +const NE = 57451 +const NULL_SAFE_EQUAL = 57452 +const IS = 57453 +const LIKE = 57454 +const REGEXP = 57455 +const IN = 57456 +const SHIFT_LEFT = 57457 +const SHIFT_RIGHT = 57458 +const DIV = 57459 +const MOD = 57460 +const UNARY = 57461 +const COLLATE = 57462 +const BINARY = 57463 +const UNDERSCORE_BINARY = 57464 +const UNDERSCORE_UTF8MB4 = 57465 +const UNDERSCORE_UTF8 = 57466 +const UNDERSCORE_LATIN1 = 57467 +const INTERVAL = 57468 +const JSON_EXTRACT_OP = 57469 +const JSON_UNQUOTE_EXTRACT_OP = 57470 +const CREATE = 57471 +const ALTER = 57472 +const DROP = 57473 +const RENAME = 57474 +const ANALYZE = 57475 +const ADD = 57476 +const FLUSH = 57477 +const SCHEMA = 57478 +const TABLE = 57479 +const INDEX = 57480 +const VIEW = 57481 +const TO = 57482 +const IGNORE = 57483 +const IF = 57484 +const UNIQUE = 57485 +const PRIMARY = 57486 +const COLUMN = 57487 +const SPATIAL = 57488 +const FULLTEXT = 57489 +const KEY_BLOCK_SIZE = 57490 +const CHECK = 57491 +const INDEXES = 57492 +const ACTION = 57493 +const CASCADE = 57494 +const CONSTRAINT = 57495 +const FOREIGN = 57496 +const NO = 57497 +const REFERENCES = 57498 +const RESTRICT = 57499 +const SHOW = 57500 +const DESCRIBE = 57501 +const EXPLAIN = 57502 +const DATE = 57503 +const ESCAPE = 57504 +const REPAIR = 57505 +const OPTIMIZE = 57506 +const TRUNCATE = 57507 +const MAXVALUE = 57508 +const PARTITION = 57509 +const REORGANIZE = 57510 +const LESS = 57511 +const THAN = 57512 +const PROCEDURE = 57513 +const TRIGGER = 57514 +const VINDEX = 57515 +const VINDEXES = 57516 +const STATUS = 57517 +const VARIABLES = 57518 +const WARNINGS = 57519 +const SEQUENCE = 57520 +const BEGIN = 57521 +const START = 57522 +const TRANSACTION = 57523 +const COMMIT = 57524 +const ROLLBACK = 57525 +const SAVEPOINT = 57526 +const RELEASE = 57527 +const WORK = 57528 +const BIT = 57529 +const TINYINT = 57530 +const SMALLINT = 57531 +const MEDIUMINT = 57532 +const INT = 57533 +const INTEGER = 57534 +const BIGINT = 57535 +const INTNUM = 57536 +const REAL = 57537 +const DOUBLE = 57538 +const FLOAT_TYPE = 57539 +const DECIMAL = 57540 +const NUMERIC = 57541 +const TIME = 57542 +const TIMESTAMP = 57543 +const DATETIME = 57544 +const YEAR = 57545 +const CHAR = 57546 +const VARCHAR = 57547 +const BOOL = 57548 +const CHARACTER = 57549 +const VARBINARY = 57550 +const NCHAR = 57551 +const TEXT = 57552 +const TINYTEXT = 57553 +const MEDIUMTEXT = 57554 +const LONGTEXT = 57555 +const BLOB = 57556 +const TINYBLOB = 57557 +const MEDIUMBLOB = 57558 +const LONGBLOB = 57559 +const JSON = 57560 +const ENUM = 57561 +const GEOMETRY = 57562 +const POINT = 57563 +const LINESTRING = 57564 +const POLYGON = 57565 +const GEOMETRYCOLLECTION = 57566 +const MULTIPOINT = 57567 +const MULTILINESTRING = 57568 +const MULTIPOLYGON = 57569 +const NULLX = 57570 +const AUTO_INCREMENT = 57571 +const APPROXNUM = 57572 +const SIGNED = 57573 +const UNSIGNED = 57574 +const ZEROFILL = 57575 +const COLLATION = 57576 +const DATABASES = 57577 +const TABLES = 57578 +const VITESS_METADATA = 57579 +const VSCHEMA = 57580 +const FULL = 57581 +const PROCESSLIST = 57582 +const COLUMNS = 57583 +const FIELDS = 57584 +const ENGINES = 57585 +const PLUGINS = 57586 +const EXTENDED = 57587 +const KEYSPACES = 57588 +const VITESS_KEYSPACES = 57589 +const VITESS_SHARDS = 57590 +const VITESS_TABLETS = 57591 +const NAMES = 57592 +const CHARSET = 57593 +const GLOBAL = 57594 +const SESSION = 57595 +const ISOLATION = 57596 +const LEVEL = 57597 +const READ = 57598 +const WRITE = 57599 +const ONLY = 57600 +const REPEATABLE = 57601 +const COMMITTED = 57602 +const UNCOMMITTED = 57603 +const SERIALIZABLE = 57604 +const CURRENT_TIMESTAMP = 57605 +const DATABASE = 57606 +const CURRENT_DATE = 57607 +const CURRENT_TIME = 57608 +const LOCALTIME = 57609 +const LOCALTIMESTAMP = 57610 +const UTC_DATE = 57611 +const UTC_TIME = 57612 +const UTC_TIMESTAMP = 57613 +const REPLACE = 57614 +const CONVERT = 57615 +const CAST = 57616 +const SUBSTR = 57617 +const SUBSTRING = 57618 +const GROUP_CONCAT = 57619 +const SEPARATOR = 57620 +const TIMESTAMPADD = 57621 +const TIMESTAMPDIFF = 57622 +const MATCH = 57623 +const AGAINST = 57624 +const BOOLEAN = 57625 +const LANGUAGE = 57626 +const WITH = 57627 +const QUERY = 57628 +const EXPANSION = 57629 +const UNUSED = 57630 +const ARRAY = 57631 +const CUME_DIST = 57632 +const DESCRIPTION = 57633 +const DENSE_RANK = 57634 +const EMPTY = 57635 +const EXCEPT = 57636 +const FIRST_VALUE = 57637 +const GROUPING = 57638 +const GROUPS = 57639 +const JSON_TABLE = 57640 +const LAG = 57641 +const LAST_VALUE = 57642 +const LATERAL = 57643 +const LEAD = 57644 +const MEMBER = 57645 +const NTH_VALUE = 57646 +const NTILE = 57647 +const OF = 57648 +const OVER = 57649 +const PERCENT_RANK = 57650 +const RANK = 57651 +const RECURSIVE = 57652 +const ROW_NUMBER = 57653 +const SYSTEM = 57654 +const WINDOW = 57655 +const ACTIVE = 57656 +const ADMIN = 57657 +const BUCKETS = 57658 +const CLONE = 57659 +const COMPONENT = 57660 +const DEFINITION = 57661 +const ENFORCED = 57662 +const EXCLUDE = 57663 +const FOLLOWING = 57664 +const GEOMCOLLECTION = 57665 +const GET_MASTER_PUBLIC_KEY = 57666 +const HISTOGRAM = 57667 +const HISTORY = 57668 +const INACTIVE = 57669 +const INVISIBLE = 57670 +const LOCKED = 57671 +const MASTER_COMPRESSION_ALGORITHMS = 57672 +const MASTER_PUBLIC_KEY_PATH = 57673 +const MASTER_TLS_CIPHERSUITES = 57674 +const MASTER_ZSTD_COMPRESSION_LEVEL = 57675 +const NESTED = 57676 +const NETWORK_NAMESPACE = 57677 +const NOWAIT = 57678 +const NULLS = 57679 +const OJ = 57680 +const OLD = 57681 +const OPTIONAL = 57682 +const ORDINALITY = 57683 +const ORGANIZATION = 57684 +const OTHERS = 57685 +const PATH = 57686 +const PERSIST = 57687 +const PERSIST_ONLY = 57688 +const PRECEDING = 57689 +const PRIVILEGE_CHECKS_USER = 57690 +const PROCESS = 57691 +const RANDOM = 57692 +const REFERENCE = 57693 +const REQUIRE_ROW_FORMAT = 57694 +const RESOURCE = 57695 +const RESPECT = 57696 +const RESTART = 57697 +const RETAIN = 57698 +const REUSE = 57699 +const ROLE = 57700 +const SECONDARY = 57701 +const SECONDARY_ENGINE = 57702 +const SECONDARY_LOAD = 57703 +const SECONDARY_UNLOAD = 57704 +const SKIP = 57705 +const SRID = 57706 +const THREAD_PRIORITY = 57707 +const TIES = 57708 +const UNBOUNDED = 57709 +const VCPU = 57710 +const VISIBLE = 57711 +const FORMAT = 57712 +const TREE = 57713 +const VITESS = 57714 +const TRADITIONAL = 57715 var yyToknames = [...]string{ "$end", @@ -525,6 +533,7 @@ var yyToknames = [...]string{ "KEYS", "DO", "DISTINCTROW", + "PARSER", "OUTFILE", "S3", "DATA", @@ -561,6 +570,12 @@ var yyToknames = [...]string{ "FORCE", "ON", "USING", + "INPLACE", + "COPY", + "ALGORITHM", + "NONE", + "SHARED", + "EXCLUSIVE", "'('", "','", "')'", @@ -885,1994 +900,2101 @@ var yyExca = [...]int{ -1, 1, 1, -1, -2, 0, - -1, 45, - 34, 323, - 148, 323, - 160, 323, - 185, 337, - 186, 337, - -2, 325, - -1, 50, - 150, 347, - -2, 345, - -1, 74, - 54, 383, - -2, 391, - -1, 416, - 136, 748, - -2, 744, - -1, 417, - 136, 749, - -2, 745, - -1, 432, - 54, 384, - -2, 396, - -1, 433, - 54, 385, - -2, 397, - -1, 453, - 104, 1016, + -1, 46, + 34, 326, + 155, 326, + 167, 326, + 192, 340, + 193, 340, + -2, 328, + -1, 51, + 157, 350, + -2, 348, + -1, 75, + 55, 386, + -2, 394, + -1, 425, + 143, 763, + -2, 759, + -1, 426, + 143, 764, + -2, 760, + -1, 441, + 55, 387, + -2, 399, + -1, 442, + 55, 388, + -2, 400, + -1, 462, + 111, 1037, -2, 76, - -1, 454, - 104, 924, + -1, 463, + 111, 942, -2, 77, - -1, 459, - 104, 886, - -2, 707, - -1, 461, - 104, 960, - -2, 709, - -1, 972, - 136, 751, - -2, 747, - -1, 1059, - 72, 58, - 74, 58, + -1, 468, + 111, 902, + -2, 722, + -1, 470, + 111, 979, + -2, 724, + -1, 988, + 143, 766, + -2, 762, + -1, 1075, + 73, 58, + 81, 58, -2, 62, - -1, 1422, - 5, 635, - 18, 635, - 20, 635, - 32, 635, - 75, 635, - -2, 422, - -1, 1620, - 44, 678, - -2, 676, + -1, 1458, + 5, 638, + 18, 638, + 20, 638, + 32, 638, + 82, 638, + -2, 425, + -1, 1658, + 45, 693, + -2, 691, } const yyPrivate = 57344 -const yyLast = 19127 +const yyLast = 20197 var yyAct = [...]int{ - 416, 1706, 1468, 1716, 1620, 1642, 1674, 1344, 1532, 1244, - 1546, 1563, 1264, 1402, 1401, 1585, 360, 1081, 375, 1053, - 1438, 1398, 1245, 1126, 759, 73, 3, 1363, 588, 1077, - 766, 1294, 1090, 346, 389, 719, 1080, 458, 637, 1180, - 94, 1408, 1231, 893, 306, 959, 329, 306, 620, 1321, - 1414, 1311, 94, 966, 306, 912, 1094, 1050, 797, 804, - 71, 1039, 585, 1055, 1032, 425, 786, 769, 992, 787, - 764, 419, 29, 434, 936, 803, 362, 1122, 801, 776, - 584, 1061, 94, 69, 358, 94, 306, 74, 306, 347, - 732, 794, 350, 629, 922, 351, 68, 733, 1617, 1461, - 8, 907, 1542, 1565, 609, 294, 1709, 969, 292, 7, - 6, 401, 1148, 407, 408, 405, 406, 404, 403, 402, - 76, 77, 78, 79, 80, 81, 1147, 409, 410, 1671, - 1704, 1650, 1697, 1670, 997, 1469, 1649, 1380, 1498, 593, - 1433, 1434, 420, 1432, 440, 444, 1611, 681, 680, 690, - 691, 683, 684, 685, 686, 687, 688, 689, 682, 1071, - 452, 692, 1111, 652, 31, 1072, 1073, 62, 35, 36, - 645, 646, 96, 97, 98, 302, 298, 299, 300, 1364, - 96, 97, 98, 1146, 1281, 349, 805, 1280, 806, 647, - 1282, 348, 1302, 648, 645, 646, 1104, 1535, 1652, 1346, - 96, 97, 98, 1112, 1489, 339, 1487, 295, 428, 921, - 337, 341, 640, 641, 650, 642, 880, 881, 1348, 878, - 1366, 1703, 1696, 1643, 1343, 651, 1720, 1033, 1635, 1586, - 639, 61, 635, 293, 1130, 1724, 1143, 1140, 1141, 1441, - 1139, 1130, 1130, 610, 1588, 587, 1594, 923, 924, 925, - 595, 626, 879, 628, 296, 1347, 446, 1368, 882, 1372, - 1349, 1367, 886, 1365, 655, 1265, 1267, 1098, 1370, 869, - 1425, 1098, 1340, 1150, 1153, 1424, 1423, 1369, 1342, 591, - 598, 309, 297, 1624, 1160, 625, 627, 1159, 1277, 1199, - 1371, 1373, 1196, 306, 600, 601, 704, 705, 306, 1514, - 611, 1431, 1236, 301, 306, 1209, 1188, 1067, 780, 717, - 306, 618, 455, 1145, 624, 1587, 616, 1078, 96, 97, - 98, 94, 692, 605, 913, 390, 30, 1612, 682, 1011, - 94, 692, 669, 1460, 622, 1144, 908, 84, 630, 943, - 1331, 1112, 94, 94, 672, 1300, 634, 1266, 672, 1633, - 96, 97, 98, 941, 942, 940, 30, 1718, 636, 1603, - 1719, 1648, 1717, 671, 669, 96, 97, 98, 654, 661, - 1595, 1593, 1653, 1382, 837, 1412, 85, 653, 623, 1149, - 672, 871, 666, 667, 993, 807, 1097, 1327, 1328, 1329, - 1097, 602, 665, 603, 1151, 421, 604, 1341, 993, 1339, - 1206, 1725, 1638, 773, 310, 612, 613, 614, 61, 631, - 632, 1698, 1662, 313, 704, 705, 1690, 704, 705, 1452, - 939, 322, 1101, 670, 671, 669, 914, 643, 1541, 1102, - 1540, 1384, 1699, 621, 702, 1501, 1105, 1691, 909, 1315, - 63, 672, 802, 94, 664, 445, 306, 757, 306, 306, - 756, 94, 755, 662, 663, 320, 1314, 94, 1303, 1330, - 1726, 327, 1701, 720, 1335, 1332, 1323, 1333, 1326, 1700, - 1322, 1692, 1682, 825, 1324, 1325, 681, 680, 690, 691, - 683, 684, 685, 686, 687, 688, 689, 682, 1334, 1664, - 692, 311, 1388, 735, 737, 739, 741, 743, 745, 746, - 736, 738, 1411, 742, 744, 785, 747, 1634, 770, 1559, - 758, 1173, 1174, 1175, 838, 1538, 1502, 594, 324, 314, - 1390, 325, 326, 333, 450, 447, 448, 317, 319, 330, - 315, 316, 335, 334, 1389, 312, 332, 331, 1312, 768, - 851, 854, 855, 856, 857, 858, 859, 906, 860, 861, - 862, 863, 864, 839, 840, 841, 842, 823, 824, 852, - 898, 826, 884, 827, 828, 829, 830, 831, 832, 833, - 834, 835, 836, 843, 844, 845, 846, 847, 848, 849, - 850, 96, 97, 98, 306, 1316, 606, 429, 865, 670, - 671, 669, 867, 94, 1600, 870, 1599, 872, 306, 306, - 94, 94, 94, 670, 671, 669, 306, 672, 596, 597, - 306, 1591, 1702, 306, 891, 892, 1448, 306, 1099, 94, - 72, 672, 1666, 429, 94, 94, 94, 306, 94, 94, - 1035, 868, 1591, 1646, 1591, 429, 853, 1195, 875, 876, - 877, 94, 94, 96, 97, 98, 638, 961, 685, 686, - 687, 688, 689, 682, 895, 638, 692, 896, 931, 933, - 934, 1509, 900, 901, 902, 932, 904, 905, 897, 30, - 96, 97, 98, 1036, 1284, 1194, 70, 1193, 1024, 910, - 911, 455, 701, 703, 683, 684, 685, 686, 687, 688, - 689, 682, 1399, 960, 692, 1411, 670, 671, 669, 668, - 916, 887, 962, 1591, 1625, 1591, 1590, 670, 671, 669, - 937, 1016, 1017, 716, 672, 1025, 94, 721, 722, 723, - 724, 725, 726, 727, 728, 672, 731, 734, 734, 734, - 740, 734, 734, 740, 734, 748, 749, 750, 751, 752, - 753, 754, 981, 984, 918, 915, 429, 30, 994, 94, - 94, 976, 938, 1530, 1529, 972, 1041, 1044, 1045, 1046, - 1042, 971, 1043, 1047, 1013, 1063, 1415, 1416, 94, 1345, - 1516, 429, 1271, 791, 1062, 306, 720, 1024, 94, 670, - 671, 669, 306, 1602, 306, 1512, 429, 1458, 1457, 963, - 964, 1456, 306, 306, 306, 1454, 1455, 672, 1454, 1453, - 94, 31, 973, 94, 1063, 1002, 1003, 1024, 429, 1036, - 429, 668, 429, 1232, 94, 94, 1036, 1051, 972, 1012, - 814, 813, 1006, 1232, 1030, 1064, 1239, 1066, 1285, 977, - 978, 1070, 1018, 983, 986, 987, 1212, 1211, 670, 671, - 669, 1024, 1062, 1096, 1026, 422, 1014, 1240, 885, 417, - 799, 61, 31, 974, 975, 31, 672, 1028, 1001, 1683, - 1548, 1004, 1005, 1106, 1064, 1549, 1062, 1521, 61, 1127, - 306, 94, 1444, 94, 1036, 1152, 1069, 1065, 1068, 306, - 306, 306, 306, 306, 1411, 1060, 306, 306, 1128, 95, - 306, 94, 1007, 307, 1129, 1085, 307, 866, 1570, 1415, - 1416, 95, 1289, 307, 1123, 1117, 1116, 1133, 306, 1135, - 1221, 1137, 61, 1711, 306, 306, 306, 1421, 638, 61, - 306, 94, 61, 1707, 1446, 638, 638, 638, 1418, 1164, - 1399, 95, 1420, 1317, 95, 307, 429, 307, 919, 1124, - 1125, 889, 1256, 1258, 638, 1045, 1046, 1257, 970, 638, - 638, 638, 1253, 638, 638, 1252, 1041, 1044, 1045, 1046, - 1042, 1166, 1043, 1047, 1254, 1170, 638, 638, 1687, 1255, - 1669, 1391, 767, 1685, 1513, 937, 681, 680, 690, 691, - 683, 684, 685, 686, 687, 688, 689, 682, 1230, 1229, - 692, 1113, 1114, 1115, 681, 680, 690, 691, 683, 684, - 685, 686, 687, 688, 689, 682, 1658, 1655, 692, 1689, - 1673, 970, 1675, 1681, 1680, 1176, 1219, 938, 378, 377, - 380, 381, 382, 383, 1220, 1621, 306, 379, 384, 1619, - 455, 1218, 418, 455, 989, 760, 1307, 306, 306, 306, - 306, 306, 1190, 1225, 1082, 1189, 420, 761, 990, 306, - 812, 1181, 1246, 306, 619, 1299, 1640, 306, 1241, 1639, - 1205, 1568, 306, 306, 1297, 1291, 306, 306, 306, 1507, - 1544, 1009, 1136, 888, 1237, 1185, 1186, 1049, 1263, 1283, - 1228, 94, 426, 1234, 1694, 1224, 423, 424, 1227, 1693, - 1290, 1678, 1233, 1659, 1295, 1295, 1203, 1183, 1286, 1506, - 1235, 1184, 427, 1247, 72, 895, 1250, 1248, 1249, 1259, - 1251, 1505, 1191, 1192, 1394, 1232, 649, 1052, 1198, 1272, - 1269, 1201, 1202, 1274, 1270, 1275, 1296, 1713, 1712, 1208, - 1278, 1200, 1197, 1210, 94, 94, 1213, 1214, 1215, 1216, - 1217, 1306, 307, 1308, 1309, 1310, 781, 307, 1288, 1292, - 1293, 774, 1713, 307, 1622, 1536, 422, 1010, 70, 307, - 75, 67, 1, 435, 94, 328, 1705, 1470, 435, 1313, - 95, 1545, 1320, 1319, 1142, 1641, 1584, 436, 1437, 95, - 1088, 1079, 436, 83, 582, 1261, 1262, 82, 1632, 94, - 1336, 95, 95, 633, 1087, 960, 638, 1086, 638, 771, - 772, 438, 1350, 437, 432, 433, 438, 1592, 437, 1301, - 1103, 1534, 1445, 1298, 1637, 1362, 638, 1353, 820, 818, - 1361, 1351, 819, 1375, 817, 1352, 822, 306, 821, 816, - 321, 920, 338, 1048, 1381, 808, 1132, 94, 775, 86, - 1374, 1359, 1338, 94, 94, 1337, 1138, 972, 1459, 1400, - 1100, 318, 644, 971, 323, 291, 1246, 700, 1226, 1279, - 1107, 1108, 1109, 1110, 456, 449, 1405, 1679, 1656, 94, - 1304, 1305, 306, 1654, 1618, 1403, 1118, 1119, 1120, 1121, - 1564, 1657, 442, 1616, 1688, 1672, 94, 1410, 94, 1008, - 94, 1015, 95, 1295, 1295, 307, 1187, 307, 307, 421, - 95, 1419, 763, 1397, 1504, 1436, 95, 1393, 1451, 1204, - 1426, 1082, 729, 1427, 991, 1429, 790, 1430, 306, 1096, - 1357, 1358, 1435, 1440, 1442, 1443, 361, 930, 376, 1428, - 373, 374, 1019, 1238, 1449, 1450, 674, 359, 306, 353, - 789, 782, 352, 1040, 94, 1038, 1471, 94, 94, 94, - 306, 791, 1037, 795, 1417, 1463, 1413, 788, 1242, 1243, - 1023, 1500, 791, 791, 791, 791, 791, 431, 988, 1610, - 1464, 1497, 1466, 430, 53, 34, 343, 1406, 1052, 657, - 1268, 439, 28, 23, 22, 21, 20, 791, 19, 25, - 18, 791, 1485, 17, 16, 607, 38, 27, 1422, 26, - 1476, 1477, 681, 680, 690, 691, 683, 684, 685, 686, - 687, 688, 689, 682, 15, 14, 692, 13, 12, 1360, - 11, 10, 1508, 9, 5, 4, 660, 1480, 1246, 24, - 718, 2, 0, 307, 1518, 0, 94, 0, 0, 0, - 1385, 1517, 95, 0, 0, 94, 0, 307, 307, 95, - 95, 95, 0, 1286, 0, 307, 387, 0, 1527, 307, - 638, 0, 307, 94, 0, 0, 307, 1360, 95, 0, - 94, 1528, 0, 95, 95, 95, 307, 95, 95, 0, - 0, 0, 0, 0, 1552, 0, 0, 0, 0, 638, - 95, 95, 0, 0, 1479, 0, 93, 0, 1481, 0, - 0, 1543, 0, 0, 0, 1550, 0, 0, 340, 1490, - 1491, 0, 0, 94, 0, 94, 1082, 94, 1082, 0, - 0, 0, 94, 1569, 94, 94, 94, 306, 1573, 0, - 1577, 94, 1578, 1580, 1581, 0, 0, 1571, 457, 1510, - 1511, 586, 1567, 1515, 1403, 0, 1582, 0, 1403, 94, - 306, 1589, 1503, 0, 0, 1596, 0, 1604, 0, 0, - 0, 1526, 0, 1558, 0, 95, 1404, 1597, 30, 1598, - 681, 680, 690, 691, 683, 684, 685, 686, 687, 688, - 689, 682, 0, 1576, 692, 1623, 0, 1631, 0, 0, - 0, 0, 94, 1583, 0, 1629, 0, 791, 95, 95, - 1630, 0, 0, 94, 94, 1403, 0, 0, 0, 0, - 0, 0, 0, 1644, 0, 0, 1537, 95, 1539, 0, - 0, 1645, 0, 0, 307, 94, 0, 95, 1651, 0, - 0, 307, 1660, 307, 0, 0, 306, 673, 0, 1246, - 0, 307, 307, 307, 94, 0, 1551, 0, 0, 95, - 0, 0, 95, 355, 1668, 0, 0, 0, 1579, 1677, - 1676, 0, 0, 95, 95, 1562, 1082, 0, 0, 0, - 0, 1686, 1684, 352, 0, 0, 0, 0, 0, 0, - 0, 0, 730, 0, 94, 0, 0, 0, 1606, 1607, - 1608, 1609, 1695, 1613, 388, 1614, 1615, 0, 0, 0, - 1547, 0, 0, 0, 0, 0, 1496, 1710, 0, 762, - 765, 0, 0, 1626, 0, 1627, 1628, 1721, 1495, 307, - 95, 0, 95, 0, 0, 0, 0, 0, 307, 307, - 307, 307, 307, 0, 0, 307, 307, 0, 305, 307, - 95, 336, 0, 0, 0, 1647, 0, 0, 305, 1523, - 1524, 1525, 0, 0, 0, 0, 1494, 307, 0, 0, - 0, 0, 0, 307, 307, 307, 0, 0, 0, 307, - 95, 443, 443, 0, 0, 0, 1665, 457, 0, 0, - 305, 0, 305, 0, 0, 0, 457, 0, 638, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 656, 658, - 0, 1482, 1483, 0, 1484, 0, 0, 1486, 0, 1488, - 0, 0, 0, 681, 680, 690, 691, 683, 684, 685, - 686, 687, 688, 689, 682, 0, 0, 692, 0, 0, - 0, 0, 0, 1547, 1082, 1404, 0, 30, 0, 1404, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1722, - 1723, 681, 680, 690, 691, 683, 684, 685, 686, 687, - 688, 689, 682, 0, 0, 692, 0, 0, 0, 0, - 1601, 0, 0, 0, 0, 307, 1531, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 307, 307, 307, 307, - 307, 0, 0, 0, 0, 0, 1404, 0, 307, 778, - 0, 0, 307, 0, 0, 899, 307, 457, 0, 0, - 0, 307, 307, 809, 1354, 307, 307, 307, 680, 690, - 691, 683, 684, 685, 686, 687, 688, 689, 682, 0, - 95, 692, 917, 0, 681, 680, 690, 691, 683, 684, - 685, 686, 687, 688, 689, 682, 0, 676, 692, 679, - 0, 926, 927, 928, 929, 693, 694, 695, 696, 697, - 698, 699, 0, 677, 678, 675, 681, 680, 690, 691, - 683, 684, 685, 686, 687, 688, 689, 682, 0, 0, - 692, 0, 0, 95, 95, 0, 0, 305, 0, 0, - 0, 0, 305, 0, 0, 0, 0, 0, 305, 0, - 0, 0, 0, 0, 305, 1493, 979, 980, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 706, 707, 708, - 709, 710, 711, 712, 713, 714, 715, 0, 0, 1708, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 1182, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, - 0, 0, 0, 0, 0, 1492, 457, 457, 457, 681, - 680, 690, 691, 683, 684, 685, 686, 687, 688, 689, - 682, 0, 0, 692, 0, 457, 307, 0, 0, 0, - 457, 457, 457, 0, 457, 457, 95, 0, 0, 0, - 1076, 0, 95, 95, 0, 0, 0, 457, 457, 0, - 681, 680, 690, 691, 683, 684, 685, 686, 687, 688, - 689, 682, 0, 0, 692, 0, 0, 0, 95, 0, - 0, 307, 0, 0, 0, 0, 443, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 0, 95, 0, 95, - 305, 0, 305, 798, 0, 0, 0, 0, 0, 1131, - 681, 680, 690, 691, 683, 684, 685, 686, 687, 688, - 689, 682, 0, 0, 692, 0, 0, 307, 0, 0, - 0, 0, 965, 0, 457, 0, 0, 690, 691, 683, - 684, 685, 686, 687, 688, 689, 682, 307, 995, 692, - 0, 0, 0, 95, 0, 0, 95, 95, 95, 307, - 0, 0, 0, 0, 0, 999, 1000, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1020, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 778, 0, 0, 457, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 457, 0, 0, 457, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 457, 586, 0, 0, 0, 0, 1207, 0, 305, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, - 0, 0, 305, 305, 95, 1222, 1223, 765, 0, 0, - 305, 0, 0, 0, 305, 0, 0, 305, 0, 0, - 0, 894, 95, 0, 0, 0, 0, 0, 0, 95, - 0, 305, 0, 0, 0, 0, 0, 457, 935, 457, - 0, 944, 945, 946, 947, 948, 949, 950, 951, 952, - 953, 954, 955, 956, 957, 958, 0, 457, 792, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 95, 0, 95, 0, 95, 0, 0, 0, - 0, 95, 0, 95, 95, 95, 307, 1172, 0, 0, - 95, 0, 0, 0, 0, 0, 0, 0, 998, 0, - 0, 0, 304, 0, 0, 0, 0, 0, 95, 307, - 0, 0, 342, 0, 0, 0, 0, 0, 0, 0, - 0, 443, 894, 0, 0, 0, 443, 443, 0, 0, - 443, 443, 443, 0, 0, 0, 996, 0, 0, 0, - 0, 0, 0, 0, 590, 0, 592, 0, 0, 0, - 0, 95, 0, 0, 0, 443, 443, 443, 443, 443, - 0, 0, 95, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, - 0, 0, 0, 0, 95, 894, 305, 0, 305, 0, - 0, 0, 0, 0, 0, 307, 305, 1057, 305, 1383, - 0, 0, 995, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1395, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 457, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, - 0, 0, 0, 305, 305, 305, 305, 305, 0, 0, - 305, 305, 0, 0, 305, 0, 0, 0, 0, 0, - 1318, 457, 0, 0, 0, 1177, 1178, 1179, 0, 0, - 0, 0, 305, 0, 0, 0, 0, 0, 1167, 1168, - 305, 0, 0, 0, 305, 0, 0, 0, 0, 0, - 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 599, 0, 0, 0, 457, 608, 0, 0, 0, - 0, 0, 615, 0, 0, 0, 0, 0, 617, 0, - 0, 0, 443, 443, 0, 0, 457, 1499, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 443, 0, 0, 0, 352, 0, 0, - 0, 0, 0, 457, 0, 1519, 995, 0, 1520, 1407, - 1409, 1522, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, - 305, 0, 0, 0, 0, 1409, 0, 0, 0, 0, - 996, 305, 305, 305, 305, 305, 0, 0, 0, 0, - 0, 0, 457, 1260, 457, 0, 1439, 305, 0, 0, - 0, 1057, 0, 0, 0, 0, 305, 305, 0, 0, - 305, 1276, 894, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1566, 352, - 0, 0, 0, 0, 784, 0, 0, 796, 0, 0, - 1467, 0, 0, 1472, 1473, 1474, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1355, 1356, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1376, 1377, 0, 1378, 1379, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1386, 1387, 0, 995, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 443, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 457, 0, 0, 0, 0, 0, 0, 0, - 0, 1533, 0, 0, 894, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, - 0, 305, 0, 0, 0, 0, 457, 0, 0, 0, - 0, 0, 815, 0, 996, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 873, 874, 0, 0, - 0, 0, 0, 1447, 883, 0, 0, 0, 796, 0, - 0, 890, 0, 0, 0, 0, 305, 0, 0, 1572, - 0, 1574, 0, 1575, 0, 903, 0, 0, 1533, 0, - 1533, 1533, 1533, 0, 0, 0, 0, 1439, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1533, 0, 0, 1478, 0, - 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 305, 0, 0, 0, 1636, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, - 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 995, - 0, 1661, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1667, 0, 0, 0, 0, 0, 996, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1027, 0, 0, 0, 0, 0, 0, - 1031, 0, 1034, 0, 0, 0, 0, 0, 0, 0, - 1533, 0, 1059, 0, 0, 0, 1553, 1554, 1555, 1556, - 1557, 0, 0, 0, 1560, 1561, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1134, 0, - 0, 1057, 0, 0, 0, 0, 0, 1154, 1155, 1156, - 1157, 1158, 0, 0, 1161, 1162, 0, 0, 1163, 0, - 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1165, 0, 0, 0, - 0, 0, 0, 0, 1169, 0, 0, 0, 1171, 0, - 0, 0, 0, 0, 0, 195, 0, 0, 967, 0, - 357, 0, 0, 0, 131, 0, 356, 0, 0, 0, - 163, 0, 968, 0, 237, 123, 171, 169, 255, 136, - 132, 130, 122, 152, 175, 205, 252, 199, 400, 166, - 0, 0, 245, 183, 0, 0, 0, 996, 0, 391, - 392, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 305, 0, 96, 97, 98, 378, 377, 380, 381, 382, - 383, 0, 0, 118, 379, 384, 385, 386, 0, 0, - 0, 0, 354, 371, 0, 399, 0, 0, 0, 0, - 0, 0, 1714, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 368, 369, 441, 0, 0, - 0, 414, 0, 370, 0, 0, 363, 364, 366, 365, - 367, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 142, 413, 0, 0, 308, 0, 0, 411, 0, - 216, 1273, 249, 146, 162, 114, 159, 100, 110, 0, - 144, 192, 224, 228, 0, 0, 0, 124, 0, 226, - 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, - 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, - 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, - 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, - 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, - 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, - 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, - 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, - 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, - 160, 168, 221, 288, 202, 227, 120, 270, 244, 401, - 412, 407, 408, 405, 406, 404, 403, 402, 415, 393, - 394, 395, 396, 398, 0, 409, 410, 397, 99, 108, - 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1392, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, - 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, - 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, - 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, - 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, - 250, 258, 259, 269, 276, 279, 145, 266, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1462, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1465, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1475, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 568, 556, 0, 0, 512, 571, 485, 502, 579, 503, - 506, 543, 470, 525, 195, 500, 0, 489, 465, 496, - 466, 487, 514, 131, 518, 484, 558, 528, 570, 163, - 0, 490, 545, 237, 123, 171, 169, 255, 136, 132, - 130, 122, 152, 175, 205, 252, 199, 577, 166, 534, - 0, 245, 183, 0, 0, 0, 516, 560, 523, 553, - 511, 544, 475, 533, 572, 501, 541, 573, 0, 0, - 0, 96, 97, 98, 0, 1083, 1084, 0, 0, 0, - 0, 0, 118, 0, 538, 567, 498, 540, 542, 581, - 464, 535, 0, 468, 471, 578, 563, 493, 494, 1287, - 0, 0, 0, 0, 0, 0, 515, 524, 550, 509, - 0, 0, 0, 0, 0, 0, 0, 0, 491, 0, - 532, 0, 0, 0, 472, 469, 0, 0, 0, 0, - 513, 0, 0, 0, 474, 0, 492, 551, 0, 462, - 142, 555, 562, 510, 308, 566, 508, 507, 569, 216, - 0, 249, 146, 162, 114, 159, 100, 110, 1605, 144, - 192, 224, 228, 559, 488, 497, 124, 495, 226, 203, - 268, 531, 206, 225, 167, 257, 217, 267, 277, 278, - 253, 275, 286, 242, 103, 251, 265, 119, 236, 0, - 0, 0, 105, 263, 248, 181, 156, 157, 104, 0, - 222, 129, 140, 126, 194, 260, 261, 125, 289, 111, - 274, 107, 112, 273, 188, 256, 264, 182, 174, 106, - 262, 180, 173, 161, 135, 148, 214, 170, 215, 149, - 185, 184, 186, 0, 467, 0, 246, 271, 290, 116, - 483, 254, 282, 285, 1663, 218, 117, 141, 134, 213, - 139, 164, 281, 283, 284, 187, 113, 151, 243, 160, - 168, 221, 288, 202, 227, 120, 270, 244, 479, 482, - 477, 478, 526, 527, 574, 575, 576, 552, 473, 0, - 480, 481, 0, 557, 564, 565, 530, 99, 108, 165, - 287, 219, 138, 272, 463, 476, 128, 486, 0, 0, - 499, 504, 505, 517, 519, 520, 521, 522, 529, 536, - 537, 539, 546, 547, 548, 549, 554, 561, 580, 101, - 102, 109, 115, 121, 127, 133, 137, 143, 147, 150, - 153, 154, 155, 158, 172, 176, 177, 178, 179, 189, - 190, 191, 193, 196, 197, 198, 200, 201, 204, 207, - 208, 209, 210, 211, 212, 220, 223, 229, 230, 231, - 232, 233, 234, 235, 238, 239, 240, 241, 247, 250, - 258, 259, 269, 276, 279, 145, 266, 280, 568, 556, - 0, 0, 512, 571, 485, 502, 579, 503, 506, 543, - 470, 525, 195, 500, 0, 489, 465, 496, 466, 487, - 514, 131, 518, 484, 558, 528, 570, 163, 0, 490, - 545, 237, 123, 171, 169, 255, 136, 132, 130, 122, - 152, 175, 205, 252, 199, 577, 166, 534, 0, 245, - 183, 0, 0, 0, 516, 560, 523, 553, 511, 544, - 475, 533, 572, 501, 541, 573, 0, 0, 0, 96, - 97, 98, 0, 1083, 1084, 0, 0, 0, 0, 0, - 118, 0, 538, 567, 498, 540, 542, 581, 464, 535, - 0, 468, 471, 578, 563, 493, 494, 0, 0, 0, - 0, 0, 0, 0, 515, 524, 550, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 491, 0, 532, 0, - 0, 0, 472, 469, 0, 0, 0, 0, 513, 0, - 0, 0, 474, 0, 492, 551, 0, 462, 142, 555, - 562, 510, 308, 566, 508, 507, 569, 216, 0, 249, - 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, - 228, 559, 488, 497, 124, 495, 226, 203, 268, 531, - 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, - 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, - 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, - 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, - 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, - 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, - 186, 0, 467, 0, 246, 271, 290, 116, 483, 254, - 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, - 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, - 288, 202, 227, 120, 270, 244, 479, 482, 477, 478, - 526, 527, 574, 575, 576, 552, 473, 0, 480, 481, - 0, 557, 564, 565, 530, 99, 108, 165, 287, 219, - 138, 272, 463, 476, 128, 486, 0, 0, 499, 504, - 505, 517, 519, 520, 521, 522, 529, 536, 537, 539, - 546, 547, 548, 549, 554, 561, 580, 101, 102, 109, - 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, - 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, - 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, - 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, - 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, - 269, 276, 279, 145, 266, 280, 568, 556, 0, 0, - 512, 571, 485, 502, 579, 503, 506, 543, 470, 525, - 195, 500, 0, 489, 465, 496, 466, 487, 514, 131, - 518, 484, 558, 528, 570, 163, 0, 490, 545, 237, - 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, - 205, 252, 199, 577, 166, 534, 0, 245, 183, 0, - 0, 0, 516, 560, 523, 553, 511, 544, 475, 533, - 572, 501, 541, 573, 61, 0, 0, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, - 538, 567, 498, 540, 542, 581, 464, 535, 0, 468, - 471, 578, 563, 493, 494, 0, 0, 0, 0, 0, - 0, 0, 515, 524, 550, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 491, 0, 532, 0, 0, 0, - 472, 469, 0, 0, 0, 0, 513, 0, 0, 0, - 474, 0, 492, 551, 0, 462, 142, 555, 562, 510, - 308, 566, 508, 507, 569, 216, 0, 249, 146, 162, - 114, 159, 100, 110, 0, 144, 192, 224, 228, 559, - 488, 497, 124, 495, 226, 203, 268, 531, 206, 225, - 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, - 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, - 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, - 194, 260, 261, 125, 289, 111, 274, 107, 112, 273, - 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, - 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, - 467, 0, 246, 271, 290, 116, 483, 254, 282, 285, - 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, - 284, 187, 113, 151, 243, 160, 168, 221, 288, 202, - 227, 120, 270, 244, 479, 482, 477, 478, 526, 527, - 574, 575, 576, 552, 473, 0, 480, 481, 0, 557, - 564, 565, 530, 99, 108, 165, 287, 219, 138, 272, - 463, 476, 128, 486, 0, 0, 499, 504, 505, 517, - 519, 520, 521, 522, 529, 536, 537, 539, 546, 547, - 548, 549, 554, 561, 580, 101, 102, 109, 115, 121, - 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, - 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, - 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, - 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, - 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, - 279, 145, 266, 280, 568, 556, 0, 0, 512, 571, - 485, 502, 579, 503, 506, 543, 470, 525, 195, 500, - 0, 489, 465, 496, 466, 487, 514, 131, 518, 484, - 558, 528, 570, 163, 0, 490, 545, 237, 123, 171, - 169, 255, 136, 132, 130, 122, 152, 175, 205, 252, - 199, 577, 166, 534, 0, 245, 183, 0, 0, 0, - 516, 560, 523, 553, 511, 544, 475, 533, 572, 501, - 541, 573, 0, 0, 0, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 538, 567, - 498, 540, 542, 581, 464, 535, 0, 468, 471, 578, - 563, 493, 494, 0, 0, 0, 0, 0, 0, 0, - 515, 524, 550, 509, 0, 0, 0, 0, 0, 0, - 1396, 0, 491, 0, 532, 0, 0, 0, 472, 469, - 0, 0, 0, 0, 513, 0, 0, 0, 474, 0, - 492, 551, 0, 462, 142, 555, 562, 510, 308, 566, - 508, 507, 569, 216, 0, 249, 146, 162, 114, 159, - 100, 110, 0, 144, 192, 224, 228, 559, 488, 497, - 124, 495, 226, 203, 268, 531, 206, 225, 167, 257, - 217, 267, 277, 278, 253, 275, 286, 242, 103, 251, - 265, 119, 236, 0, 0, 0, 105, 263, 248, 181, - 156, 157, 104, 0, 222, 129, 140, 126, 194, 260, - 261, 125, 289, 111, 274, 107, 112, 273, 188, 256, - 264, 182, 174, 106, 262, 180, 173, 161, 135, 148, - 214, 170, 215, 149, 185, 184, 186, 0, 467, 0, - 246, 271, 290, 116, 483, 254, 282, 285, 0, 218, - 117, 141, 134, 213, 139, 164, 281, 283, 284, 187, - 113, 151, 243, 160, 168, 221, 288, 202, 227, 120, - 270, 244, 479, 482, 477, 478, 526, 527, 574, 575, - 576, 552, 473, 0, 480, 481, 0, 557, 564, 565, - 530, 99, 108, 165, 287, 219, 138, 272, 463, 476, - 128, 486, 0, 0, 499, 504, 505, 517, 519, 520, - 521, 522, 529, 536, 537, 539, 546, 547, 548, 549, - 554, 561, 580, 101, 102, 109, 115, 121, 127, 133, - 137, 143, 147, 150, 153, 154, 155, 158, 172, 176, - 177, 178, 179, 189, 190, 191, 193, 196, 197, 198, - 200, 201, 204, 207, 208, 209, 210, 211, 212, 220, - 223, 229, 230, 231, 232, 233, 234, 235, 238, 239, - 240, 241, 247, 250, 258, 259, 269, 276, 279, 145, - 266, 280, 568, 556, 0, 0, 512, 571, 485, 502, - 579, 503, 506, 543, 470, 525, 195, 500, 0, 489, - 465, 496, 466, 487, 514, 131, 518, 484, 558, 528, - 570, 163, 0, 490, 545, 237, 123, 171, 169, 255, - 136, 132, 130, 122, 152, 175, 205, 252, 199, 577, - 166, 534, 0, 245, 183, 0, 0, 0, 516, 560, - 523, 553, 511, 544, 475, 533, 572, 501, 541, 573, - 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 0, 538, 567, 498, 540, - 542, 581, 464, 535, 0, 468, 471, 578, 563, 493, - 494, 0, 0, 0, 0, 0, 0, 0, 515, 524, - 550, 509, 0, 0, 0, 0, 0, 0, 1277, 0, - 491, 0, 532, 0, 0, 0, 472, 469, 0, 0, - 0, 0, 513, 0, 0, 0, 474, 0, 492, 551, - 0, 462, 142, 555, 562, 510, 308, 566, 508, 507, - 569, 216, 0, 249, 146, 162, 114, 159, 100, 110, - 0, 144, 192, 224, 228, 559, 488, 497, 124, 495, - 226, 203, 268, 531, 206, 225, 167, 257, 217, 267, - 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, - 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, - 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, - 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, - 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, - 215, 149, 185, 184, 186, 0, 467, 0, 246, 271, - 290, 116, 483, 254, 282, 285, 0, 218, 117, 141, - 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, - 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, - 479, 482, 477, 478, 526, 527, 574, 575, 576, 552, - 473, 0, 480, 481, 0, 557, 564, 565, 530, 99, - 108, 165, 287, 219, 138, 272, 463, 476, 128, 486, - 0, 0, 499, 504, 505, 517, 519, 520, 521, 522, - 529, 536, 537, 539, 546, 547, 548, 549, 554, 561, - 580, 101, 102, 109, 115, 121, 127, 133, 137, 143, - 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, - 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, - 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, - 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, - 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, - 568, 556, 0, 0, 512, 571, 485, 502, 579, 503, - 506, 543, 470, 525, 195, 500, 0, 489, 465, 496, - 466, 487, 514, 131, 518, 484, 558, 528, 570, 163, - 0, 490, 545, 237, 123, 171, 169, 255, 136, 132, - 130, 122, 152, 175, 205, 252, 199, 577, 166, 534, - 0, 245, 183, 0, 0, 0, 516, 560, 523, 553, - 511, 544, 475, 533, 572, 501, 541, 573, 0, 0, - 0, 96, 97, 98, 0, 0, 0, 0, 0, 0, - 0, 0, 118, 0, 538, 567, 498, 540, 542, 581, - 464, 535, 0, 468, 471, 578, 563, 493, 494, 0, - 0, 0, 0, 0, 0, 0, 515, 524, 550, 509, - 0, 0, 0, 0, 0, 0, 1029, 0, 491, 0, - 532, 0, 0, 0, 472, 469, 0, 0, 0, 0, - 513, 0, 0, 0, 474, 0, 492, 551, 0, 462, - 142, 555, 562, 510, 308, 566, 508, 507, 569, 216, - 0, 249, 146, 162, 114, 159, 100, 110, 0, 144, - 192, 224, 228, 559, 488, 497, 124, 495, 226, 203, - 268, 531, 206, 225, 167, 257, 217, 267, 277, 278, - 253, 275, 286, 242, 103, 251, 265, 119, 236, 0, - 0, 0, 105, 263, 248, 181, 156, 157, 104, 0, - 222, 129, 140, 126, 194, 260, 261, 125, 289, 111, - 274, 107, 112, 273, 188, 256, 264, 182, 174, 106, - 262, 180, 173, 161, 135, 148, 214, 170, 215, 149, - 185, 184, 186, 0, 467, 0, 246, 271, 290, 116, - 483, 254, 282, 285, 0, 218, 117, 141, 134, 213, - 139, 164, 281, 283, 284, 187, 113, 151, 243, 160, - 168, 221, 288, 202, 227, 120, 270, 244, 479, 482, - 477, 478, 526, 527, 574, 575, 576, 552, 473, 0, - 480, 481, 0, 557, 564, 565, 530, 99, 108, 165, - 287, 219, 138, 272, 463, 476, 128, 486, 0, 0, - 499, 504, 505, 517, 519, 520, 521, 522, 529, 536, - 537, 539, 546, 547, 548, 549, 554, 561, 580, 101, - 102, 109, 115, 121, 127, 133, 137, 143, 147, 150, - 153, 154, 155, 158, 172, 176, 177, 178, 179, 189, - 190, 191, 193, 196, 197, 198, 200, 201, 204, 207, - 208, 209, 210, 211, 212, 220, 223, 229, 230, 231, - 232, 233, 234, 235, 238, 239, 240, 241, 247, 250, - 258, 259, 269, 276, 279, 145, 266, 280, 568, 556, - 0, 0, 512, 571, 485, 502, 579, 503, 506, 543, - 470, 525, 195, 500, 0, 489, 465, 496, 466, 487, - 514, 131, 518, 484, 558, 528, 570, 163, 0, 490, - 545, 237, 123, 171, 169, 255, 136, 132, 130, 122, - 152, 175, 205, 252, 199, 577, 166, 534, 0, 245, - 183, 0, 0, 0, 516, 560, 523, 553, 511, 544, - 475, 533, 572, 501, 541, 573, 0, 0, 0, 96, - 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 538, 567, 498, 540, 542, 581, 464, 535, - 0, 468, 471, 578, 563, 493, 494, 0, 0, 0, - 0, 0, 0, 0, 515, 524, 550, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 491, 0, 532, 0, - 0, 0, 472, 469, 0, 0, 0, 0, 513, 0, - 0, 0, 474, 0, 492, 551, 0, 462, 142, 555, - 562, 510, 308, 566, 508, 507, 569, 216, 0, 249, - 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, - 228, 559, 488, 497, 124, 495, 226, 203, 268, 531, - 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, - 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, - 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, - 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, - 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, - 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, - 186, 0, 467, 0, 246, 271, 290, 116, 483, 254, - 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, - 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, - 288, 202, 227, 120, 270, 244, 479, 482, 477, 478, - 526, 527, 574, 575, 576, 552, 473, 0, 480, 481, - 0, 557, 564, 565, 530, 99, 108, 165, 287, 219, - 138, 272, 463, 476, 128, 486, 0, 0, 499, 504, - 505, 517, 519, 520, 521, 522, 529, 536, 537, 539, - 546, 547, 548, 549, 554, 561, 580, 101, 102, 109, - 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, - 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, - 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, - 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, - 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, - 269, 276, 279, 145, 266, 280, 568, 556, 0, 0, - 512, 571, 485, 502, 579, 503, 506, 543, 470, 525, - 195, 500, 0, 489, 465, 496, 466, 487, 514, 131, - 518, 484, 558, 528, 570, 163, 0, 490, 545, 237, - 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, - 205, 252, 199, 577, 166, 534, 0, 245, 183, 0, - 0, 0, 516, 560, 523, 553, 511, 544, 475, 533, - 572, 501, 541, 573, 0, 0, 0, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, - 538, 567, 498, 540, 542, 581, 464, 535, 0, 468, - 471, 578, 563, 493, 494, 0, 0, 0, 0, 0, - 0, 0, 515, 524, 550, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 491, 0, 532, 0, 0, 0, - 472, 469, 0, 0, 0, 0, 513, 0, 0, 0, - 474, 0, 492, 551, 0, 462, 142, 555, 562, 510, - 308, 566, 508, 507, 569, 216, 0, 249, 146, 162, - 114, 159, 100, 110, 0, 144, 192, 224, 228, 559, - 488, 497, 124, 495, 226, 203, 268, 531, 206, 225, - 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, - 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, - 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, - 194, 260, 261, 125, 289, 111, 274, 107, 460, 273, - 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, - 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, - 467, 0, 246, 271, 290, 116, 483, 254, 282, 285, - 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, - 284, 461, 459, 454, 453, 160, 168, 221, 288, 202, - 227, 120, 270, 244, 479, 482, 477, 478, 526, 527, - 574, 575, 576, 552, 473, 0, 480, 481, 0, 557, - 564, 565, 530, 99, 108, 165, 287, 219, 138, 272, - 463, 476, 128, 486, 0, 0, 499, 504, 505, 517, - 519, 520, 521, 522, 529, 536, 537, 539, 546, 547, - 548, 549, 554, 561, 580, 101, 102, 109, 115, 121, - 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, - 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, - 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, - 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, - 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, - 279, 145, 266, 280, 568, 556, 0, 0, 512, 571, - 485, 502, 579, 503, 506, 543, 470, 525, 195, 500, - 0, 489, 465, 496, 466, 487, 514, 131, 518, 484, - 558, 528, 570, 163, 0, 490, 545, 237, 123, 171, - 169, 255, 136, 132, 130, 122, 152, 175, 205, 252, - 199, 577, 166, 534, 0, 245, 183, 0, 0, 0, - 516, 560, 523, 553, 511, 544, 475, 533, 572, 501, - 541, 573, 0, 0, 0, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 538, 567, - 498, 540, 542, 581, 464, 535, 0, 468, 471, 578, - 563, 493, 494, 0, 0, 0, 0, 0, 0, 0, - 515, 524, 550, 509, 0, 0, 0, 0, 0, 0, - 0, 0, 491, 0, 532, 0, 0, 0, 472, 469, - 0, 0, 0, 0, 513, 0, 0, 0, 474, 0, - 492, 551, 0, 462, 142, 555, 562, 510, 308, 566, - 508, 507, 569, 216, 0, 249, 146, 162, 114, 159, - 100, 110, 0, 144, 192, 224, 228, 559, 488, 497, - 124, 495, 226, 203, 268, 531, 206, 225, 167, 257, - 217, 267, 277, 278, 253, 275, 286, 242, 103, 251, - 800, 119, 236, 0, 0, 0, 105, 263, 248, 181, - 156, 157, 104, 0, 222, 129, 140, 126, 194, 260, - 261, 125, 289, 111, 274, 107, 460, 273, 188, 256, - 264, 182, 174, 106, 262, 180, 173, 161, 135, 148, - 214, 170, 215, 149, 185, 184, 186, 0, 467, 0, - 246, 271, 290, 116, 483, 254, 282, 285, 0, 218, - 117, 141, 134, 213, 139, 164, 281, 283, 284, 461, - 459, 454, 453, 160, 168, 221, 288, 202, 227, 120, - 270, 244, 479, 482, 477, 478, 526, 527, 574, 575, - 576, 552, 473, 0, 480, 481, 0, 557, 564, 565, - 530, 99, 108, 165, 287, 219, 138, 272, 463, 476, - 128, 486, 0, 0, 499, 504, 505, 517, 519, 520, - 521, 522, 529, 536, 537, 539, 546, 547, 548, 549, - 554, 561, 580, 101, 102, 109, 115, 121, 127, 133, - 137, 143, 147, 150, 153, 154, 155, 158, 172, 176, - 177, 178, 179, 189, 190, 191, 193, 196, 197, 198, - 200, 201, 204, 207, 208, 209, 210, 211, 212, 220, - 223, 229, 230, 231, 232, 233, 234, 235, 238, 239, - 240, 241, 247, 250, 258, 259, 269, 276, 279, 145, - 266, 280, 568, 556, 0, 0, 512, 571, 485, 502, - 579, 503, 506, 543, 470, 525, 195, 500, 0, 489, - 465, 496, 466, 487, 514, 131, 518, 484, 558, 528, - 570, 163, 0, 490, 545, 237, 123, 171, 169, 255, - 136, 132, 130, 122, 152, 175, 205, 252, 199, 577, - 166, 534, 0, 245, 183, 0, 0, 0, 516, 560, - 523, 553, 511, 544, 475, 533, 572, 501, 541, 573, - 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 0, 538, 567, 498, 540, - 542, 581, 464, 535, 0, 468, 471, 578, 563, 493, - 494, 0, 0, 0, 0, 0, 0, 0, 515, 524, - 550, 509, 0, 0, 0, 0, 0, 0, 0, 0, - 491, 0, 532, 0, 0, 0, 472, 469, 0, 0, - 0, 0, 513, 0, 0, 0, 474, 0, 492, 551, - 0, 462, 142, 555, 562, 510, 308, 566, 508, 507, - 569, 216, 0, 249, 146, 162, 114, 159, 100, 110, - 0, 144, 192, 224, 228, 559, 488, 497, 124, 495, - 226, 203, 268, 531, 206, 225, 167, 257, 217, 267, - 277, 278, 253, 275, 286, 242, 103, 251, 451, 119, - 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, - 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, - 289, 111, 274, 107, 460, 273, 188, 256, 264, 182, - 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, - 215, 149, 185, 184, 186, 0, 467, 0, 246, 271, - 290, 116, 483, 254, 282, 285, 0, 218, 117, 141, - 134, 213, 139, 164, 281, 283, 284, 461, 459, 454, - 453, 160, 168, 221, 288, 202, 227, 120, 270, 244, - 479, 482, 477, 478, 526, 527, 574, 575, 576, 552, - 473, 0, 480, 481, 0, 557, 564, 565, 530, 99, - 108, 165, 287, 219, 138, 272, 463, 476, 128, 486, - 0, 0, 499, 504, 505, 517, 519, 520, 521, 522, - 529, 536, 537, 539, 546, 547, 548, 549, 554, 561, - 580, 101, 102, 109, 115, 121, 127, 133, 137, 143, - 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, - 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, - 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, - 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, - 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, - 195, 0, 0, 0, 0, 357, 0, 0, 0, 131, - 0, 356, 0, 0, 0, 163, 0, 0, 0, 237, - 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, - 205, 252, 199, 400, 166, 0, 0, 245, 183, 0, - 0, 0, 0, 0, 391, 392, 0, 0, 0, 0, - 0, 0, 1074, 0, 61, 0, 0, 96, 97, 98, - 378, 377, 380, 381, 382, 383, 0, 0, 118, 379, - 384, 385, 386, 1075, 0, 0, 0, 354, 371, 0, - 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 368, 369, 0, 0, 0, 0, 414, 0, 370, 0, - 0, 363, 364, 366, 365, 367, 372, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 142, 413, 0, 0, - 308, 0, 0, 411, 0, 216, 0, 249, 146, 162, - 114, 159, 100, 110, 0, 144, 192, 224, 228, 0, - 0, 0, 124, 0, 226, 203, 268, 0, 206, 225, - 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, - 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, - 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, - 194, 260, 261, 125, 289, 111, 274, 107, 112, 273, - 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, - 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, - 0, 0, 246, 271, 290, 116, 0, 254, 282, 285, - 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, - 284, 187, 113, 151, 243, 160, 168, 221, 288, 202, - 227, 120, 270, 244, 401, 412, 407, 408, 405, 406, - 404, 403, 402, 415, 393, 394, 395, 396, 398, 0, - 409, 410, 397, 99, 108, 165, 287, 219, 138, 272, - 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, - 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, - 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, - 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, - 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, - 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, - 279, 145, 266, 280, 195, 0, 0, 0, 0, 357, - 0, 0, 0, 131, 0, 356, 0, 0, 0, 163, - 0, 0, 0, 237, 123, 171, 169, 255, 136, 132, - 130, 122, 152, 175, 205, 252, 199, 400, 166, 0, - 0, 245, 183, 0, 0, 0, 0, 0, 391, 392, - 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, - 429, 96, 97, 98, 378, 377, 380, 381, 382, 383, - 0, 0, 118, 379, 384, 385, 386, 0, 0, 0, - 0, 354, 371, 0, 399, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 369, 0, 0, 0, 0, - 414, 0, 370, 0, 0, 363, 364, 366, 365, 367, - 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 142, 413, 0, 0, 308, 0, 0, 411, 0, 216, - 0, 249, 146, 162, 114, 159, 100, 110, 0, 144, - 192, 224, 228, 0, 0, 0, 124, 0, 226, 203, - 268, 0, 206, 225, 167, 257, 217, 267, 277, 278, - 253, 275, 286, 242, 103, 251, 265, 119, 236, 0, - 0, 0, 105, 263, 248, 181, 156, 157, 104, 0, - 222, 129, 140, 126, 194, 260, 261, 125, 289, 111, - 274, 107, 112, 273, 188, 256, 264, 182, 174, 106, - 262, 180, 173, 161, 135, 148, 214, 170, 215, 149, - 185, 184, 186, 0, 0, 0, 246, 271, 290, 116, - 0, 254, 282, 285, 0, 218, 117, 141, 134, 213, - 139, 164, 281, 283, 284, 187, 113, 151, 243, 160, - 168, 221, 288, 202, 227, 120, 270, 244, 401, 412, - 407, 408, 405, 406, 404, 403, 402, 415, 393, 394, - 395, 396, 398, 0, 409, 410, 397, 99, 108, 165, - 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, + 425, 1748, 1738, 1507, 1658, 1380, 1675, 1706, 1097, 1606, + 1269, 1589, 1289, 1147, 731, 1437, 651, 771, 1270, 369, + 1434, 355, 1343, 1438, 1141, 1569, 384, 778, 1342, 1106, + 1348, 1096, 398, 1069, 1319, 975, 600, 1444, 1093, 1256, + 1450, 96, 597, 1066, 1399, 315, 467, 338, 315, 928, + 74, 3, 909, 96, 982, 315, 1205, 72, 1357, 1149, + 1335, 1110, 594, 816, 1048, 809, 1071, 1055, 804, 443, + 798, 428, 1008, 781, 952, 360, 632, 776, 356, 799, + 1126, 359, 29, 96, 371, 593, 96, 315, 96, 315, + 1031, 815, 601, 788, 1137, 923, 367, 75, 70, 464, + 938, 813, 641, 434, 744, 69, 881, 1077, 806, 1655, + 8, 7, 745, 313, 6, 1494, 1579, 1608, 1741, 621, + 1703, 303, 1736, 351, 301, 1683, 1150, 1729, 1508, 1702, + 77, 78, 79, 80, 81, 82, 1416, 1682, 1537, 604, + 1468, 31, 32, 33, 63, 35, 36, 1152, 1469, 1470, + 1087, 449, 453, 429, 817, 599, 818, 603, 1173, 31, + 664, 67, 63, 35, 36, 358, 37, 57, 58, 357, + 60, 1327, 1172, 98, 99, 100, 61, 311, 307, 308, + 309, 1088, 1089, 1120, 461, 1572, 1649, 693, 692, 702, + 703, 695, 696, 697, 698, 699, 700, 701, 694, 657, + 658, 704, 1685, 1382, 410, 47, 416, 417, 414, 415, + 413, 412, 411, 1127, 1528, 62, 985, 1526, 1151, 348, + 418, 419, 663, 304, 937, 98, 99, 100, 1306, 350, + 346, 1305, 897, 62, 1307, 659, 1171, 652, 653, 660, + 657, 658, 662, 654, 638, 1384, 640, 894, 1735, 302, + 896, 1676, 1728, 939, 940, 941, 98, 99, 100, 1383, + 1379, 1049, 1668, 1752, 1145, 647, 622, 1145, 1756, 1475, + 305, 596, 1145, 898, 606, 1290, 1292, 455, 637, 639, + 1400, 40, 41, 43, 42, 45, 895, 59, 1632, 1168, + 1165, 1166, 1114, 1164, 1385, 902, 667, 1114, 617, 610, + 884, 1461, 315, 612, 613, 310, 1460, 315, 318, 623, + 46, 66, 65, 315, 1459, 55, 56, 44, 609, 315, + 630, 1402, 306, 636, 1662, 1185, 1175, 1178, 1184, 1224, + 96, 48, 49, 1553, 50, 51, 52, 53, 1376, 96, + 1467, 1221, 716, 717, 1378, 1261, 98, 99, 100, 1493, + 1234, 96, 96, 1367, 1213, 1153, 1083, 792, 1404, 849, + 1408, 729, 1403, 1291, 1401, 628, 1170, 1650, 1681, 1406, + 611, 635, 614, 694, 615, 620, 704, 616, 1405, 678, + 679, 627, 1686, 1094, 649, 704, 646, 629, 1169, 1302, + 929, 1407, 1409, 924, 98, 99, 100, 1127, 648, 1027, + 681, 1750, 85, 673, 1751, 634, 1749, 1363, 1364, 1365, + 642, 684, 1641, 1349, 665, 1448, 684, 819, 1113, 1633, + 1631, 1032, 1033, 1113, 64, 677, 1418, 643, 644, 624, + 625, 626, 1174, 695, 696, 697, 698, 699, 700, 701, + 694, 86, 64, 704, 1009, 1009, 1231, 1176, 1485, 767, + 655, 714, 96, 886, 1325, 315, 768, 315, 315, 1671, + 96, 716, 717, 676, 674, 837, 96, 675, 1578, 785, + 1377, 1117, 1375, 716, 717, 1577, 464, 959, 1118, 1366, + 1730, 769, 732, 1499, 1371, 1368, 1359, 1369, 1362, 62, + 1358, 957, 958, 956, 1360, 1361, 682, 683, 681, 930, + 797, 955, 925, 947, 949, 950, 850, 1731, 1370, 1339, + 948, 633, 1722, 782, 684, 1338, 747, 749, 751, 753, + 755, 757, 758, 796, 748, 750, 808, 754, 756, 770, + 759, 605, 863, 866, 867, 868, 869, 870, 871, 1723, + 872, 873, 874, 875, 876, 851, 852, 853, 854, 835, + 836, 864, 1156, 838, 1733, 839, 840, 841, 842, 843, + 844, 845, 846, 847, 848, 855, 856, 857, 858, 859, + 860, 861, 862, 1198, 1199, 1200, 1013, 693, 692, 702, + 703, 695, 696, 697, 698, 699, 700, 701, 694, 1732, + 1029, 704, 1724, 315, 1714, 1696, 1757, 877, 1602, 682, + 683, 681, 683, 681, 96, 1575, 885, 1420, 887, 315, + 889, 315, 96, 96, 96, 1541, 1424, 684, 315, 684, + 1220, 1500, 315, 607, 608, 315, 907, 908, 865, 315, + 1426, 96, 1350, 1336, 1206, 922, 96, 96, 96, 315, + 96, 96, 697, 698, 699, 700, 701, 694, 914, 1340, + 704, 437, 1028, 96, 96, 1219, 900, 780, 682, 683, + 681, 827, 1758, 1218, 1425, 618, 451, 682, 683, 681, + 438, 682, 683, 681, 1638, 911, 684, 888, 1637, 890, + 1629, 1734, 682, 683, 681, 684, 899, 1698, 438, 684, + 808, 438, 814, 906, 98, 99, 100, 682, 683, 681, + 684, 1629, 1679, 1629, 438, 976, 932, 919, 913, 98, + 99, 100, 71, 977, 978, 684, 1079, 98, 99, 100, + 953, 1309, 1079, 666, 1629, 1663, 454, 361, 96, 1257, + 903, 693, 692, 702, 703, 695, 696, 697, 698, 699, + 700, 701, 694, 1629, 1628, 704, 986, 880, 1568, 1555, + 438, 931, 1551, 438, 1491, 1490, 31, 997, 1000, 73, + 992, 96, 96, 1010, 31, 934, 1487, 1488, 1487, 1486, + 1040, 438, 954, 1052, 438, 459, 988, 1080, 680, 438, + 96, 1264, 987, 1080, 1352, 1082, 1580, 315, 1115, 438, + 96, 1078, 880, 879, 315, 1447, 315, 1052, 732, 826, + 825, 1435, 1548, 1265, 315, 315, 315, 456, 457, 986, + 1447, 1613, 96, 979, 980, 96, 1257, 1296, 1018, 1019, + 1041, 1051, 426, 680, 1040, 1078, 96, 96, 464, 989, + 62, 464, 1640, 1581, 1582, 1583, 1489, 62, 62, 988, + 1052, 1310, 1098, 1086, 1237, 1046, 1236, 1040, 1078, 1030, + 901, 431, 1042, 811, 1067, 1043, 387, 386, 389, 390, + 391, 392, 1047, 97, 1050, 388, 393, 316, 1715, 1112, + 316, 1052, 1022, 31, 1075, 97, 1591, 316, 1560, 882, + 1142, 96, 1034, 1044, 1447, 315, 96, 1478, 96, 1040, + 878, 1177, 1314, 1138, 1132, 315, 315, 315, 315, 315, + 1131, 1143, 315, 315, 1085, 97, 315, 96, 97, 316, + 97, 316, 1101, 1084, 1076, 1081, 87, 1345, 1344, 1381, + 1144, 1128, 1129, 1130, 315, 62, 1451, 1452, 1592, 1162, + 315, 315, 315, 1584, 1743, 1739, 315, 96, 1480, 1719, + 1121, 1454, 1122, 1123, 1124, 1125, 1435, 62, 1354, 935, + 993, 994, 905, 1157, 999, 1002, 1003, 1457, 1133, 1134, + 1135, 1136, 1345, 1179, 1180, 1181, 1182, 1183, 1139, 1140, + 1186, 1187, 1155, 1154, 1188, 1281, 1279, 1585, 1586, 1017, + 1282, 1280, 1020, 1021, 1283, 1456, 1061, 1062, 883, 953, + 1278, 1277, 1190, 1701, 1427, 1246, 891, 892, 893, 779, + 1194, 1721, 1717, 1552, 1196, 1191, 1255, 1254, 1691, 1195, + 1057, 1060, 1061, 1062, 1058, 912, 1059, 1063, 1688, 1705, + 916, 917, 918, 1707, 920, 921, 1244, 1713, 1712, 1659, + 685, 1201, 1657, 427, 1245, 1351, 1005, 926, 927, 772, + 1243, 954, 315, 1344, 1331, 1546, 824, 631, 1324, 1673, + 1006, 773, 1250, 315, 315, 315, 315, 315, 1672, 1611, + 1322, 1214, 1316, 1587, 1025, 315, 361, 1032, 1033, 315, + 1159, 1271, 429, 315, 904, 742, 1065, 435, 315, 315, + 1230, 1726, 315, 315, 315, 1259, 1253, 1262, 432, 433, + 1725, 1430, 1710, 1692, 1252, 1308, 1215, 96, 1545, 1266, + 436, 73, 774, 777, 1544, 1311, 1315, 1257, 1249, 1225, + 1320, 1320, 1260, 1098, 1258, 661, 1745, 1744, 444, 1288, + 1222, 1297, 793, 1272, 316, 1299, 1275, 786, 1745, 316, + 911, 1284, 445, 1273, 1274, 316, 1276, 1660, 1573, 1294, + 1295, 316, 1026, 431, 71, 1321, 76, 1298, 1300, 68, + 1303, 1347, 97, 1, 337, 783, 784, 447, 96, 446, + 1737, 97, 1509, 96, 1313, 1330, 1588, 1332, 1333, 1334, + 1317, 1318, 444, 97, 97, 702, 703, 695, 696, 697, + 698, 699, 700, 701, 694, 1356, 445, 704, 1167, 96, + 1674, 1341, 1148, 1337, 1104, 1095, 84, 591, 83, 645, + 1210, 1211, 1103, 1328, 1329, 1102, 1630, 1326, 1346, 441, + 442, 447, 1119, 446, 96, 1571, 1479, 1323, 1670, 832, + 976, 1228, 830, 831, 1372, 1057, 1060, 1061, 1062, 1058, + 1396, 1059, 1063, 1398, 829, 1451, 1452, 834, 833, 828, + 1387, 330, 1397, 936, 1388, 347, 1064, 820, 93, 1161, + 787, 1421, 315, 1374, 1373, 1410, 1417, 1163, 1492, 1389, + 1116, 327, 96, 656, 332, 1411, 300, 1395, 96, 96, + 1158, 712, 1160, 1251, 97, 1436, 1304, 316, 1396, 316, + 316, 988, 97, 465, 1271, 458, 1441, 987, 97, 1711, + 1689, 1189, 1687, 1656, 96, 1607, 1690, 315, 1439, 1654, + 1720, 915, 1704, 1024, 775, 1543, 1429, 990, 991, 1446, + 1229, 96, 741, 96, 1007, 96, 1455, 802, 1320, 1320, + 1428, 1472, 370, 946, 385, 382, 383, 1098, 933, 1098, + 1035, 1462, 1484, 1263, 686, 1463, 368, 1465, 362, 1466, + 1464, 801, 1471, 794, 1056, 1474, 1023, 942, 943, 944, + 945, 1473, 1476, 1477, 1054, 315, 1053, 807, 1112, 1453, + 1449, 800, 1039, 440, 1004, 1495, 1433, 1482, 1483, 1648, + 1536, 439, 1496, 54, 315, 1497, 1498, 34, 352, 1502, + 96, 669, 1510, 96, 96, 96, 315, 448, 28, 23, + 22, 21, 20, 19, 1503, 25, 1505, 18, 17, 16, + 39, 619, 995, 996, 38, 27, 26, 15, 14, 13, + 12, 11, 399, 30, 10, 316, 9, 5, 4, 672, + 24, 730, 2, 1501, 0, 0, 97, 0, 0, 1524, + 0, 316, 0, 316, 97, 97, 97, 0, 0, 0, + 316, 0, 1504, 30, 316, 0, 0, 316, 0, 0, + 0, 316, 0, 97, 1514, 0, 0, 1547, 97, 97, + 97, 316, 97, 97, 1515, 1516, 1557, 1271, 0, 0, + 0, 0, 96, 0, 1556, 97, 97, 0, 0, 96, + 1311, 0, 0, 430, 0, 0, 1092, 0, 1098, 0, + 0, 1566, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1519, 0, 0, 1567, 0, 1542, 1521, 1522, 96, + 1523, 0, 0, 1525, 0, 1527, 0, 0, 0, 0, + 0, 0, 0, 1595, 0, 1590, 692, 702, 703, 695, + 696, 697, 698, 699, 700, 701, 694, 1593, 0, 704, + 0, 0, 1353, 0, 0, 1146, 0, 0, 0, 0, + 97, 0, 96, 0, 96, 1208, 96, 0, 0, 1209, + 1610, 96, 0, 96, 96, 96, 315, 1574, 1616, 1576, + 1216, 1217, 1612, 1386, 0, 0, 1223, 0, 0, 1226, + 1227, 1439, 1627, 97, 97, 1439, 1620, 1233, 1621, 1623, + 1624, 1235, 96, 315, 1238, 1239, 1240, 1241, 1242, 1625, + 1634, 1614, 97, 1594, 0, 0, 0, 0, 0, 316, + 0, 0, 97, 1635, 0, 1636, 316, 1642, 316, 0, + 0, 0, 1605, 0, 0, 0, 316, 316, 316, 1661, + 96, 0, 0, 0, 97, 0, 0, 97, 1667, 0, + 1601, 96, 96, 1286, 1287, 0, 1439, 0, 97, 97, + 1678, 0, 1677, 0, 0, 0, 0, 1590, 1098, 0, + 1619, 1643, 0, 96, 1684, 0, 0, 0, 0, 315, + 1626, 1693, 0, 0, 0, 0, 1232, 96, 0, 0, + 1271, 0, 0, 0, 0, 1700, 0, 0, 0, 0, + 0, 0, 1709, 0, 1708, 1247, 1248, 777, 0, 0, + 0, 0, 0, 97, 1718, 1716, 0, 316, 97, 0, + 97, 0, 0, 0, 0, 0, 96, 316, 316, 316, + 316, 316, 0, 0, 316, 316, 0, 0, 316, 97, + 0, 0, 0, 0, 0, 0, 0, 1695, 0, 0, + 1742, 1727, 650, 0, 0, 0, 316, 1753, 1540, 0, + 0, 650, 316, 316, 316, 0, 0, 0, 316, 97, + 0, 0, 0, 0, 0, 30, 693, 692, 702, 703, + 695, 696, 697, 698, 699, 700, 701, 694, 713, 715, + 704, 0, 0, 0, 0, 0, 0, 1393, 1394, 693, + 692, 702, 703, 695, 696, 697, 698, 699, 700, 701, + 694, 0, 0, 704, 0, 0, 396, 0, 0, 728, + 364, 0, 0, 733, 734, 735, 736, 737, 738, 739, + 740, 0, 743, 746, 746, 746, 752, 746, 746, 752, + 746, 760, 761, 762, 763, 764, 765, 766, 0, 0, + 0, 0, 0, 30, 1442, 0, 0, 95, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, + 0, 0, 0, 0, 316, 1458, 0, 0, 0, 803, + 0, 0, 0, 0, 0, 316, 316, 316, 316, 316, + 0, 0, 0, 0, 0, 0, 0, 316, 1534, 466, + 0, 316, 595, 0, 602, 316, 0, 0, 1419, 0, + 316, 316, 0, 0, 316, 316, 316, 0, 0, 0, + 0, 1539, 0, 0, 0, 0, 0, 0, 688, 97, + 691, 0, 0, 0, 1431, 0, 705, 706, 707, 708, + 709, 710, 711, 0, 689, 690, 687, 693, 692, 702, + 703, 695, 696, 697, 698, 699, 700, 701, 694, 0, + 0, 704, 693, 692, 702, 703, 695, 696, 697, 698, + 699, 700, 701, 694, 0, 0, 704, 0, 0, 0, + 0, 0, 1518, 0, 0, 0, 1520, 0, 0, 0, + 97, 0, 0, 0, 0, 97, 0, 1529, 1530, 0, + 693, 692, 702, 703, 695, 696, 697, 698, 699, 700, + 701, 694, 0, 0, 704, 0, 0, 0, 0, 0, + 0, 97, 0, 0, 0, 0, 650, 1549, 1550, 0, + 0, 1554, 0, 0, 650, 650, 650, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 97, 0, 0, 1565, + 0, 0, 0, 650, 0, 0, 0, 0, 650, 650, + 650, 0, 650, 650, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 650, 650, 0, 0, 0, + 0, 0, 1390, 0, 316, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 97, 0, 0, 1538, 0, 0, + 97, 97, 693, 692, 702, 703, 695, 696, 697, 698, + 699, 700, 701, 694, 0, 0, 704, 361, 0, 0, + 0, 0, 0, 0, 0, 1558, 97, 0, 1559, 316, + 0, 1561, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 97, 1533, 97, 466, 97, 0, 1622, + 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 668, 670, 0, + 0, 0, 0, 0, 98, 99, 100, 0, 0, 0, + 0, 0, 0, 1644, 1645, 1646, 1647, 316, 1651, 1532, + 1652, 1653, 0, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 0, 0, 0, 316, 0, 1664, 0, + 1665, 1666, 97, 0, 1531, 97, 97, 97, 316, 0, + 0, 1609, 361, 0, 0, 0, 1068, 0, 319, 0, + 0, 0, 0, 0, 0, 1680, 0, 322, 0, 0, + 0, 0, 0, 0, 0, 331, 693, 692, 702, 703, + 695, 696, 697, 698, 699, 700, 701, 694, 0, 0, + 704, 1697, 0, 0, 0, 0, 0, 0, 790, 0, + 0, 0, 0, 0, 0, 0, 466, 0, 0, 329, + 0, 0, 821, 0, 0, 336, 0, 0, 0, 0, + 0, 693, 692, 702, 703, 695, 696, 697, 698, 699, + 700, 701, 694, 0, 97, 704, 0, 0, 650, 0, + 650, 97, 0, 0, 0, 320, 693, 692, 702, 703, + 695, 696, 697, 698, 699, 700, 701, 694, 0, 650, + 704, 0, 0, 1754, 1755, 0, 0, 0, 0, 0, + 0, 97, 333, 323, 1207, 334, 335, 342, 0, 0, + 0, 326, 328, 339, 324, 325, 344, 343, 0, 321, + 341, 340, 0, 0, 693, 692, 702, 703, 695, 696, + 697, 698, 699, 700, 701, 694, 0, 0, 704, 0, + 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, + 0, 0, 0, 97, 0, 97, 97, 97, 316, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1212, + 0, 0, 430, 0, 0, 0, 0, 0, 0, 0, + 466, 0, 0, 0, 97, 316, 0, 0, 466, 466, + 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 466, 0, 0, + 0, 0, 466, 466, 466, 0, 466, 466, 0, 0, + 0, 0, 97, 0, 803, 0, 0, 0, 0, 466, + 466, 1267, 1268, 97, 97, 803, 803, 803, 803, 803, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1068, 0, 1293, 0, 97, 0, 0, 0, 0, + 803, 316, 0, 0, 803, 0, 0, 951, 0, 97, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 981, 0, 466, 0, 97, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1011, 0, 0, 0, 0, 0, 0, 1014, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1015, 1016, 0, + 650, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1036, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 790, 0, 0, 466, + 0, 650, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, + 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 466, 595, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1440, 0, + 30, 0, 0, 0, 0, 0, 0, 602, 0, 0, + 0, 0, 466, 0, 466, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 803, + 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 109, 115, 121, 127, 133, 137, 143, 147, 150, - 153, 154, 155, 158, 172, 176, 177, 178, 179, 189, - 190, 191, 193, 196, 197, 198, 200, 201, 204, 207, - 208, 209, 210, 211, 212, 220, 223, 229, 230, 231, - 232, 233, 234, 235, 238, 239, 240, 241, 247, 250, - 258, 259, 269, 276, 279, 145, 266, 280, 195, 0, - 0, 0, 0, 357, 0, 0, 0, 131, 0, 356, - 0, 0, 0, 163, 0, 0, 0, 237, 123, 171, - 169, 255, 136, 132, 130, 122, 152, 175, 205, 252, - 199, 400, 166, 0, 0, 245, 183, 0, 0, 0, - 0, 0, 391, 392, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 0, 96, 97, 98, 378, 377, - 380, 381, 382, 383, 0, 0, 118, 379, 384, 385, - 386, 0, 0, 0, 0, 354, 371, 0, 399, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 368, 369, - 441, 0, 0, 0, 414, 0, 370, 0, 0, 363, - 364, 366, 365, 367, 372, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 142, 413, 0, 0, 308, 0, - 0, 411, 0, 216, 0, 249, 146, 162, 114, 159, - 100, 110, 0, 144, 192, 224, 228, 0, 0, 0, - 124, 0, 226, 203, 268, 0, 206, 225, 167, 257, - 217, 267, 277, 278, 253, 275, 286, 242, 103, 251, - 265, 119, 236, 0, 0, 0, 105, 263, 248, 181, - 156, 157, 104, 0, 222, 129, 140, 126, 194, 260, - 261, 125, 289, 111, 274, 107, 112, 273, 188, 256, - 264, 182, 174, 106, 262, 180, 173, 161, 135, 148, - 214, 170, 215, 149, 185, 184, 186, 0, 0, 0, - 246, 271, 290, 116, 0, 254, 282, 285, 0, 218, - 117, 141, 134, 213, 139, 164, 281, 283, 284, 187, - 113, 151, 243, 160, 168, 221, 288, 202, 227, 120, - 270, 244, 401, 412, 407, 408, 405, 406, 404, 403, - 402, 415, 393, 394, 395, 396, 398, 0, 409, 410, - 397, 99, 108, 165, 287, 219, 138, 272, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 109, 115, 121, 127, 133, - 137, 143, 147, 150, 153, 154, 155, 158, 172, 176, - 177, 178, 179, 189, 190, 191, 193, 196, 197, 198, - 200, 201, 204, 207, 208, 209, 210, 211, 212, 220, - 223, 229, 230, 231, 232, 233, 234, 235, 238, 239, - 240, 241, 247, 250, 258, 259, 269, 276, 279, 145, - 266, 280, 195, 0, 0, 0, 0, 357, 0, 0, - 0, 131, 0, 356, 0, 0, 0, 163, 0, 0, - 0, 237, 123, 171, 169, 255, 136, 132, 130, 122, - 152, 175, 205, 252, 199, 400, 166, 0, 0, 245, - 183, 0, 0, 0, 0, 0, 391, 392, 0, 0, - 0, 0, 0, 0, 0, 0, 61, 0, 0, 96, - 97, 98, 378, 985, 380, 381, 382, 383, 0, 0, - 118, 379, 384, 385, 386, 0, 0, 0, 0, 354, - 371, 0, 399, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 368, 369, 441, 0, 0, 0, 414, 0, - 370, 0, 0, 363, 364, 366, 365, 367, 372, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 142, 413, - 0, 0, 308, 0, 0, 411, 0, 216, 0, 249, - 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, - 228, 0, 0, 0, 124, 0, 226, 203, 268, 0, - 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, - 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, - 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, - 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, - 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, - 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, - 186, 0, 0, 0, 246, 271, 290, 116, 0, 254, - 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, - 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, - 288, 202, 227, 120, 270, 244, 401, 412, 407, 408, - 405, 406, 404, 403, 402, 415, 393, 394, 395, 396, - 398, 0, 409, 410, 397, 99, 108, 165, 287, 219, - 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, - 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, - 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, - 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, - 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, - 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, - 269, 276, 279, 145, 266, 280, 195, 0, 0, 0, - 0, 357, 0, 0, 0, 131, 0, 356, 0, 0, - 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, - 136, 132, 130, 122, 152, 175, 205, 252, 199, 400, - 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, - 391, 392, 0, 0, 0, 0, 0, 0, 0, 0, - 61, 0, 0, 96, 97, 98, 378, 982, 380, 381, - 382, 383, 0, 0, 118, 379, 384, 385, 386, 0, - 0, 0, 0, 354, 371, 0, 399, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 368, 369, 441, 0, - 0, 0, 414, 0, 370, 0, 0, 363, 364, 366, - 365, 367, 372, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 142, 413, 0, 0, 308, 0, 0, 411, - 0, 216, 0, 249, 146, 162, 114, 159, 100, 110, - 0, 144, 192, 224, 228, 0, 0, 0, 124, 0, - 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, - 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, - 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, - 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, - 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, - 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, - 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, - 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, - 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, - 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, - 401, 412, 407, 408, 405, 406, 404, 403, 402, 415, - 393, 394, 395, 396, 398, 0, 409, 410, 397, 99, - 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, - 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, - 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, - 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, - 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, - 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, - 422, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 0, 0, 0, 357, 0, - 0, 0, 131, 0, 356, 0, 0, 0, 163, 0, - 0, 0, 237, 123, 171, 169, 255, 136, 132, 130, - 122, 152, 175, 205, 252, 199, 400, 166, 0, 0, - 245, 183, 0, 0, 0, 0, 0, 391, 392, 0, - 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 96, 97, 98, 378, 377, 380, 381, 382, 383, 0, - 0, 118, 379, 384, 385, 386, 0, 0, 0, 0, - 354, 371, 0, 399, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 368, 369, 0, 0, 0, 0, 414, - 0, 370, 0, 0, 363, 364, 366, 365, 367, 372, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, - 413, 0, 0, 308, 0, 0, 411, 0, 216, 0, - 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, - 224, 228, 0, 0, 0, 124, 0, 226, 203, 268, - 0, 206, 225, 167, 257, 217, 267, 277, 278, 253, - 275, 286, 242, 103, 251, 265, 119, 236, 0, 0, - 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, - 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, - 107, 112, 273, 188, 256, 264, 182, 174, 106, 262, - 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, - 184, 186, 0, 0, 0, 246, 271, 290, 116, 0, - 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, - 164, 281, 283, 284, 187, 113, 151, 243, 160, 168, - 221, 288, 202, 227, 120, 270, 244, 401, 412, 407, - 408, 405, 406, 404, 403, 402, 415, 393, 394, 395, - 396, 398, 0, 409, 410, 397, 99, 108, 165, 287, - 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, - 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, - 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, - 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, - 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, - 259, 269, 276, 279, 145, 266, 280, 195, 0, 0, - 0, 0, 357, 0, 0, 0, 131, 0, 356, 0, - 0, 0, 163, 0, 0, 0, 237, 123, 171, 169, - 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, - 400, 166, 0, 0, 245, 183, 0, 0, 0, 0, - 0, 391, 392, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 96, 97, 98, 378, 377, 380, - 381, 382, 383, 0, 0, 118, 379, 384, 385, 386, - 0, 0, 0, 0, 354, 371, 0, 399, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 368, 369, 0, - 0, 0, 0, 414, 0, 370, 0, 0, 363, 364, - 366, 365, 367, 372, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 142, 413, 0, 0, 308, 0, 0, - 411, 0, 216, 0, 249, 146, 162, 114, 159, 100, - 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, - 0, 226, 203, 268, 0, 206, 225, 167, 257, 217, - 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, - 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, - 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, - 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, - 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, - 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, - 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, - 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, - 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, - 244, 401, 412, 407, 408, 405, 406, 404, 403, 402, - 415, 393, 394, 395, 396, 398, 0, 409, 410, 397, - 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, - 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, - 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, - 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, - 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, - 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, - 280, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 0, 0, 0, 0, 0, 163, 0, 0, 0, - 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, - 175, 205, 252, 199, 400, 166, 0, 0, 245, 183, - 0, 0, 0, 0, 0, 391, 392, 0, 0, 0, - 0, 0, 0, 0, 0, 61, 0, 0, 96, 97, - 98, 378, 377, 380, 381, 382, 383, 0, 0, 118, - 379, 384, 385, 386, 0, 0, 0, 0, 0, 371, - 0, 399, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 368, 369, 0, 0, 0, 0, 414, 0, 370, - 0, 0, 363, 364, 366, 365, 367, 372, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 413, 0, - 0, 308, 0, 0, 411, 0, 216, 0, 249, 146, - 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, - 0, 0, 0, 124, 0, 226, 203, 268, 1715, 206, - 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, - 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, - 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, - 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, - 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, - 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, - 0, 0, 0, 246, 271, 290, 116, 0, 254, 282, - 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, - 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, - 202, 227, 120, 270, 244, 401, 412, 407, 408, 405, - 406, 404, 403, 402, 415, 393, 394, 395, 396, 398, - 0, 409, 410, 397, 99, 108, 165, 287, 219, 138, - 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, - 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, - 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, - 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, - 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, - 276, 279, 145, 266, 280, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, - 163, 0, 0, 0, 237, 123, 171, 169, 255, 136, - 132, 130, 122, 152, 175, 205, 252, 199, 400, 166, - 0, 0, 245, 183, 0, 0, 0, 0, 0, 391, - 392, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 429, 96, 97, 98, 378, 377, 380, 381, 382, - 383, 0, 0, 118, 379, 384, 385, 386, 0, 0, - 0, 0, 0, 371, 0, 399, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 368, 369, 0, 0, 0, - 0, 414, 0, 370, 0, 0, 363, 364, 366, 365, - 367, 372, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 142, 413, 0, 0, 308, 0, 0, 411, 0, - 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, - 144, 192, 224, 228, 0, 0, 0, 124, 0, 226, - 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, - 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, - 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, - 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, - 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, - 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, - 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, - 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, - 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, - 160, 168, 221, 288, 202, 227, 120, 270, 244, 401, - 412, 407, 408, 405, 406, 404, 403, 402, 415, 393, - 394, 395, 396, 398, 0, 409, 410, 397, 99, 108, - 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, - 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, - 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, - 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, - 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, - 250, 258, 259, 269, 276, 279, 145, 266, 280, 195, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, - 0, 0, 0, 0, 163, 0, 0, 0, 237, 123, - 171, 169, 255, 136, 132, 130, 122, 152, 175, 205, - 252, 199, 400, 166, 0, 0, 245, 183, 0, 0, - 0, 0, 0, 391, 392, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 0, 96, 97, 98, 378, - 377, 380, 381, 382, 383, 0, 0, 118, 379, 384, - 385, 386, 0, 0, 0, 0, 0, 371, 0, 399, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, - 369, 0, 0, 0, 0, 414, 0, 370, 0, 0, - 363, 364, 366, 365, 367, 372, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 142, 413, 0, 0, 308, - 0, 0, 411, 0, 216, 0, 249, 146, 162, 114, - 159, 100, 110, 0, 144, 192, 224, 228, 0, 0, - 0, 124, 0, 226, 203, 268, 0, 206, 225, 167, - 257, 217, 267, 277, 278, 253, 275, 286, 242, 103, - 251, 265, 119, 236, 0, 0, 0, 105, 263, 248, - 181, 156, 157, 104, 0, 222, 129, 140, 126, 194, - 260, 261, 125, 289, 111, 274, 107, 112, 273, 188, - 256, 264, 182, 174, 106, 262, 180, 173, 161, 135, - 148, 214, 170, 215, 149, 185, 184, 186, 0, 0, - 0, 246, 271, 290, 116, 0, 254, 282, 285, 0, - 218, 117, 141, 134, 213, 139, 164, 281, 283, 284, - 187, 113, 151, 243, 160, 168, 221, 288, 202, 227, - 120, 270, 244, 401, 412, 407, 408, 405, 406, 404, - 403, 402, 415, 393, 394, 395, 396, 398, 0, 409, - 410, 397, 99, 108, 165, 287, 219, 138, 272, 0, - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 109, 115, 121, 127, - 133, 137, 143, 147, 150, 153, 154, 155, 158, 172, - 176, 177, 178, 179, 189, 190, 191, 193, 196, 197, - 198, 200, 201, 204, 207, 208, 209, 210, 211, 212, - 220, 223, 229, 230, 231, 232, 233, 234, 235, 238, - 239, 240, 241, 247, 250, 258, 259, 269, 276, 279, - 145, 266, 280, 195, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 0, 0, 0, 0, 0, 163, 0, - 0, 0, 237, 123, 171, 169, 255, 136, 132, 130, - 122, 152, 175, 205, 252, 199, 0, 166, 0, 0, - 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 681, - 680, 690, 691, 683, 684, 685, 686, 687, 688, 689, - 682, 0, 0, 692, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, - 0, 0, 0, 308, 0, 0, 0, 0, 216, 0, - 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, - 224, 228, 0, 0, 0, 124, 0, 226, 203, 268, - 0, 206, 225, 167, 257, 217, 267, 277, 278, 253, - 275, 286, 242, 103, 251, 265, 119, 236, 0, 0, - 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, - 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, - 107, 112, 273, 188, 256, 264, 182, 174, 106, 262, - 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, - 184, 186, 0, 0, 0, 246, 271, 290, 116, 0, - 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, - 164, 281, 283, 284, 187, 113, 151, 243, 160, 168, - 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 108, 165, 287, - 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, - 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, - 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, - 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, - 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, - 259, 269, 276, 279, 145, 266, 280, 195, 0, 0, - 0, 777, 0, 0, 0, 0, 131, 0, 0, 0, - 0, 0, 163, 0, 0, 0, 237, 123, 171, 169, - 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, - 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 98, 0, 779, 0, - 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, - 0, 670, 671, 669, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 672, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 142, 0, 0, 0, 308, 0, 0, - 0, 0, 216, 0, 249, 146, 162, 114, 159, 100, - 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, - 0, 226, 203, 268, 0, 206, 225, 167, 257, 217, - 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, - 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, - 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, - 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, - 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, - 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, - 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, - 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, - 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, - 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, - 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, - 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, - 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, - 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, - 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, - 280, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 0, 0, 0, 0, 0, 163, 0, 0, 0, - 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, - 175, 205, 252, 199, 0, 166, 0, 0, 245, 183, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, - 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 90, 91, - 0, 87, 0, 0, 0, 92, 216, 0, 249, 146, - 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, - 0, 0, 0, 124, 0, 226, 203, 268, 0, 206, - 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, - 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, - 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, - 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, - 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, - 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, - 0, 0, 0, 246, 271, 290, 116, 0, 254, 282, - 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, - 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, - 202, 227, 120, 270, 244, 0, 89, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 108, 165, 287, 219, 138, - 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, - 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, - 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, - 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, - 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, - 276, 279, 145, 266, 280, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 1098, 0, 0, 0, 0, - 163, 0, 0, 0, 237, 123, 171, 169, 255, 136, - 132, 130, 122, 152, 175, 205, 252, 199, 0, 166, - 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, - 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 142, 0, 0, 1097, 308, 0, 0, 0, 1093, - 1091, 0, 1092, 146, 162, 589, 159, 100, 110, 1089, - 1095, 192, 224, 228, 0, 0, 0, 124, 0, 226, - 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, - 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, - 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, - 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, - 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, - 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, - 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, - 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, - 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, - 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, - 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, - 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, - 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, - 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, - 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, - 250, 258, 259, 269, 276, 279, 145, 266, 280, 31, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, - 0, 131, 0, 0, 0, 0, 0, 163, 0, 0, - 0, 237, 123, 171, 169, 255, 136, 132, 130, 122, - 152, 175, 205, 252, 199, 0, 166, 0, 0, 245, - 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 61, 0, 429, 96, - 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, - 0, 0, 308, 0, 0, 0, 0, 216, 0, 249, - 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, - 228, 0, 0, 0, 124, 0, 226, 203, 268, 0, - 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, - 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, - 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, - 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, - 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, - 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, - 186, 0, 0, 0, 246, 271, 290, 116, 0, 254, - 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, - 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, - 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 108, 165, 287, 219, - 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, - 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, - 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, - 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, - 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, - 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, - 269, 276, 279, 145, 266, 280, 195, 0, 0, 0, - 1056, 0, 0, 0, 0, 131, 0, 0, 0, 0, - 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, - 136, 132, 130, 122, 152, 175, 205, 252, 199, 0, - 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 0, 1058, 0, 0, - 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 142, 0, 0, 0, 308, 0, 0, 0, - 0, 216, 0, 249, 146, 162, 114, 159, 100, 110, - 0, 144, 192, 224, 228, 0, 0, 0, 124, 0, - 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, - 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, - 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, - 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, - 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, - 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, - 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, - 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, - 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, - 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, - 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, - 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, - 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, - 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, - 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, - 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, - 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 0, 0, 0, 0, 0, 163, 0, - 0, 0, 237, 123, 171, 169, 255, 136, 132, 130, - 122, 152, 175, 205, 252, 199, 0, 166, 0, 0, - 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, - 0, 0, 0, 308, 0, 0, 0, 0, 216, 0, - 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, - 224, 228, 0, 0, 0, 124, 0, 226, 203, 268, - 0, 206, 225, 167, 257, 217, 267, 277, 278, 253, - 275, 286, 242, 103, 251, 265, 119, 236, 0, 0, - 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, - 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, - 107, 112, 273, 188, 256, 264, 182, 174, 106, 262, - 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, - 184, 186, 0, 0, 0, 246, 271, 290, 116, 0, - 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, - 164, 281, 283, 284, 187, 113, 151, 243, 160, 168, - 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 108, 165, 287, - 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, - 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, - 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, - 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, - 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, - 259, 269, 276, 279, 145, 266, 280, 195, 0, 0, - 0, 1056, 0, 0, 0, 0, 131, 0, 0, 0, - 0, 0, 163, 0, 0, 0, 237, 123, 171, 169, - 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, - 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 98, 0, 1058, 0, - 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 142, 0, 0, 0, 308, 0, 0, - 0, 0, 216, 0, 249, 146, 162, 114, 159, 100, - 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, - 0, 226, 203, 268, 0, 1054, 225, 167, 257, 217, - 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, - 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, - 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, - 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, - 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, - 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, - 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, - 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, - 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, - 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, - 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, - 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, - 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, - 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, - 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, - 280, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 0, 0, 0, 0, 0, 163, 0, 0, 0, - 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, - 175, 205, 252, 199, 0, 166, 0, 0, 245, 183, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 0, 0, 1021, 0, 0, 1022, 0, 0, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, - 0, 308, 0, 0, 0, 0, 216, 0, 249, 146, - 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, - 0, 0, 0, 124, 0, 226, 203, 268, 0, 206, - 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, - 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, - 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, - 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, - 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, - 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, - 0, 0, 0, 246, 271, 290, 116, 0, 254, 282, - 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, - 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, - 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 108, 165, 287, 219, 138, - 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, - 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, - 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, - 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, - 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, - 276, 279, 145, 266, 280, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 0, 811, 0, 0, 0, - 163, 0, 0, 0, 237, 123, 171, 169, 255, 136, - 132, 130, 122, 152, 175, 205, 252, 199, 0, 166, - 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 0, 810, 0, 0, 0, - 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 142, 0, 0, 0, 308, 0, 0, 0, 0, - 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, - 144, 192, 224, 228, 0, 0, 0, 124, 0, 226, - 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, - 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, - 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, - 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, - 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, - 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, - 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, - 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, - 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, - 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, - 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, - 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, - 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, - 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, - 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, - 250, 258, 259, 269, 276, 279, 145, 266, 280, 195, - 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, - 0, 0, 0, 0, 163, 0, 0, 0, 237, 123, - 171, 169, 255, 136, 132, 130, 122, 152, 175, 205, - 252, 199, 0, 166, 0, 0, 245, 183, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 96, 97, 98, 0, - 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 583, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 142, 0, 0, 0, 308, - 0, 0, 0, 0, 216, 0, 249, 146, 162, 589, - 159, 100, 110, 587, 144, 192, 224, 228, 0, 0, - 0, 124, 0, 226, 203, 268, 0, 206, 225, 167, - 257, 217, 267, 277, 278, 253, 275, 286, 242, 103, - 251, 265, 119, 236, 0, 0, 0, 105, 263, 248, - 181, 156, 157, 104, 0, 222, 129, 140, 126, 194, - 260, 261, 125, 289, 111, 274, 107, 112, 273, 188, - 256, 264, 182, 174, 106, 262, 180, 173, 161, 135, - 148, 214, 170, 215, 149, 185, 184, 186, 0, 0, - 0, 246, 271, 290, 116, 0, 254, 282, 285, 0, - 218, 117, 141, 134, 213, 139, 164, 281, 283, 284, - 187, 113, 151, 243, 160, 168, 221, 288, 202, 227, - 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 99, 108, 165, 287, 219, 138, 272, 0, - 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 102, 109, 115, 121, 127, - 133, 137, 143, 147, 150, 153, 154, 155, 158, 172, - 176, 177, 178, 179, 189, 190, 191, 193, 196, 197, - 198, 200, 201, 204, 207, 208, 209, 210, 211, 212, - 220, 223, 229, 230, 231, 232, 233, 234, 235, 238, - 239, 240, 241, 247, 250, 258, 259, 269, 276, 279, - 145, 266, 280, 195, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 0, 0, 0, 0, 0, 163, 0, - 0, 0, 237, 123, 171, 169, 255, 136, 132, 130, - 122, 152, 175, 205, 252, 199, 0, 166, 0, 0, - 245, 183, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 429, - 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, - 0, 0, 0, 308, 0, 0, 0, 0, 216, 0, - 249, 146, 162, 114, 159, 100, 110, 0, 144, 192, - 224, 228, 0, 0, 0, 124, 0, 226, 203, 268, - 0, 206, 225, 167, 257, 217, 267, 277, 278, 253, - 275, 286, 242, 103, 251, 265, 119, 236, 0, 0, - 0, 105, 263, 248, 181, 156, 157, 104, 0, 222, - 129, 140, 126, 194, 260, 261, 125, 289, 111, 274, - 107, 112, 273, 188, 256, 264, 182, 174, 106, 262, - 180, 173, 161, 135, 148, 214, 170, 215, 149, 185, - 184, 186, 0, 0, 0, 246, 271, 290, 116, 0, - 254, 282, 285, 0, 218, 117, 141, 134, 213, 139, - 164, 281, 283, 284, 187, 113, 151, 243, 160, 168, - 221, 288, 202, 227, 120, 270, 244, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 108, 165, 287, - 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, - 109, 115, 121, 127, 133, 137, 143, 147, 150, 153, - 154, 155, 158, 172, 176, 177, 178, 179, 189, 190, - 191, 193, 196, 197, 198, 200, 201, 204, 207, 208, - 209, 210, 211, 212, 220, 223, 229, 230, 231, 232, - 233, 234, 235, 238, 239, 240, 241, 247, 250, 258, - 259, 269, 276, 279, 145, 266, 280, 195, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, - 0, 0, 163, 0, 0, 0, 237, 123, 171, 169, - 255, 136, 132, 130, 122, 152, 175, 205, 252, 199, - 0, 166, 0, 0, 245, 183, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 96, 97, 98, 0, 0, 0, - 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 142, 0, 0, 0, 308, 0, 0, - 0, 0, 216, 0, 249, 146, 162, 114, 159, 100, - 110, 0, 144, 192, 224, 228, 0, 0, 0, 124, - 0, 226, 203, 268, 0, 206, 225, 167, 257, 217, - 267, 277, 278, 253, 275, 286, 242, 103, 251, 265, - 119, 236, 0, 0, 0, 105, 263, 248, 181, 156, - 157, 104, 0, 222, 129, 140, 126, 194, 260, 261, - 125, 289, 111, 274, 107, 112, 273, 188, 256, 264, - 182, 174, 106, 262, 180, 173, 161, 135, 148, 214, - 170, 215, 149, 185, 184, 186, 0, 0, 0, 246, - 271, 290, 116, 0, 254, 282, 285, 0, 218, 117, - 141, 134, 213, 139, 164, 281, 283, 284, 187, 113, - 151, 243, 160, 168, 221, 288, 202, 227, 120, 270, - 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 108, 165, 287, 219, 138, 272, 0, 0, 128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 102, 109, 115, 121, 127, 133, 137, - 143, 147, 150, 153, 154, 155, 158, 172, 176, 177, - 178, 179, 189, 190, 191, 193, 196, 197, 198, 200, - 201, 204, 207, 208, 209, 210, 211, 212, 220, 223, - 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, - 241, 247, 250, 258, 259, 269, 276, 279, 145, 266, - 280, 195, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 0, 0, 0, 0, 0, 163, 0, 0, 0, - 237, 123, 171, 169, 255, 136, 132, 130, 122, 152, - 175, 205, 252, 199, 0, 166, 0, 0, 245, 183, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 0, 1058, 0, 0, 0, 0, 0, 0, 118, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, - 0, 308, 0, 0, 0, 0, 216, 0, 249, 146, - 162, 114, 159, 100, 110, 0, 144, 192, 224, 228, - 0, 0, 0, 124, 0, 226, 203, 268, 0, 206, - 225, 167, 257, 217, 267, 277, 278, 253, 275, 286, - 242, 103, 251, 265, 119, 236, 0, 0, 0, 105, - 263, 248, 181, 156, 157, 104, 0, 222, 129, 140, - 126, 194, 260, 261, 125, 289, 111, 274, 107, 112, - 273, 188, 256, 264, 182, 174, 106, 262, 180, 173, - 161, 135, 148, 214, 170, 215, 149, 185, 184, 186, - 0, 0, 0, 246, 271, 290, 116, 0, 254, 282, - 285, 0, 218, 117, 141, 134, 213, 139, 164, 281, - 283, 284, 187, 113, 151, 243, 160, 168, 221, 288, - 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 108, 165, 287, 219, 138, - 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 102, 109, 115, - 121, 127, 133, 137, 143, 147, 150, 153, 154, 155, - 158, 172, 176, 177, 178, 179, 189, 190, 191, 193, - 196, 197, 198, 200, 201, 204, 207, 208, 209, 210, - 211, 212, 220, 223, 229, 230, 231, 232, 233, 234, - 235, 238, 239, 240, 241, 247, 250, 258, 259, 269, - 276, 279, 145, 266, 280, 195, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, - 163, 0, 0, 0, 237, 123, 171, 169, 255, 136, - 132, 130, 122, 152, 175, 205, 252, 199, 0, 166, - 0, 0, 245, 183, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 97, 98, 0, 779, 0, 0, 0, - 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 142, 0, 0, 0, 308, 0, 0, 0, 0, - 216, 0, 249, 146, 162, 114, 159, 100, 110, 0, - 144, 192, 224, 228, 0, 0, 0, 124, 0, 226, - 203, 268, 0, 206, 225, 167, 257, 217, 267, 277, - 278, 253, 275, 286, 242, 103, 251, 265, 119, 236, - 0, 0, 0, 105, 263, 248, 181, 156, 157, 104, - 0, 222, 129, 140, 126, 194, 260, 261, 125, 289, - 111, 274, 107, 112, 273, 188, 256, 264, 182, 174, - 106, 262, 180, 173, 161, 135, 148, 214, 170, 215, - 149, 185, 184, 186, 0, 0, 0, 246, 271, 290, - 116, 0, 254, 282, 285, 0, 218, 117, 141, 134, - 213, 139, 164, 281, 283, 284, 187, 113, 151, 243, - 160, 168, 221, 288, 202, 227, 120, 270, 244, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, - 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 102, 109, 115, 121, 127, 133, 137, 143, 147, - 150, 153, 154, 155, 158, 172, 176, 177, 178, 179, - 189, 190, 191, 193, 196, 197, 198, 200, 201, 204, - 207, 208, 209, 210, 211, 212, 220, 223, 229, 230, - 231, 232, 233, 234, 235, 238, 239, 240, 241, 247, - 250, 258, 259, 269, 276, 279, 145, 266, 280, 793, - 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, - 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, - 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, - 136, 132, 130, 122, 152, 175, 205, 252, 199, 0, - 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 142, 0, 0, 0, 308, 0, 0, 0, - 0, 216, 0, 249, 146, 162, 114, 159, 100, 110, - 0, 144, 192, 224, 228, 0, 0, 0, 124, 0, - 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, - 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, - 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, - 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, - 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, - 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, - 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, - 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, - 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, - 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, - 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, - 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, - 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, - 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, - 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, - 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, - 195, 0, 0, 0, 0, 0, 0, 0, 783, 131, - 0, 0, 0, 0, 0, 163, 0, 0, 0, 237, - 123, 171, 169, 255, 136, 132, 130, 122, 152, 175, - 205, 252, 199, 0, 166, 0, 0, 245, 183, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, - 308, 0, 0, 0, 0, 216, 0, 249, 146, 162, - 114, 159, 100, 110, 0, 144, 192, 224, 228, 0, - 0, 0, 124, 0, 226, 203, 268, 0, 206, 225, - 167, 257, 217, 267, 277, 278, 253, 275, 286, 242, - 103, 251, 265, 119, 236, 0, 0, 0, 105, 263, - 248, 181, 156, 157, 104, 0, 222, 129, 140, 126, - 194, 260, 261, 125, 289, 111, 274, 107, 112, 273, - 188, 256, 264, 182, 174, 106, 262, 180, 173, 161, - 135, 148, 214, 170, 215, 149, 185, 184, 186, 0, - 0, 0, 246, 271, 290, 116, 0, 254, 282, 285, - 0, 218, 117, 141, 134, 213, 139, 164, 281, 283, - 284, 187, 113, 151, 243, 160, 168, 221, 288, 202, - 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 99, 108, 165, 287, 219, 138, 272, - 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, - 127, 133, 137, 143, 147, 150, 153, 154, 155, 158, - 172, 176, 177, 178, 179, 189, 190, 191, 193, 196, - 197, 198, 200, 201, 204, 207, 208, 209, 210, 211, - 212, 220, 223, 229, 230, 231, 232, 233, 234, 235, - 238, 239, 240, 241, 247, 250, 258, 259, 269, 276, - 279, 145, 266, 280, 195, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 0, 0, 0, 0, 0, 163, - 0, 0, 0, 237, 123, 171, 169, 255, 136, 132, - 130, 122, 152, 175, 205, 252, 199, 0, 166, 0, - 0, 245, 183, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 0, 659, 0, 0, 0, 0, - 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 142, 0, 0, 0, 308, 0, 0, 0, 0, 216, - 0, 249, 146, 162, 114, 159, 100, 110, 0, 144, - 192, 224, 228, 0, 0, 0, 124, 0, 226, 203, - 268, 0, 206, 225, 167, 257, 217, 267, 277, 278, - 253, 275, 286, 242, 103, 251, 265, 119, 236, 0, - 0, 0, 105, 263, 248, 181, 156, 157, 104, 0, - 222, 129, 140, 126, 194, 260, 261, 125, 289, 111, - 274, 107, 112, 273, 188, 256, 264, 182, 174, 106, - 262, 180, 173, 161, 135, 148, 214, 170, 215, 149, - 185, 184, 186, 0, 0, 0, 246, 271, 290, 116, - 0, 254, 282, 285, 0, 218, 117, 141, 134, 213, - 139, 164, 281, 283, 284, 187, 113, 151, 243, 160, - 168, 221, 288, 202, 227, 120, 270, 244, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 99, 108, 165, - 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, + 0, 0, 0, 1197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 102, 109, 115, 121, 127, 133, 137, 143, 147, 150, - 153, 154, 155, 158, 172, 176, 177, 178, 179, 189, - 190, 191, 193, 196, 197, 198, 200, 201, 204, 207, - 208, 209, 210, 211, 212, 220, 223, 229, 230, 231, - 232, 233, 234, 235, 238, 239, 240, 241, 247, 250, - 258, 259, 269, 276, 279, 145, 266, 280, 195, 0, - 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, - 0, 0, 0, 163, 0, 0, 0, 237, 123, 171, - 169, 255, 136, 132, 130, 122, 152, 175, 205, 252, - 199, 0, 166, 0, 0, 245, 183, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 0, 142, 0, 0, 0, 308, 0, - 0, 0, 0, 216, 0, 249, 146, 162, 114, 159, - 100, 110, 0, 144, 192, 224, 228, 0, 0, 0, - 124, 0, 226, 203, 268, 0, 206, 225, 167, 257, - 217, 267, 277, 278, 253, 275, 286, 242, 103, 251, - 265, 119, 236, 0, 0, 0, 105, 263, 248, 181, - 156, 157, 104, 0, 222, 129, 140, 126, 194, 260, - 261, 125, 289, 111, 274, 107, 112, 273, 188, 256, - 264, 182, 174, 106, 262, 180, 173, 161, 135, 148, - 214, 170, 215, 149, 185, 184, 186, 0, 0, 0, - 246, 271, 290, 116, 0, 254, 282, 285, 0, 218, - 117, 141, 134, 213, 139, 164, 281, 283, 284, 187, - 113, 151, 243, 160, 168, 221, 288, 202, 227, 120, - 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 397, 0, 0, 0, 0, 1202, 1203, + 1204, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, + 0, 345, 0, 0, 0, 0, 0, 0, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1535, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 452, 452, 0, 0, 0, 0, 0, 0, 0, + 314, 0, 314, 0, 0, 0, 0, 0, 1011, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1562, 1563, 1564, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1440, 0, 30, 466, 1440, 0, 0, 0, 1355, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, + 1639, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1391, 1392, 0, + 466, 0, 0, 0, 0, 0, 1440, 0, 0, 0, + 0, 0, 1412, 1413, 0, 1414, 1415, 0, 0, 0, + 0, 466, 0, 0, 0, 0, 0, 1422, 1423, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 314, 0, 0, 466, 0, + 314, 1011, 0, 0, 1443, 1445, 314, 0, 0, 0, + 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1445, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 466, 0, 466, + 0, 602, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1481, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1740, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1506, 0, 0, 1511, + 1512, 1513, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1517, 0, 0, 452, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, + 314, 810, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1011, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, + 0, 0, 0, 0, 0, 1570, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1596, 1597, 1598, 1599, 1600, 0, 0, 0, + 1603, 1604, 0, 0, 0, 0, 314, 0, 1615, 0, + 1617, 0, 1618, 0, 0, 0, 0, 1570, 0, 1570, + 1570, 1570, 314, 0, 314, 0, 0, 0, 0, 0, + 0, 314, 0, 0, 0, 314, 0, 0, 314, 0, + 0, 0, 910, 0, 0, 0, 0, 0, 1570, 0, + 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1669, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 466, 466, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1011, 0, 1694, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, + 0, 0, 452, 910, 0, 0, 0, 452, 452, 0, + 0, 452, 452, 452, 0, 0, 0, 1012, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1570, 0, 0, 0, 452, 452, 452, 452, + 452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 99, 108, 165, 287, 219, 138, 272, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 314, 1746, 0, 0, 0, 0, 910, 314, 0, 314, + 0, 0, 0, 0, 0, 0, 0, 314, 1073, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 102, 109, 115, 121, 127, 133, - 137, 143, 147, 150, 153, 154, 155, 158, 172, 176, - 177, 178, 179, 189, 190, 191, 193, 196, 197, 198, - 200, 201, 204, 207, 208, 209, 210, 211, 212, 220, - 223, 229, 230, 231, 232, 233, 234, 235, 238, 239, - 240, 241, 247, 250, 258, 259, 269, 276, 279, 344, - 266, 280, 195, 0, 0, 0, 0, 0, 0, 0, - 0, 131, 0, 0, 0, 0, 0, 163, 0, 0, - 0, 237, 123, 171, 169, 255, 136, 132, 130, 122, - 152, 175, 205, 252, 199, 0, 166, 0, 0, 245, - 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, - 303, 0, 308, 0, 0, 0, 0, 216, 0, 249, - 146, 162, 114, 159, 100, 110, 0, 144, 192, 224, - 228, 0, 0, 0, 124, 0, 226, 203, 268, 0, - 206, 225, 167, 257, 217, 267, 277, 278, 253, 275, - 286, 242, 103, 251, 265, 119, 236, 0, 0, 0, - 105, 263, 248, 181, 156, 157, 104, 0, 222, 129, - 140, 126, 194, 260, 261, 125, 289, 111, 274, 107, - 112, 273, 188, 256, 264, 182, 174, 106, 262, 180, - 173, 161, 135, 148, 214, 170, 215, 149, 185, 184, - 186, 0, 0, 0, 246, 271, 290, 116, 0, 254, - 282, 285, 0, 218, 117, 141, 134, 213, 139, 164, - 281, 283, 284, 187, 113, 151, 243, 160, 168, 221, - 288, 202, 227, 120, 270, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 108, 165, 287, 219, - 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 102, 109, - 115, 121, 127, 133, 137, 143, 147, 150, 153, 154, - 155, 158, 172, 176, 177, 178, 179, 189, 190, 191, - 193, 196, 197, 198, 200, 201, 204, 207, 208, 209, - 210, 211, 212, 220, 223, 229, 230, 231, 232, 233, - 234, 235, 238, 239, 240, 241, 247, 250, 258, 259, - 269, 276, 279, 145, 266, 280, 195, 0, 0, 0, - 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, - 0, 163, 0, 0, 0, 237, 123, 171, 169, 255, - 136, 132, 130, 122, 152, 175, 205, 252, 199, 0, - 166, 0, 0, 245, 183, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 314, + 314, 314, 314, 0, 0, 314, 314, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 314, 0, 0, + 0, 0, 0, 1192, 1193, 314, 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 142, 0, 0, 0, 308, 0, 0, 0, - 0, 216, 0, 249, 146, 162, 114, 159, 100, 110, - 0, 144, 192, 224, 228, 0, 0, 0, 124, 0, - 226, 203, 268, 0, 206, 225, 167, 257, 217, 267, - 277, 278, 253, 275, 286, 242, 103, 251, 265, 119, - 236, 0, 0, 0, 105, 263, 248, 181, 156, 157, - 104, 0, 222, 129, 140, 126, 194, 260, 261, 125, - 289, 111, 274, 107, 112, 273, 188, 256, 264, 182, - 174, 106, 262, 180, 173, 161, 135, 148, 214, 170, - 215, 149, 185, 184, 186, 0, 0, 0, 246, 271, - 290, 116, 0, 254, 282, 285, 0, 218, 117, 141, - 134, 213, 139, 164, 281, 283, 284, 187, 113, 151, - 243, 160, 168, 221, 288, 202, 227, 120, 270, 244, + 0, 0, 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, - 108, 165, 287, 219, 138, 272, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 127, 133, 137, 143, - 147, 150, 153, 154, 155, 158, 172, 176, 177, 178, - 179, 189, 190, 191, 193, 196, 197, 198, 200, 201, - 204, 207, 208, 209, 210, 211, 212, 220, 223, 229, - 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, - 247, 250, 258, 259, 269, 276, 279, 145, 266, 280, - 31, 32, 33, 62, 35, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 452, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1012, 314, 314, 314, 314, + 314, 0, 0, 0, 0, 0, 0, 0, 1285, 0, + 0, 0, 314, 0, 0, 0, 1073, 0, 0, 0, + 0, 314, 314, 0, 0, 314, 1301, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 0, 0, 0, 0, 37, 56, 57, 0, 59, - 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 46, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 39, 40, 42, 41, 44, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 45, 65, 64, 0, 0, 54, 55, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 48, 0, 49, 50, 51, 52, + 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 314, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 314, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1012, 0, 0, 0, 0, 577, + 565, 0, 314, 521, 580, 494, 511, 588, 512, 515, + 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, + 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, + 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, + 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, + 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 1099, 1100, 0, 0, 0, 0, 0, 121, 0, + 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, + 480, 587, 572, 502, 503, 1312, 0, 0, 0, 0, + 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, + 0, 0, 0, 0, 500, 0, 541, 0, 0, 0, + 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, + 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, + 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, + 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, + 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, + 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, + 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, + 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, + 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, + 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, + 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, + 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, + 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, + 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, + 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, + 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, + 0, 0, 98, 99, 100, 0, 1099, 1100, 0, 0, + 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, + 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, + 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, + 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, + 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, + 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, + 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, + 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, + 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, + 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, + 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, + 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, + 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, + 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, + 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, + 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, + 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, + 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, + 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, + 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, + 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, + 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, + 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, + 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, + 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, + 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, + 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, + 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, + 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, + 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, + 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, + 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, + 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, + 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, + 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, + 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, + 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, + 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, + 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, + 0, 0, 1432, 0, 500, 0, 541, 0, 0, 0, + 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, + 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, + 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, + 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, + 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, + 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, + 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, + 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, + 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, + 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, + 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, + 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, + 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, + 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, + 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, + 510, 550, 582, 161, 125, 105, 199, 254, 142, 62, + 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, + 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, + 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, + 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, + 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, + 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, + 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, + 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, + 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, + 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, + 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, + 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, + 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, + 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, + 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, + 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, + 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, + 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, + 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, + 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, + 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, + 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, + 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, + 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, + 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, + 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, + 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, + 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, + 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, + 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, + 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, + 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, + 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, + 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, + 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, + 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, + 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, + 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, + 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, + 0, 0, 1302, 0, 500, 0, 541, 0, 0, 0, + 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, + 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, + 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, + 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, + 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, + 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, + 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, + 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, + 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, + 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, + 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, + 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, + 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, + 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, + 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, + 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, + 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, + 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, + 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, + 518, 0, 0, 0, 0, 0, 0, 1045, 0, 500, + 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, + 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, + 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, + 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, + 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, + 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, + 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, + 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, + 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, + 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, + 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, + 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, + 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, + 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, + 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, + 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, + 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, + 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, + 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, + 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, + 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, + 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, + 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, + 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, + 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, + 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, + 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, + 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, + 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, + 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, + 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, + 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, + 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, + 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, + 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, + 0, 0, 0, 0, 500, 0, 541, 0, 0, 0, + 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, + 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, + 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, + 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, + 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, + 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, + 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, + 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, + 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, + 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, + 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, + 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, + 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, + 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, + 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, + 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, + 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, + 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, + 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, + 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, + 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, + 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, + 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, + 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, + 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, + 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, + 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, + 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, + 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, + 114, 283, 110, 469, 282, 194, 265, 273, 188, 180, + 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, + 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, + 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, + 221, 144, 170, 290, 292, 293, 470, 468, 463, 462, + 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, + 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, + 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, + 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, + 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, + 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, + 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, + 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, + 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, + 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, + 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, + 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, + 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, + 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, + 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, + 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, + 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, + 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, + 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, + 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, + 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, + 0, 0, 0, 0, 500, 0, 541, 0, 0, 0, + 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, + 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, + 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, + 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 812, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 469, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 470, 468, 463, 462, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, + 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, + 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, + 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, + 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, + 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, + 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, + 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, + 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, + 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, + 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, + 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, + 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, + 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, + 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, + 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, + 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, + 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, + 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, + 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, + 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, + 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, + 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, + 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, + 287, 262, 284, 295, 250, 106, 260, 460, 122, 244, + 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, + 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, + 114, 283, 110, 469, 282, 194, 265, 273, 188, 180, + 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, + 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, + 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, + 221, 144, 170, 290, 292, 293, 470, 468, 463, 462, + 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, + 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, + 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, + 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, + 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, + 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, + 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, + 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, + 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, + 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, + 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, + 259, 267, 268, 278, 285, 288, 150, 275, 289, 202, + 0, 0, 983, 0, 366, 0, 0, 0, 135, 0, + 365, 0, 0, 0, 169, 0, 984, 213, 0, 245, + 127, 177, 175, 264, 140, 136, 134, 126, 157, 181, + 212, 261, 206, 409, 172, 0, 0, 253, 189, 0, + 0, 0, 0, 0, 400, 401, 0, 0, 0, 0, + 0, 0, 0, 0, 161, 125, 105, 199, 254, 142, + 62, 0, 0, 98, 99, 100, 387, 386, 389, 390, + 391, 392, 0, 0, 121, 388, 393, 394, 395, 0, + 0, 0, 0, 363, 380, 0, 408, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 377, 378, 450, 0, + 0, 0, 423, 0, 379, 0, 0, 372, 373, 375, + 374, 376, 381, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 147, 422, 0, 0, 317, 0, 0, 420, + 0, 224, 0, 258, 151, 168, 117, 165, 102, 113, + 0, 149, 198, 232, 236, 0, 0, 0, 128, 0, + 234, 210, 277, 0, 214, 233, 173, 266, 225, 276, + 286, 287, 262, 284, 295, 250, 106, 260, 274, 122, + 244, 0, 0, 0, 108, 272, 257, 187, 162, 163, + 107, 0, 230, 133, 145, 130, 201, 269, 270, 129, + 298, 114, 283, 110, 115, 282, 194, 265, 273, 188, + 180, 109, 271, 186, 179, 167, 139, 153, 222, 176, + 223, 154, 191, 190, 192, 0, 0, 0, 255, 280, + 299, 119, 0, 263, 291, 294, 0, 226, 120, 146, + 138, 221, 144, 170, 290, 292, 293, 193, 116, 156, + 251, 166, 174, 229, 297, 209, 235, 123, 279, 252, + 410, 421, 416, 417, 414, 415, 413, 412, 411, 424, + 402, 403, 404, 405, 407, 0, 418, 419, 406, 101, + 111, 171, 296, 227, 143, 281, 0, 0, 132, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 103, 104, 112, 118, 124, 131, 137, 141, 148, + 152, 155, 158, 159, 160, 164, 178, 182, 183, 184, + 185, 195, 196, 197, 200, 203, 204, 205, 207, 208, + 211, 215, 216, 217, 218, 219, 220, 228, 231, 237, + 238, 239, 240, 241, 242, 243, 246, 247, 248, 249, + 256, 259, 267, 268, 278, 285, 288, 150, 275, 289, + 202, 0, 0, 0, 0, 366, 0, 0, 0, 135, + 0, 365, 0, 0, 0, 169, 0, 0, 213, 0, + 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, + 181, 212, 261, 206, 409, 172, 0, 0, 253, 189, + 0, 0, 0, 0, 0, 400, 401, 0, 0, 0, + 0, 0, 0, 1090, 0, 161, 125, 105, 199, 254, + 142, 62, 0, 0, 98, 99, 100, 387, 386, 389, + 390, 391, 392, 0, 0, 121, 388, 393, 394, 395, + 1091, 0, 0, 0, 363, 380, 0, 408, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 377, 378, 0, + 0, 0, 0, 423, 0, 379, 0, 0, 372, 373, + 375, 374, 376, 381, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 422, 0, 0, 317, 0, 0, + 420, 0, 224, 0, 258, 151, 168, 117, 165, 102, + 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, + 0, 234, 210, 277, 0, 214, 233, 173, 266, 225, + 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, + 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, + 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, + 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, + 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, + 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, + 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, + 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, + 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, + 252, 410, 421, 416, 417, 414, 415, 413, 412, 411, + 424, 402, 403, 404, 405, 407, 0, 418, 419, 406, + 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, + 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, + 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, + 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, + 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, + 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, + 289, 202, 0, 0, 0, 0, 366, 0, 0, 0, + 135, 0, 365, 0, 0, 0, 169, 0, 0, 213, + 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, + 157, 181, 212, 261, 206, 409, 172, 0, 0, 253, + 189, 0, 0, 0, 0, 0, 400, 401, 0, 0, + 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, + 254, 142, 62, 0, 438, 98, 99, 100, 387, 386, + 389, 390, 391, 392, 0, 0, 121, 388, 393, 394, + 395, 0, 0, 0, 0, 363, 380, 0, 408, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 377, 378, + 0, 0, 0, 0, 423, 0, 379, 0, 0, 372, + 373, 375, 374, 376, 381, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 422, 0, 0, 317, 0, + 0, 420, 0, 224, 0, 258, 151, 168, 117, 165, + 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, + 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, + 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, + 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, + 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, + 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, + 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, + 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, + 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, + 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, + 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, + 279, 252, 410, 421, 416, 417, 414, 415, 413, 412, + 411, 424, 402, 403, 404, 405, 407, 0, 418, 419, + 406, 101, 111, 171, 296, 227, 143, 281, 0, 0, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, + 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, + 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, + 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, + 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, + 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, + 275, 289, 202, 0, 0, 0, 0, 366, 0, 0, + 0, 135, 0, 365, 0, 0, 0, 169, 0, 0, + 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, + 126, 157, 181, 212, 261, 206, 409, 172, 0, 0, + 253, 189, 0, 0, 0, 0, 0, 400, 401, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, + 199, 254, 142, 62, 0, 0, 98, 99, 100, 387, + 386, 389, 390, 391, 392, 0, 0, 121, 388, 393, + 394, 395, 0, 0, 0, 0, 363, 380, 0, 408, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 377, + 378, 450, 0, 0, 0, 423, 0, 379, 0, 0, + 372, 373, 375, 374, 376, 381, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 422, 0, 0, 317, + 0, 0, 420, 0, 224, 0, 258, 151, 168, 117, + 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, + 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, + 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, + 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, + 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, + 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, + 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, + 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, + 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, + 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, + 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, + 123, 279, 252, 410, 421, 416, 417, 414, 415, 413, + 412, 411, 424, 402, 403, 404, 405, 407, 0, 418, + 419, 406, 101, 111, 171, 296, 227, 143, 281, 0, + 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, + 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, + 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, + 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, + 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, + 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, + 150, 275, 289, 202, 0, 0, 0, 0, 366, 0, + 0, 0, 135, 0, 365, 0, 0, 0, 169, 0, + 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 409, 172, 0, + 0, 253, 189, 0, 0, 0, 0, 0, 400, 401, + 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, + 105, 199, 254, 142, 62, 0, 0, 98, 99, 100, + 387, 1001, 389, 390, 391, 392, 0, 0, 121, 388, + 393, 394, 395, 0, 0, 0, 0, 363, 380, 0, + 408, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 377, 378, 450, 0, 0, 0, 423, 0, 379, 0, + 0, 372, 373, 375, 374, 376, 381, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 147, 422, 0, 0, + 317, 0, 0, 420, 0, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, + 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 410, 421, 416, 417, 414, 415, + 413, 412, 411, 424, 402, 403, 404, 405, 407, 0, + 418, 419, 406, 101, 111, 171, 296, 227, 143, 281, + 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 202, 0, 0, 0, 0, 366, + 0, 0, 0, 135, 0, 365, 0, 0, 0, 169, + 0, 0, 213, 0, 245, 127, 177, 175, 264, 140, + 136, 134, 126, 157, 181, 212, 261, 206, 409, 172, + 0, 0, 253, 189, 0, 0, 0, 0, 0, 400, + 401, 0, 0, 0, 0, 0, 0, 0, 0, 161, + 125, 105, 199, 254, 142, 62, 0, 0, 98, 99, + 100, 387, 998, 389, 390, 391, 392, 0, 0, 121, + 388, 393, 394, 395, 0, 0, 0, 0, 363, 380, + 0, 408, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 377, 378, 450, 0, 0, 0, 423, 0, 379, + 0, 0, 372, 373, 375, 374, 376, 381, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 147, 422, 0, + 0, 317, 0, 0, 420, 0, 224, 0, 258, 151, + 168, 117, 165, 102, 113, 0, 149, 198, 232, 236, + 0, 0, 0, 128, 0, 234, 210, 277, 0, 214, + 233, 173, 266, 225, 276, 286, 287, 262, 284, 295, + 250, 106, 260, 274, 122, 244, 0, 0, 0, 108, + 272, 257, 187, 162, 163, 107, 0, 230, 133, 145, + 130, 201, 269, 270, 129, 298, 114, 283, 110, 115, + 282, 194, 265, 273, 188, 180, 109, 271, 186, 179, + 167, 139, 153, 222, 176, 223, 154, 191, 190, 192, + 0, 0, 0, 255, 280, 299, 119, 0, 263, 291, + 294, 0, 226, 120, 146, 138, 221, 144, 170, 290, + 292, 293, 193, 116, 156, 251, 166, 174, 229, 297, + 209, 235, 123, 279, 252, 410, 421, 416, 417, 414, + 415, 413, 412, 411, 424, 402, 403, 404, 405, 407, + 0, 418, 419, 406, 101, 111, 171, 296, 227, 143, + 281, 0, 0, 132, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 103, 104, 112, 118, + 124, 131, 137, 141, 148, 152, 155, 158, 159, 160, + 164, 178, 182, 183, 184, 185, 195, 196, 197, 200, + 203, 204, 205, 207, 208, 211, 215, 216, 217, 218, + 219, 220, 228, 231, 237, 238, 239, 240, 241, 242, + 243, 246, 247, 248, 249, 256, 259, 267, 268, 278, + 285, 288, 150, 275, 289, 431, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, + 0, 0, 0, 366, 0, 0, 0, 135, 0, 365, + 0, 0, 0, 169, 0, 0, 213, 0, 245, 127, + 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, + 261, 206, 409, 172, 0, 0, 253, 189, 0, 0, + 0, 0, 0, 400, 401, 0, 0, 0, 0, 0, + 0, 0, 0, 161, 125, 105, 199, 254, 142, 62, + 0, 0, 98, 99, 100, 387, 386, 389, 390, 391, + 392, 0, 0, 121, 388, 393, 394, 395, 0, 0, + 0, 0, 363, 380, 0, 408, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 377, 378, 0, 0, 0, + 0, 423, 0, 379, 0, 0, 372, 373, 375, 374, + 376, 381, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 147, 422, 0, 0, 317, 0, 0, 420, 0, + 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, + 149, 198, 232, 236, 0, 0, 0, 128, 0, 234, + 210, 277, 0, 214, 233, 173, 266, 225, 276, 286, + 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, + 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, + 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, + 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, + 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, + 154, 191, 190, 192, 0, 0, 0, 255, 280, 299, + 119, 0, 263, 291, 294, 0, 226, 120, 146, 138, + 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, + 166, 174, 229, 297, 209, 235, 123, 279, 252, 410, + 421, 416, 417, 414, 415, 413, 412, 411, 424, 402, + 403, 404, 405, 407, 0, 418, 419, 406, 101, 111, + 171, 296, 227, 143, 281, 0, 0, 132, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, + 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, + 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, + 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, + 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, + 259, 267, 268, 278, 285, 288, 150, 275, 289, 202, + 0, 0, 0, 0, 366, 0, 0, 0, 135, 0, + 365, 0, 0, 0, 169, 0, 0, 213, 0, 245, + 127, 177, 175, 264, 140, 136, 134, 126, 157, 181, + 212, 261, 206, 409, 172, 0, 0, 253, 189, 0, + 0, 0, 0, 0, 400, 401, 0, 0, 0, 0, + 0, 0, 0, 0, 161, 125, 105, 199, 254, 142, + 62, 0, 0, 98, 99, 100, 387, 386, 389, 390, + 391, 392, 0, 0, 121, 388, 393, 394, 395, 0, + 0, 0, 0, 363, 380, 0, 408, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 377, 378, 0, 0, + 0, 0, 423, 0, 379, 0, 0, 372, 373, 375, + 374, 376, 381, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 147, 422, 0, 0, 317, 0, 0, 420, + 0, 224, 0, 258, 151, 168, 117, 165, 102, 113, + 0, 149, 198, 232, 236, 0, 0, 0, 128, 0, + 234, 210, 277, 0, 214, 233, 173, 266, 225, 276, + 286, 287, 262, 284, 295, 250, 106, 260, 274, 122, + 244, 0, 0, 0, 108, 272, 257, 187, 162, 163, + 107, 0, 230, 133, 145, 130, 201, 269, 270, 129, + 298, 114, 283, 110, 115, 282, 194, 265, 273, 188, + 180, 109, 271, 186, 179, 167, 139, 153, 222, 176, + 223, 154, 191, 190, 192, 0, 0, 0, 255, 280, + 299, 119, 0, 263, 291, 294, 0, 226, 120, 146, + 138, 221, 144, 170, 290, 292, 293, 193, 116, 156, + 251, 166, 174, 229, 297, 209, 235, 123, 279, 252, + 410, 421, 416, 417, 414, 415, 413, 412, 411, 424, + 402, 403, 404, 405, 407, 0, 418, 419, 406, 101, + 111, 171, 296, 227, 143, 281, 0, 0, 132, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 103, 104, 112, 118, 124, 131, 137, 141, 148, + 152, 155, 158, 159, 160, 164, 178, 182, 183, 184, + 185, 195, 196, 197, 200, 203, 204, 205, 207, 208, + 211, 215, 216, 217, 218, 219, 220, 228, 231, 237, + 238, 239, 240, 241, 242, 243, 246, 247, 248, 249, + 256, 259, 267, 268, 278, 285, 288, 150, 275, 289, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 0, 0, 0, 0, 0, 169, 0, 0, 213, 0, + 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, + 181, 212, 261, 206, 409, 172, 0, 0, 253, 189, + 0, 0, 0, 0, 0, 400, 401, 0, 0, 0, + 0, 0, 0, 0, 0, 161, 125, 105, 199, 254, + 142, 62, 0, 0, 98, 99, 100, 387, 386, 389, + 390, 391, 392, 0, 0, 121, 388, 393, 394, 395, + 0, 0, 0, 0, 0, 380, 0, 408, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 377, 378, 0, + 0, 0, 0, 423, 0, 379, 0, 0, 372, 373, + 375, 374, 376, 381, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 422, 0, 0, 317, 0, 0, + 420, 0, 224, 0, 258, 151, 168, 117, 165, 102, + 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, + 0, 234, 210, 277, 1747, 214, 233, 173, 266, 225, + 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, + 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, + 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, + 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, + 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, + 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, + 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, + 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, + 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, + 252, 410, 421, 416, 417, 414, 415, 413, 412, 411, + 424, 402, 403, 404, 405, 407, 0, 418, 419, 406, + 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, + 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, + 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, + 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, + 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, + 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, + 289, 202, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, + 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, + 157, 181, 212, 261, 206, 409, 172, 0, 0, 253, + 189, 0, 0, 0, 0, 0, 400, 401, 0, 0, + 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, + 254, 142, 62, 0, 438, 98, 99, 100, 387, 386, + 389, 390, 391, 392, 0, 0, 121, 388, 393, 394, + 395, 0, 0, 0, 0, 0, 380, 0, 408, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 377, 378, + 0, 0, 0, 0, 423, 0, 379, 0, 0, 372, + 373, 375, 374, 376, 381, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 422, 0, 0, 317, 0, + 0, 420, 0, 224, 0, 258, 151, 168, 117, 165, + 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, + 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, + 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, + 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, + 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, + 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, + 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, + 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, + 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, + 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, + 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, + 279, 252, 410, 421, 416, 417, 414, 415, 413, 412, + 411, 424, 402, 403, 404, 405, 407, 0, 418, 419, + 406, 101, 111, 171, 296, 227, 143, 281, 0, 0, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, + 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, + 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, + 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, + 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, + 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, + 275, 289, 202, 0, 0, 0, 0, 0, 0, 0, + 0, 135, 0, 0, 0, 0, 0, 169, 0, 0, + 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, + 126, 157, 181, 212, 261, 206, 409, 172, 0, 0, + 253, 189, 0, 0, 0, 0, 0, 400, 401, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, + 199, 254, 142, 62, 0, 0, 98, 99, 100, 387, + 386, 389, 390, 391, 392, 0, 0, 121, 388, 393, + 394, 395, 0, 0, 0, 0, 0, 380, 0, 408, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 377, + 378, 0, 0, 0, 0, 423, 0, 379, 0, 0, + 372, 373, 375, 374, 376, 381, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 422, 0, 0, 317, + 0, 0, 420, 0, 224, 0, 258, 151, 168, 117, + 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, + 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, + 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, + 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, + 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, + 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, + 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, + 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, + 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, + 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, + 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, + 123, 279, 252, 410, 421, 416, 417, 414, 415, 413, + 412, 411, 424, 402, 403, 404, 405, 407, 0, 418, + 419, 406, 101, 111, 171, 296, 227, 143, 281, 0, + 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, + 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, + 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, + 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, + 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, + 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, + 150, 275, 289, 202, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 0, 0, 0, 0, 0, 169, 0, + 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 0, 172, 0, + 0, 253, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 693, 692, 702, 703, + 695, 696, 697, 698, 699, 700, 701, 694, 0, 0, + 704, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, + 317, 0, 0, 0, 0, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, + 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 111, 171, 296, 227, 143, 281, + 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 202, 0, 0, 0, 789, 0, + 0, 0, 0, 135, 0, 0, 0, 0, 0, 169, + 0, 0, 213, 0, 245, 127, 177, 175, 264, 140, + 136, 134, 126, 157, 181, 212, 261, 206, 0, 172, + 0, 0, 253, 189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, + 125, 105, 199, 254, 142, 0, 0, 0, 98, 99, + 100, 0, 791, 0, 0, 0, 0, 0, 0, 121, + 0, 0, 0, 0, 0, 682, 683, 681, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, + 0, 317, 0, 0, 0, 0, 224, 0, 258, 151, + 168, 117, 165, 102, 113, 0, 149, 198, 232, 236, + 0, 0, 0, 128, 0, 234, 210, 277, 0, 214, + 233, 173, 266, 225, 276, 286, 287, 262, 284, 295, + 250, 106, 260, 274, 122, 244, 0, 0, 0, 108, + 272, 257, 187, 162, 163, 107, 0, 230, 133, 145, + 130, 201, 269, 270, 129, 298, 114, 283, 110, 115, + 282, 194, 265, 273, 188, 180, 109, 271, 186, 179, + 167, 139, 153, 222, 176, 223, 154, 191, 190, 192, + 0, 0, 0, 255, 280, 299, 119, 0, 263, 291, + 294, 0, 226, 120, 146, 138, 221, 144, 170, 290, + 292, 293, 193, 116, 156, 251, 166, 174, 229, 297, + 209, 235, 123, 279, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 101, 111, 171, 296, 227, 143, + 281, 0, 0, 132, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 103, 104, 112, 118, + 124, 131, 137, 141, 148, 152, 155, 158, 159, 160, + 164, 178, 182, 183, 184, 185, 195, 196, 197, 200, + 203, 204, 205, 207, 208, 211, 215, 216, 217, 218, + 219, 220, 228, 231, 237, 238, 239, 240, 241, 242, + 243, 246, 247, 248, 249, 256, 259, 267, 268, 278, + 285, 288, 150, 275, 289, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, + 169, 0, 0, 213, 0, 245, 127, 177, 175, 264, + 140, 136, 134, 126, 157, 181, 212, 261, 206, 0, + 172, 0, 0, 253, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 125, 105, 199, 254, 142, 0, 0, 0, 98, + 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 121, 0, 0, 0, 0, 0, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 91, + 92, 0, 88, 0, 0, 0, 94, 224, 0, 258, + 151, 168, 117, 165, 102, 113, 0, 149, 198, 232, + 236, 0, 0, 0, 128, 0, 234, 210, 277, 0, + 214, 233, 173, 266, 225, 276, 286, 287, 262, 284, + 295, 250, 106, 260, 274, 122, 244, 0, 0, 0, + 108, 272, 257, 187, 162, 163, 107, 0, 230, 133, + 145, 130, 201, 269, 270, 129, 298, 114, 283, 110, + 115, 282, 194, 265, 273, 188, 180, 109, 271, 186, + 179, 167, 139, 153, 222, 176, 223, 154, 191, 190, + 192, 0, 0, 0, 255, 280, 299, 119, 0, 263, + 291, 294, 0, 226, 120, 146, 138, 221, 144, 170, + 290, 292, 293, 193, 116, 156, 251, 166, 174, 229, + 297, 209, 235, 123, 279, 252, 0, 90, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 111, 171, 296, 227, + 143, 281, 0, 0, 132, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 103, 104, 112, + 118, 124, 131, 137, 141, 148, 152, 155, 158, 159, + 160, 164, 178, 182, 183, 184, 185, 195, 196, 197, + 200, 203, 204, 205, 207, 208, 211, 215, 216, 217, + 218, 219, 220, 228, 231, 237, 238, 239, 240, 241, + 242, 243, 246, 247, 248, 249, 256, 259, 267, 268, + 278, 285, 288, 150, 275, 289, 202, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 1114, 0, 0, 0, + 0, 169, 0, 0, 213, 0, 245, 127, 177, 175, + 264, 140, 136, 134, 126, 157, 181, 212, 261, 206, + 0, 172, 0, 0, 253, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 161, 125, 105, 199, 254, 142, 0, 0, 0, + 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 1113, 317, 0, 0, 0, 1109, 1107, 0, + 1108, 151, 168, 598, 165, 102, 113, 1105, 1111, 198, + 232, 236, 0, 0, 0, 128, 0, 234, 210, 277, + 0, 214, 233, 173, 266, 225, 276, 286, 287, 262, + 284, 295, 250, 106, 260, 274, 122, 244, 0, 0, + 0, 108, 272, 257, 187, 162, 163, 107, 0, 230, + 133, 145, 130, 201, 269, 270, 129, 298, 114, 283, + 110, 115, 282, 194, 265, 273, 188, 180, 109, 271, + 186, 179, 167, 139, 153, 222, 176, 223, 154, 191, + 190, 192, 0, 0, 0, 255, 280, 299, 119, 0, + 263, 291, 294, 0, 226, 120, 146, 138, 221, 144, + 170, 290, 292, 293, 193, 116, 156, 251, 166, 174, + 229, 297, 209, 235, 123, 279, 252, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 111, 171, 296, + 227, 143, 281, 0, 0, 132, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, + 112, 118, 124, 131, 137, 141, 148, 152, 155, 158, + 159, 160, 164, 178, 182, 183, 184, 185, 195, 196, + 197, 200, 203, 204, 205, 207, 208, 211, 215, 216, + 217, 218, 219, 220, 228, 231, 237, 238, 239, 240, + 241, 242, 243, 246, 247, 248, 249, 256, 259, 267, + 268, 278, 285, 288, 150, 275, 289, 31, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 0, 0, 0, 0, 0, 169, 0, 0, 213, 0, + 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, + 181, 212, 261, 206, 0, 172, 0, 0, 253, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 161, 125, 105, 199, 254, + 142, 62, 0, 438, 98, 99, 100, 0, 0, 0, + 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 0, 0, 0, 317, 0, 0, + 0, 0, 224, 0, 258, 151, 168, 117, 165, 102, + 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, + 0, 234, 210, 277, 0, 214, 233, 173, 266, 225, + 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, + 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, + 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, + 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, + 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, + 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, + 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, + 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, + 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, + 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, + 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, + 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, + 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, + 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, + 289, 202, 0, 0, 0, 1072, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, + 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, + 157, 181, 212, 261, 206, 0, 172, 0, 0, 253, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, + 254, 142, 0, 0, 0, 98, 99, 100, 0, 1074, + 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 317, 0, + 0, 0, 0, 224, 0, 258, 151, 168, 117, 165, + 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, + 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, + 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, + 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, + 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, + 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, + 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, + 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, + 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, + 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, + 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, + 279, 252, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 111, 171, 296, 227, 143, 281, 0, 0, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, + 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, + 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, + 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, + 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, + 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, + 275, 289, 31, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, + 169, 0, 0, 213, 0, 245, 127, 177, 175, 264, + 140, 136, 134, 126, 157, 181, 212, 261, 206, 0, + 172, 0, 0, 253, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 125, 105, 199, 254, 142, 62, 0, 0, 98, + 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, + 0, 0, 317, 0, 0, 0, 0, 224, 0, 258, + 151, 168, 117, 165, 102, 113, 0, 149, 198, 232, + 236, 0, 0, 0, 128, 0, 234, 210, 277, 0, + 214, 233, 173, 266, 225, 276, 286, 287, 262, 284, + 295, 250, 106, 260, 274, 122, 244, 0, 0, 0, + 108, 272, 257, 187, 162, 163, 107, 0, 230, 133, + 145, 130, 201, 269, 270, 129, 298, 114, 283, 110, + 115, 282, 194, 265, 273, 188, 180, 109, 271, 186, + 179, 167, 139, 153, 222, 176, 223, 154, 191, 190, + 192, 0, 0, 0, 255, 280, 299, 119, 0, 263, + 291, 294, 0, 226, 120, 146, 138, 221, 144, 170, + 290, 292, 293, 193, 116, 156, 251, 166, 174, 229, + 297, 209, 235, 123, 279, 252, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 111, 171, 296, 227, + 143, 281, 0, 0, 132, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 103, 104, 112, + 118, 124, 131, 137, 141, 148, 152, 155, 158, 159, + 160, 164, 178, 182, 183, 184, 185, 195, 196, 197, + 200, 203, 204, 205, 207, 208, 211, 215, 216, 217, + 218, 219, 220, 228, 231, 237, 238, 239, 240, 241, + 242, 243, 246, 247, 248, 249, 256, 259, 267, 268, + 278, 285, 288, 150, 275, 289, 202, 0, 0, 0, + 1072, 0, 0, 0, 0, 135, 0, 0, 0, 0, + 0, 169, 0, 0, 213, 0, 245, 127, 177, 175, + 264, 140, 136, 134, 126, 157, 181, 212, 261, 206, + 0, 172, 0, 0, 253, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 161, 125, 105, 199, 254, 142, 0, 0, 0, + 98, 99, 100, 0, 1074, 0, 0, 0, 0, 0, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 317, 0, 0, 0, 0, 224, 0, + 258, 151, 168, 117, 165, 102, 113, 0, 149, 198, + 232, 236, 0, 0, 0, 128, 0, 234, 210, 277, + 0, 1070, 233, 173, 266, 225, 276, 286, 287, 262, + 284, 295, 250, 106, 260, 274, 122, 244, 0, 0, + 0, 108, 272, 257, 187, 162, 163, 107, 0, 230, + 133, 145, 130, 201, 269, 270, 129, 298, 114, 283, + 110, 115, 282, 194, 265, 273, 188, 180, 109, 271, + 186, 179, 167, 139, 153, 222, 176, 223, 154, 191, + 190, 192, 0, 0, 0, 255, 280, 299, 119, 0, + 263, 291, 294, 0, 226, 120, 146, 138, 221, 144, + 170, 290, 292, 293, 193, 116, 156, 251, 166, 174, + 229, 297, 209, 235, 123, 279, 252, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 111, 171, 296, + 227, 143, 281, 0, 0, 132, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, + 112, 118, 124, 131, 137, 141, 148, 152, 155, 158, + 159, 160, 164, 178, 182, 183, 184, 185, 195, 196, + 197, 200, 203, 204, 205, 207, 208, 211, 215, 216, + 217, 218, 219, 220, 228, 231, 237, 238, 239, 240, + 241, 242, 243, 246, 247, 248, 249, 256, 259, 267, + 268, 278, 285, 288, 150, 275, 289, 202, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, + 0, 0, 169, 0, 0, 213, 0, 245, 127, 177, + 175, 264, 140, 136, 134, 126, 157, 181, 212, 261, + 206, 0, 172, 0, 0, 253, 189, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 161, 125, 105, 199, 254, 142, 0, 0, + 0, 98, 99, 100, 0, 0, 1037, 0, 0, 1038, + 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 147, 0, 0, 0, 317, 0, 0, 0, 0, 224, + 0, 258, 151, 168, 117, 165, 102, 113, 0, 149, + 198, 232, 236, 0, 0, 0, 128, 0, 234, 210, + 277, 0, 214, 233, 173, 266, 225, 276, 286, 287, + 262, 284, 295, 250, 106, 260, 274, 122, 244, 0, + 0, 0, 108, 272, 257, 187, 162, 163, 107, 0, + 230, 133, 145, 130, 201, 269, 270, 129, 298, 114, + 283, 110, 115, 282, 194, 265, 273, 188, 180, 109, + 271, 186, 179, 167, 139, 153, 222, 176, 223, 154, + 191, 190, 192, 0, 0, 0, 255, 280, 299, 119, + 0, 263, 291, 294, 0, 226, 120, 146, 138, 221, + 144, 170, 290, 292, 293, 193, 116, 156, 251, 166, + 174, 229, 297, 209, 235, 123, 279, 252, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 111, 171, + 296, 227, 143, 281, 0, 0, 132, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, + 104, 112, 118, 124, 131, 137, 141, 148, 152, 155, + 158, 159, 160, 164, 178, 182, 183, 184, 185, 195, + 196, 197, 200, 203, 204, 205, 207, 208, 211, 215, + 216, 217, 218, 219, 220, 228, 231, 237, 238, 239, + 240, 241, 242, 243, 246, 247, 248, 249, 256, 259, + 267, 268, 278, 285, 288, 150, 275, 289, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 0, 823, + 0, 0, 0, 169, 0, 0, 213, 0, 245, 127, + 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, + 261, 206, 0, 172, 0, 0, 253, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 161, 125, 105, 199, 254, 142, 0, + 0, 0, 98, 99, 100, 0, 822, 0, 0, 0, + 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 147, 0, 0, 0, 317, 0, 0, 0, 0, + 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, + 149, 198, 232, 236, 0, 0, 0, 128, 0, 234, + 210, 277, 0, 214, 233, 173, 266, 225, 276, 286, + 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, + 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, + 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, + 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, + 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, + 154, 191, 190, 192, 0, 0, 0, 255, 280, 299, + 119, 0, 263, 291, 294, 0, 226, 120, 146, 138, + 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, + 166, 174, 229, 297, 209, 235, 123, 279, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 111, + 171, 296, 227, 143, 281, 0, 0, 132, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, + 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, + 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, + 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, + 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, + 259, 267, 268, 278, 285, 288, 150, 275, 289, 202, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, + 0, 0, 0, 0, 169, 0, 0, 213, 0, 245, + 127, 177, 175, 264, 140, 136, 134, 126, 157, 181, + 212, 261, 206, 0, 172, 0, 0, 253, 189, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 161, 125, 105, 199, 254, 142, + 0, 0, 0, 98, 99, 100, 0, 0, 0, 0, + 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 592, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 147, 0, 0, 0, 317, 0, 0, 0, + 0, 224, 0, 258, 151, 168, 598, 165, 102, 113, + 596, 149, 198, 232, 236, 0, 0, 0, 128, 0, + 234, 210, 277, 0, 214, 233, 173, 266, 225, 276, + 286, 287, 262, 284, 295, 250, 106, 260, 274, 122, + 244, 0, 0, 0, 108, 272, 257, 187, 162, 163, + 107, 0, 230, 133, 145, 130, 201, 269, 270, 129, + 298, 114, 283, 110, 115, 282, 194, 265, 273, 188, + 180, 109, 271, 186, 179, 167, 139, 153, 222, 176, + 223, 154, 191, 190, 192, 0, 0, 0, 255, 280, + 299, 119, 0, 263, 291, 294, 0, 226, 120, 146, + 138, 221, 144, 170, 290, 292, 293, 193, 116, 156, + 251, 166, 174, 229, 297, 209, 235, 123, 279, 252, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 111, 171, 296, 227, 143, 281, 0, 0, 132, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 103, 104, 112, 118, 124, 131, 137, 141, 148, + 152, 155, 158, 159, 160, 164, 178, 182, 183, 184, + 185, 195, 196, 197, 200, 203, 204, 205, 207, 208, + 211, 215, 216, 217, 218, 219, 220, 228, 231, 237, + 238, 239, 240, 241, 242, 243, 246, 247, 248, 249, + 256, 259, 267, 268, 278, 285, 288, 150, 275, 289, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 0, 0, 0, 0, 0, 169, 0, 0, 213, 0, + 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, + 181, 212, 261, 206, 0, 172, 0, 0, 253, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 161, 125, 105, 199, 254, + 142, 0, 0, 438, 98, 99, 100, 0, 0, 0, + 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 0, 0, 0, 317, 0, 0, + 0, 0, 224, 0, 258, 151, 168, 117, 165, 102, + 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, + 0, 234, 210, 277, 0, 214, 233, 173, 266, 225, + 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, + 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, + 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, + 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, + 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, + 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, + 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, + 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, + 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, + 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, + 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, + 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, + 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, + 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, + 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, + 289, 202, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, + 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, + 157, 181, 212, 261, 206, 0, 172, 0, 0, 253, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, + 254, 142, 62, 0, 0, 98, 99, 100, 0, 0, + 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 317, 0, + 0, 0, 0, 224, 0, 258, 151, 168, 117, 165, + 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, + 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, + 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, + 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, + 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, + 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, + 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, + 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, + 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, + 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, + 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, + 279, 252, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 111, 171, 296, 227, 143, 281, 0, 0, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, + 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, + 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, + 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, + 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, + 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, + 275, 289, 202, 0, 0, 0, 0, 0, 0, 0, + 0, 135, 0, 0, 0, 0, 0, 169, 0, 0, + 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, + 126, 157, 181, 212, 261, 206, 0, 172, 0, 0, + 253, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, + 199, 254, 142, 0, 0, 0, 98, 99, 100, 0, + 1074, 0, 0, 0, 0, 0, 0, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 0, 0, 0, 317, + 0, 0, 0, 0, 224, 0, 258, 151, 168, 117, + 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, + 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, + 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, + 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, + 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, + 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, + 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, + 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, + 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, + 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, + 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, + 123, 279, 252, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 111, 171, 296, 227, 143, 281, 0, + 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, + 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, + 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, + 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, + 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, + 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, + 150, 275, 289, 202, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 0, 0, 0, 0, 0, 169, 0, + 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 0, 172, 0, + 0, 253, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 791, 0, 0, 0, 0, 0, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, + 317, 0, 0, 0, 0, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, + 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 111, 171, 296, 227, 143, 281, + 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 805, 0, 0, 0, 0, 0, + 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, + 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, + 157, 181, 212, 261, 206, 0, 172, 0, 0, 253, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, + 254, 142, 0, 0, 0, 98, 99, 100, 0, 0, + 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 317, 0, + 0, 0, 0, 224, 0, 258, 151, 168, 117, 165, + 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, + 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, + 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, + 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, + 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, + 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, + 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, + 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, + 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, + 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, + 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, + 279, 252, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 111, 171, 296, 227, 143, 281, 0, 0, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, + 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, + 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, + 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, + 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, + 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, + 275, 289, 202, 0, 0, 0, 0, 0, 0, 0, + 795, 135, 0, 0, 0, 0, 0, 169, 0, 0, + 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, + 126, 157, 181, 212, 261, 206, 0, 172, 0, 0, + 253, 189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, + 199, 254, 142, 0, 0, 0, 98, 99, 100, 0, + 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 0, 0, 0, 317, + 0, 0, 0, 0, 224, 0, 258, 151, 168, 117, + 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, + 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, + 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, + 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, + 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, + 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, + 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, + 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, + 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, + 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, + 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, + 123, 279, 252, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 111, 171, 296, 227, 143, 281, 0, + 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, + 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, + 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, + 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, + 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, + 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, + 150, 275, 289, 202, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 0, 0, 0, 0, 0, 169, 0, + 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, + 134, 126, 157, 181, 212, 261, 206, 0, 172, 0, + 0, 253, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, + 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, + 0, 671, 0, 0, 0, 0, 0, 0, 121, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, + 317, 0, 0, 0, 0, 224, 0, 258, 151, 168, + 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, + 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, + 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, + 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, + 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, + 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, + 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, + 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, + 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, + 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, + 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, + 235, 123, 279, 252, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 111, 171, 296, 227, 143, 281, + 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, + 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, + 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, + 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, + 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, + 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, + 288, 150, 275, 289, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 135, 0, 0, 0, 0, 0, 169, + 0, 0, 213, 0, 245, 127, 177, 175, 264, 140, + 136, 134, 126, 157, 181, 212, 261, 206, 0, 172, + 0, 0, 253, 189, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, + 125, 105, 199, 254, 142, 0, 0, 0, 98, 99, + 100, 0, 0, 0, 0, 0, 0, 0, 0, 121, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 354, 0, 147, 0, 0, + 0, 317, 0, 0, 0, 0, 224, 0, 258, 151, + 168, 117, 165, 102, 113, 0, 149, 198, 232, 236, + 0, 0, 0, 128, 0, 234, 210, 277, 0, 214, + 233, 173, 266, 225, 276, 286, 287, 262, 284, 295, + 250, 106, 260, 274, 122, 244, 0, 0, 0, 108, + 272, 257, 187, 162, 163, 107, 0, 230, 133, 145, + 130, 201, 269, 270, 129, 298, 114, 283, 110, 115, + 282, 194, 265, 273, 188, 180, 109, 271, 186, 179, + 167, 139, 153, 222, 176, 223, 154, 191, 190, 192, + 0, 0, 0, 255, 280, 299, 119, 0, 263, 291, + 294, 0, 226, 120, 146, 138, 221, 144, 170, 290, + 292, 293, 193, 116, 156, 251, 166, 174, 229, 297, + 209, 235, 123, 279, 252, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 101, 111, 171, 296, 227, 143, + 281, 0, 0, 132, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 103, 104, 112, 118, + 124, 131, 137, 141, 148, 152, 155, 158, 159, 160, + 164, 178, 182, 183, 184, 185, 195, 196, 197, 200, + 203, 204, 205, 207, 208, 211, 215, 216, 217, 218, + 219, 220, 228, 231, 237, 238, 239, 240, 241, 242, + 243, 246, 247, 248, 249, 256, 259, 267, 268, 278, + 285, 288, 353, 275, 289, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, + 169, 0, 0, 213, 0, 245, 127, 177, 175, 264, + 140, 136, 134, 126, 157, 181, 212, 261, 206, 0, + 172, 0, 0, 253, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 125, 105, 199, 254, 142, 0, 0, 0, 98, + 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, + 312, 0, 317, 0, 0, 0, 0, 224, 0, 258, + 151, 168, 117, 165, 102, 113, 0, 149, 198, 232, + 236, 0, 0, 0, 128, 0, 234, 210, 277, 0, + 214, 233, 173, 266, 225, 276, 286, 287, 262, 284, + 295, 250, 106, 260, 274, 122, 244, 0, 0, 0, + 108, 272, 257, 187, 162, 163, 107, 0, 230, 133, + 145, 130, 201, 269, 270, 129, 298, 114, 283, 110, + 115, 282, 194, 265, 273, 188, 180, 109, 271, 186, + 179, 167, 139, 153, 222, 176, 223, 154, 191, 190, + 192, 0, 0, 0, 255, 280, 299, 119, 0, 263, + 291, 294, 0, 226, 120, 146, 138, 221, 144, 170, + 290, 292, 293, 193, 116, 156, 251, 166, 174, 229, + 297, 209, 235, 123, 279, 252, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 111, 171, 296, 227, + 143, 281, 0, 0, 132, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 103, 104, 112, + 118, 124, 131, 137, 141, 148, 152, 155, 158, 159, + 160, 164, 178, 182, 183, 184, 185, 195, 196, 197, + 200, 203, 204, 205, 207, 208, 211, 215, 216, 217, + 218, 219, 220, 228, 231, 237, 238, 239, 240, 241, + 242, 243, 246, 247, 248, 249, 256, 259, 267, 268, + 278, 285, 288, 150, 275, 289, 202, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, + 0, 169, 0, 0, 213, 0, 245, 127, 177, 175, + 264, 140, 136, 134, 126, 157, 181, 212, 261, 206, + 0, 172, 0, 0, 253, 189, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 161, 125, 105, 199, 254, 142, 0, 0, 0, + 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, + 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 317, 0, 0, 0, 0, 224, 0, + 258, 151, 168, 117, 165, 102, 113, 0, 149, 198, + 232, 236, 0, 0, 0, 128, 0, 234, 210, 277, + 0, 214, 233, 173, 266, 225, 276, 286, 287, 262, + 284, 295, 250, 106, 260, 274, 122, 244, 0, 0, + 0, 108, 272, 257, 187, 162, 163, 107, 0, 230, + 133, 145, 130, 201, 269, 270, 129, 298, 114, 283, + 110, 115, 282, 194, 265, 273, 188, 180, 109, 271, + 186, 179, 167, 139, 153, 222, 176, 223, 154, 191, + 190, 192, 0, 0, 0, 255, 280, 299, 119, 0, + 263, 291, 294, 0, 226, 120, 146, 138, 221, 144, + 170, 290, 292, 293, 193, 116, 156, 251, 166, 174, + 229, 297, 209, 235, 123, 279, 252, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 101, 111, 171, 296, + 227, 143, 281, 0, 0, 132, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, + 112, 118, 124, 131, 137, 141, 148, 152, 155, 158, + 159, 160, 164, 178, 182, 183, 184, 185, 195, 196, + 197, 200, 203, 204, 205, 207, 208, 211, 215, 216, + 217, 218, 219, 220, 228, 231, 237, 238, 239, 240, + 241, 242, 243, 246, 247, 248, 249, 256, 259, 267, + 268, 278, 285, 288, 150, 275, 289, } var yyPact = [...]int{ - 18844, -1000, -288, 1153, -1000, -1000, -1000, -1000, -1000, -1000, + 135, -1000, -286, 1139, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1088, - 849, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 264, 11882, - -41, 135, 29, 18103, 134, 274, 18467, -1000, 19, -1000, - 9, 18467, 17, 17739, -1000, -1000, -55, -61, -1000, 9698, - 993, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 839, - 1065, 1064, 1085, 671, 1146, -1000, 8229, 8229, 105, 105, - 105, 7137, -1000, -1000, 14820, 18467, 131, 18467, -143, 98, - 98, 98, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1085, + 867, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 322, 836, + 13096, -32, 168, 24, 19436, 154, 2081, 19807, -1000, 32, + -1000, 16, 19807, 28, 19065, -1000, -1000, -84, -88, -1000, + 10870, 993, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 845, 1067, 1059, 1083, 707, 1150, -1000, 9373, 9373, 119, + 119, 119, 7889, -1000, -1000, 16090, 19807, 19807, 19807, -150, + 115, 115, 115, 163, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2892,25 +3014,24 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 133, 18467, 505, 505, 252, 506, 18467, 91, 505, - 91, 91, 91, 18467, -1000, 180, -1000, -1000, -1000, 18467, - 505, 1023, 321, 104, 226, 226, 226, -1000, 198, -1000, - 4491, 27, 30, -57, 1103, 28, -21, -1000, 321, 4491, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 114, -1000, - -1000, 18467, 17375, 158, 288, -1000, -1000, -1000, -1000, -1000, - -1000, 625, 496, -1000, 9698, 1851, 778, 778, -1000, -1000, - 159, -1000, -1000, 10790, 10790, 10790, 10790, 10790, 10790, 10790, - 10790, 10790, 10790, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 778, 173, -1000, - 9334, 778, 778, 778, 778, 778, 778, 778, 778, 9698, - 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, - 778, 778, 778, 778, 778, 778, -1000, -1000, -1000, 1088, - -1000, 849, -1000, -1000, -1000, 1015, 9698, 9698, 1088, -1000, - 918, 8229, -1000, -1000, 1141, -1000, -1000, -1000, -1000, 317, - 1139, -1000, 11518, 172, 1134, 17011, -1000, 15548, 16647, 776, - 6759, -78, -1000, -1000, -1000, 281, 14456, -1000, -1000, -1000, - 1019, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 145, 19807, 611, 611, 226, 578, 19807, 107, 611, 107, + 107, 107, 19807, -1000, 222, -1000, -1000, -1000, 19807, 611, + 1016, 392, 90, 291, 291, 291, -1000, 231, -1000, 5579, + 45, 51, -18, 1102, 49, -31, -1000, 392, 5579, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 139, -1000, -1000, + 19807, 18694, 153, 314, -1000, -1000, -1000, -1000, -1000, -1000, + 742, 558, -1000, 10870, 1815, 757, 757, -1000, -1000, 198, + -1000, -1000, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, + 11983, 11983, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 757, 218, -1000, 10499, + 757, 757, 757, 757, 757, 757, 757, 757, 10870, 757, + 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, + 757, 757, 757, 757, 757, -1000, -1000, -1000, 1085, -1000, + 867, -1000, -1000, -1000, 1019, 10870, 10870, 1085, -1000, 944, + 9373, -1000, -1000, 1096, -1000, -1000, -1000, -1000, 376, 1115, + -1000, 12725, 214, 1110, 18323, -1000, 16832, 17952, 772, 7504, + -117, -1000, -1000, -1000, 306, 15719, -1000, -1000, -1000, 1015, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2921,227 +3042,232 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 746, 18467, -1000, -1000, 343, 505, -1000, 824, - -1000, 505, 4491, 120, 505, 285, 505, 18467, 18467, 4491, - 4491, 4491, 36, 69, 70, 18467, 482, 774, 112, 18467, - 1049, 870, 18467, 505, 505, -1000, 6003, -1000, 4491, 321, - -1000, 480, 9698, 4491, 4491, 4491, 18467, 4491, 4491, -1000, - 467, -1000, -1000, 324, -1000, -1000, -1000, -1000, -1000, -1000, - 4491, 4491, 312, 324, 312, -1000, -1000, -1000, -1000, 9698, - 226, -1000, 867, -1000, -1000, 15, -1000, -1000, -1000, -1000, - -1000, 1153, -1000, -1000, -1000, -134, -1000, -1000, 9698, 9698, - 9698, 9698, 569, 233, 10790, 335, 241, 10790, 10790, 10790, - 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, 10790, - 10790, 10790, 567, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 505, -1000, 1150, 939, 939, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 11154, 3256, 6003, 671, 737, - 1088, 8229, 8229, 9698, 9698, 8957, 8593, 8229, 1012, 284, - 496, 18467, -1000, -1000, 10426, -1000, -1000, -1000, -1000, -1000, - 512, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 18467, 18467, - 8229, 8229, 8229, 8229, 8229, -1000, 1064, 671, 1141, 1044, - 1147, 215, 745, 772, -1000, 686, 1064, 14092, 703, -1000, - 1141, -1000, -1000, -1000, 18467, -1000, -1000, 16276, -1000, -1000, - 5625, 18467, 50, 18467, -1000, 599, 895, -1000, -1000, -1000, - 1054, 13364, 13728, 18467, 792, 753, -1000, -1000, 171, 6381, - -78, -1000, 6381, 757, -1000, -106, -102, 7501, 188, -1000, - -1000, -1000, -1000, 4113, 12246, 543, 333, -46, -1000, -1000, - -1000, 790, -1000, 790, 790, 790, 790, -14, -14, -14, - -14, -1000, -1000, -1000, -1000, -1000, 833, 832, -1000, 790, - 790, 790, 790, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 831, 831, 831, 796, 796, 83, 9698, 835, -1000, 18467, - 4491, 1048, 4491, -1000, 96, -1000, -1000, -1000, 18467, 18467, - 18467, 18467, 18467, 143, -1000, 18467, 18467, 768, -1000, 18467, - 4491, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 496, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 18467, -1000, -1000, - -1000, -1000, 321, 18467, 18467, 18467, 321, 496, -1000, 18467, - 18467, -1000, -1000, -1000, -1000, -1000, 496, 233, 269, 237, - -1000, -1000, 422, -1000, -1000, 1455, -1000, -1000, -1000, -1000, - 335, 10790, 10790, 10790, 879, 1455, 1944, 2060, 1802, 193, - 527, 527, 202, 202, 202, 202, 202, 565, 565, -1000, - -1000, -1000, 512, -1000, -1000, -1000, 512, 8229, 8229, 767, - 778, 170, -1000, 839, -1000, -1000, 1064, 733, 733, 603, - 614, 280, 1120, 733, 277, 1119, 733, 733, 8229, -1000, - -1000, 298, -1000, 9698, 512, -1000, 169, -1000, 861, 763, - 762, 733, 512, 512, 733, 733, 1015, -1000, -1000, 979, - -1000, 854, 9698, 9698, 9698, -1000, -1000, -1000, 1015, 1068, - -1000, 937, 936, 1102, 8229, 15548, 1141, -1000, -1000, -1000, - 166, 1102, 795, 778, -1000, 18467, 15548, 15548, 15548, 15548, - 15548, -1000, 894, 891, -1000, 903, 881, 882, 18467, -1000, - 735, 671, 13364, 196, 778, -1000, 15912, -1000, -1000, 50, - 700, 15548, 18467, -1000, -1000, 15548, 18467, 5247, -1000, 757, - -78, -82, -1000, -1000, -1000, -1000, 496, -1000, 594, 754, - 3735, -1000, -1000, -1000, -1000, 82, -1000, -1000, 829, 505, - -1000, 1036, 238, 242, 505, 1035, -1000, -1000, -1000, -1000, - 1025, -1000, 256, -51, -1000, -1000, 377, -14, -14, -1000, - -1000, 188, 1005, 188, 188, 188, 458, 458, -1000, -1000, - -1000, -1000, -1000, 375, -1000, -1000, -1000, 358, -1000, -1000, - 824, 510, 862, 18467, 4491, -1000, -1000, -1000, -1000, 311, - 311, 249, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 47, 697, -1000, -1000, -1000, -1000, 16, - 35, 110, -1000, 4491, -1000, 312, -1000, -1000, -1000, 312, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 879, 1455, 1819, - -1000, 10790, 10790, -1000, -1000, 733, 733, 8229, 6003, 1088, - 1015, -1000, -1000, 49, 567, 49, 10790, 10790, -1000, 10790, - 10790, -1000, -155, 604, 270, -1000, 9698, 330, -1000, 6003, - -1000, 10790, 10790, -1000, -1000, -1000, -1000, -1000, -1000, 454, - 440, 914, 496, 496, -1000, -1000, 18467, -1000, -1000, -1000, - -1000, 1100, 9698, -1000, 742, -1000, 4869, 1064, 859, 18467, - 778, 1153, 12623, 18467, 810, -1000, 271, 895, 828, 857, - 695, -1000, -1000, -1000, -1000, 871, -1000, 856, -1000, -1000, - -1000, -1000, -1000, 671, -1000, 128, 127, 122, 18467, -1000, - 1102, 15548, 800, -1000, 800, -1000, 165, -1000, -1000, -1000, - -123, -130, -1000, -1000, -1000, 4113, -1000, 4113, -1000, 18467, - 75, -1000, 505, 505, -1000, -1000, -1000, 799, 853, 10790, - -1000, -1000, -1000, 541, 188, 188, -1000, 289, -1000, -1000, - -1000, 724, -1000, 721, 717, 713, 3, 18467, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 18467, -1000, -1000, - -1000, -1000, -1000, 18467, -160, 505, 18467, 18467, 18467, 18467, - -1000, 321, 321, -1000, 10790, 1455, 1455, -1000, -1000, 512, - -1000, 1064, -1000, 512, 790, 790, -1000, 790, 796, -1000, - 790, 4, 790, 2, 512, 512, 2035, 1985, 1736, 1698, - 778, -150, -1000, 496, 9698, -1000, 1287, 361, 436, -14, - -1000, -1000, -1000, 1096, 1082, 496, -1000, -1000, -1000, 1041, - 621, 587, -1000, -1000, 7865, 711, 922, 163, 696, -1000, - 1088, 18467, 9698, -1000, -1000, 9698, 794, -1000, 9698, -1000, - -1000, -1000, 1088, 778, 778, 778, 696, 1088, 800, -1000, - -1000, 167, -1000, -1000, -1000, 3735, -1000, 679, -1000, 790, - -1000, 1035, -1000, -1000, 18467, -42, 1145, 1455, -1000, -1000, - -1000, -1000, -1000, -14, 435, -14, 349, -1000, 347, -1000, - -1000, -228, 4491, -1000, -1000, -1000, -1000, 1043, -1000, 6003, - -1000, -1000, 787, 793, -1000, -1000, -1000, -1000, 1455, -1000, - 1015, -1000, -1000, 124, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 10790, 10790, 10790, 10790, 10790, 1064, 429, 496, - 10790, 10790, -14, -81, -1000, 9698, 9698, 1032, -1000, 778, - -1000, 846, 18467, 778, 18467, -1000, 18467, 1064, -1000, 496, - 496, 18467, 496, 15184, 18467, 18467, 12987, 1064, -1000, 157, - 18467, -1000, 631, -1000, 217, -1000, -162, 188, -1000, 188, - 521, 519, -1000, -1000, 778, 709, -1000, 255, 18467, 18467, - -1000, -1000, -1000, 861, 861, 861, 861, 32, 512, -1000, - 861, 861, -282, -1000, 988, 983, 496, 625, 1144, -1000, - 778, 1153, 147, 587, -1000, -1000, -1000, 629, 560, -1000, - 560, 560, 196, -1000, 157, -1000, 505, 245, 427, -1000, - 62, 18467, 315, 1030, -1000, 1027, -1000, -1000, -1000, -1000, - -1000, 46, 6003, 4113, 558, -1000, -1000, -1000, -1000, -1000, - 512, 68, -165, -1000, -1000, -1000, -81, 152, -1000, 957, - 955, 1076, 18467, 587, 18467, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 331, -1000, -1000, 18467, -1000, -1000, 409, -1000, - -1000, 548, -1000, 18467, -1000, -1000, 697, -1000, 913, -161, - -168, 962, 965, 965, 983, 1074, 971, 969, -1000, 392, - 428, -1000, -1000, 786, -1000, -1000, 46, 921, -160, -1000, - 911, -1000, 960, 345, -1000, -1000, -1000, -1000, 391, -1000, - 1072, 1067, -1000, 18467, -1000, 43, -1000, -163, -1000, 340, - -1000, -1000, -1000, 389, 382, 537, 41, -166, -1000, -1000, - -1000, -1000, 852, 778, -191, 842, -1000, 1117, 10062, -1000, - -1000, 1142, 195, 195, 861, 512, -1000, -1000, -1000, 74, - 371, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 718, 19807, -1000, -1000, 328, 611, -1000, 810, -1000, + 711, -1000, 799, 5579, 144, 611, 350, 611, 19807, 611, + 19807, 5579, 5579, 5579, 57, 96, 78, 19807, 569, 769, + 138, 19807, 1050, 880, 19807, 611, 611, -1000, 6734, -1000, + 5579, 392, -1000, 561, 10870, 5579, 5579, 5579, 19807, 5579, + 5579, -1000, 548, -1000, -1000, 381, -1000, -1000, -1000, -1000, + -1000, -1000, 5579, 5579, 378, 381, 378, -1000, -1000, -1000, + -1000, 10870, 291, -1000, 877, -1000, -1000, 23, -1000, -1000, + -1000, -1000, -1000, 1139, -1000, -1000, -1000, -135, -1000, -1000, + 10870, 10870, 10870, 10870, 407, 293, 11983, 409, 372, 11983, + 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, + 11983, 11983, 11983, 11983, 626, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 611, -1000, 1137, 770, 770, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 12354, 8260, 6734, + 707, 697, 1085, 9373, 9373, 10870, 10870, 10115, 9744, 9373, + 1014, 338, 558, 19807, -1000, -1000, 11612, -1000, -1000, -1000, + -1000, -1000, 588, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 19807, 19807, 9373, 9373, 9373, 9373, 9373, -1000, 1059, 707, + 1096, 1037, 1132, 278, 571, 768, -1000, 396, 1059, 15348, + 808, -1000, 1096, -1000, -1000, -1000, 19807, -1000, -1000, 17574, + -1000, -1000, 6349, 19807, 77, 19807, -1000, 790, 948, -1000, + -1000, -1000, 1053, 14606, 14977, 19807, 710, 704, -1000, -1000, + 213, 7119, -117, -1000, 7119, 762, -1000, -122, -93, 8631, + 247, -1000, -1000, -1000, -1000, 4809, 13467, 706, 375, -66, + -1000, -1000, -1000, 799, -1000, 799, 799, 799, 799, -11, + -11, -11, -11, -1000, -1000, -1000, -1000, -1000, 820, 814, + -1000, 799, 799, 799, 799, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 813, 813, 813, 800, 800, 106, 10870, 53, + 19807, 1042, 464, -1000, 19807, 5579, 1046, 5579, -1000, 856, + 142, -1000, -1000, -1000, 19807, 19807, 19807, 19807, 19807, 177, + -1000, 19807, 19807, 767, -1000, 19807, 5579, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 558, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 19807, -1000, -1000, -1000, -1000, 392, 19807, + 19807, 19807, 392, 558, -1000, 19807, 19807, -1000, -1000, -1000, + -1000, -1000, 558, 293, 501, 298, -1000, -1000, 477, -1000, + -1000, 1644, -1000, -1000, -1000, -1000, 409, 11983, 11983, 11983, + 455, 1644, 2232, 1051, 1403, 249, 514, 514, 240, 240, + 240, 240, 240, 307, 307, -1000, -1000, -1000, 588, -1000, + -1000, -1000, 588, 9373, 9373, 766, 757, 211, -1000, 845, + -1000, -1000, 1059, 689, 689, 582, 597, 329, 1108, 689, + 317, 1097, 689, 689, 9373, -1000, -1000, 337, -1000, 10870, + 588, -1000, 207, -1000, 609, 765, 763, 689, 588, 588, + 689, 689, 1019, -1000, -1000, 988, -1000, 938, 10870, 10870, + 10870, -1000, -1000, -1000, 1019, 1074, -1000, 954, 953, 1094, + 9373, 16832, 1096, -1000, -1000, -1000, 202, 1094, 750, 757, + -1000, 19807, 16832, 16832, 16832, 16832, 16832, -1000, 929, 928, + -1000, 914, 913, 922, 19807, -1000, 692, 707, 14606, 205, + 757, -1000, 17203, -1000, -1000, 77, 744, 16832, 19807, -1000, + -1000, 16832, 19807, 5964, -1000, 762, -117, -45, -1000, -1000, + -1000, -1000, 558, -1000, 634, 760, 4424, -1000, -1000, -1000, + -1000, 101, -1000, -1000, 812, 611, -1000, 1033, 268, 263, + 611, 1031, -1000, -1000, -1000, -1000, 1018, -1000, 358, -79, + -1000, -1000, -11, -11, -1000, -1000, 247, 1013, 247, 247, + 247, 546, 546, -1000, -1000, -1000, -1000, -1000, 427, -1000, + -1000, -1000, 421, -1000, -1000, 810, 567, 886, 53, -1000, + 611, 302, 545, 998, -1000, -1000, 702, 5579, -1000, -1000, + -1000, 876, 19807, -1000, 324, 324, 315, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 76, 846, + -1000, -1000, -1000, -1000, 13, 55, 137, -1000, 5579, -1000, + 378, -1000, -1000, -1000, 378, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 455, 1644, 1970, -1000, 11983, 11983, -1000, -1000, + 689, 689, 9373, 6734, 1085, 1019, -1000, -1000, 143, 626, + 143, 11983, 11983, -1000, 11983, 11983, -1000, -163, 743, 316, + -1000, 10870, 499, -1000, 6734, -1000, 11983, 11983, -1000, -1000, + -1000, -1000, -1000, -1000, 577, 543, 936, 558, 558, -1000, + -1000, 19807, -1000, -1000, -1000, -1000, 1077, 10870, -1000, 759, + -1000, 5194, 1059, 874, 19807, 757, 1139, 13851, 19807, 803, + -1000, 304, 948, 854, 869, 1163, -1000, -1000, -1000, -1000, + 923, -1000, 895, -1000, -1000, -1000, -1000, -1000, 707, -1000, + 159, 151, 146, 19807, -1000, 1094, 16832, 716, -1000, 716, + -1000, 197, -1000, -1000, -1000, -133, -129, -1000, -1000, -1000, + 4809, -1000, 4809, -1000, 19807, 98, -1000, 611, 611, -1000, + -1000, -1000, 807, 866, 11983, -1000, -1000, -1000, 247, 247, + -1000, 311, -1000, -1000, -1000, 687, -1000, 685, 755, 673, + 12, -1000, 841, 1011, 302, 302, -1000, -1000, 395, -1000, + -1000, 534, -1000, -1000, 19807, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 19807, -1000, -1000, -1000, -1000, -1000, 19807, + -174, 611, 19807, 19807, 19807, 19807, -1000, 392, 392, -1000, + 11983, 1644, 1644, -1000, -1000, 588, -1000, 1059, -1000, 588, + 799, 799, -1000, 799, 800, -1000, 799, 8, 799, 5, + 588, 588, 2184, 2159, 2114, 1868, 757, -157, -1000, 558, + 10870, -1000, 1830, 1667, 528, -11, -1000, -1000, -1000, 1089, + 1081, 558, -1000, -1000, -1000, 1017, 729, 721, -1000, -1000, + 9002, 671, 950, 190, 668, -1000, 1085, 19807, 10870, -1000, + -1000, 10870, 798, -1000, 10870, -1000, -1000, -1000, 1085, 757, + 757, 757, 668, 1085, 716, -1000, -1000, 261, -1000, -1000, + -1000, 4424, -1000, 666, -1000, 1031, -1000, -1000, 19807, -61, + 1128, 1644, -1000, -1000, -1000, -1000, -11, 518, -11, 387, + -1000, 380, -1000, -1000, -221, -1000, -1000, 756, 903, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1036, -1000, 6734, -1000, + -1000, 796, 855, -1000, -1000, -1000, -1000, 1644, -1000, 1019, + -1000, -1000, 173, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 11983, 11983, 11983, 11983, 11983, 1059, 511, 558, 11983, + 11983, -11, -59, -1000, 10870, 10870, 1030, -1000, 757, -1000, + 758, 19807, 757, 19807, -1000, 19807, 1059, -1000, 558, 558, + 19807, 558, 16461, 19807, 19807, 14222, 1059, -1000, 53, 662, + -1000, 259, -1000, -76, 247, -1000, 247, 596, 592, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 757, 751, -1000, + 301, 19807, 19807, -1000, -1000, -1000, 609, 609, 609, 609, + 65, 588, -1000, 609, 609, -278, -1000, 990, 986, 558, + 742, 1127, -1000, 757, 1139, 181, 721, -1000, -1000, -1000, + 643, 622, -1000, 622, 622, 205, -1000, -1000, 89, 19807, + 365, 1029, -1000, 1020, -1000, -1000, -1000, -1000, -1000, 67, + 6734, 4809, 620, -1000, -1000, -1000, -1000, -1000, 588, 68, + -178, -1000, -1000, -1000, -59, 155, -1000, 967, 956, 1076, + 19807, 721, 19807, -1000, -1000, -1000, -1000, -1000, 19807, -1000, + -1000, 508, -1000, -1000, 606, -1000, 19807, -1000, -1000, 846, + -1000, 935, -172, -184, 970, 975, 975, 986, 1075, 984, + 982, -1000, 507, 714, -1000, 788, -1000, -1000, 67, 949, + -174, -1000, 881, -1000, 951, 440, -1000, -1000, -1000, -1000, + 505, -1000, 1073, 1064, -1000, 19807, -1000, 66, -1000, -175, + -1000, 408, -1000, -1000, -1000, 502, 467, 599, 61, -181, + -1000, -1000, -1000, -1000, 863, 757, -186, 862, -1000, 1106, + 11241, -1000, -1000, 1118, 232, 232, 609, 588, -1000, -1000, + -1000, 100, 566, -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1431, 1430, 25, 72, 71, 1429, 1426, 1425, 1424, - 110, 109, 100, 1423, 1421, 1420, 1418, 1417, 1415, 1414, - 1399, 1397, 1396, 1395, 1394, 1393, 1390, 1389, 1388, 1386, - 1385, 1384, 1383, 1382, 87, 1381, 1379, 1376, 1375, 83, - 1374, 1373, 1371, 1369, 1368, 39, 107, 53, 67, 1367, - 73, 1282, 1360, 57, 66, 69, 1357, 50, 1356, 1354, - 91, 1353, 1352, 61, 1345, 1343, 2348, 1341, 58, 1340, - 12, 42, 1339, 1337, 1336, 1333, 84, 1653, 1332, 1331, - 18, 1330, 1328, 97, 1327, 74, 35, 14, 34, 13, - 1326, 76, 1316, 16, 1314, 68, 1312, 1309, 1307, 1304, - 30, 1302, 70, 1291, 65, 1289, 6, 11, 1285, 1284, - 1283, 1281, 1280, 1274, 4, 1273, 1268, 1267, 24, 1266, - 8, 64, 41, 21, 9, 1265, 1264, 22, 78, 59, - 75, 1259, 1258, 1257, 445, 1255, 1254, 55, 1252, 103, - 1251, 48, 93, 104, 517, 1250, 1248, 1246, 1245, 1242, - 1239, 37, 849, 1456, 230, 79, 1238, 1236, 1235, 1694, - 43, 63, 19, 1233, 1232, 1231, 33, 38, 45, 442, - 1230, 27, 1229, 1228, 1226, 1224, 1222, 1219, 1218, 436, - 1214, 1213, 1212, 162, 29, 77, 23, 1211, 1210, 1209, - 1207, 51, 80, 1197, 1194, 62, 56, 1193, 101, 31, - 1188, 1187, 1184, 1183, 1181, 36, 17, 1180, 20, 1178, - 15, 1176, 32, 28, 1175, 5, 1174, 10, 1171, 2, - 0, 1167, 7, 49, 3, 1166, 1, 1165, 1162, 1161, - 325, 134, 81, 1160, 90, + 0, 1422, 1421, 50, 82, 71, 1420, 1419, 1418, 1417, + 114, 111, 110, 1416, 1414, 1411, 1410, 1409, 1408, 1407, + 1406, 1405, 1404, 1401, 1400, 1399, 1398, 1397, 1395, 1393, + 1392, 1391, 1390, 1389, 1388, 97, 1387, 1381, 1378, 1377, + 98, 1373, 1371, 1370, 1369, 1364, 56, 216, 54, 73, + 1363, 69, 666, 1362, 43, 70, 79, 1361, 40, 1360, + 1359, 108, 1357, 1356, 67, 1354, 1344, 68, 1343, 65, + 1341, 12, 39, 1338, 1336, 1334, 1333, 96, 1810, 1330, + 1326, 26, 1325, 1324, 112, 1323, 74, 14, 15, 32, + 23, 1322, 84, 1317, 19, 1314, 72, 1312, 1310, 1306, + 1305, 27, 1304, 77, 90, 103, 1303, 7, 9, 1302, + 1300, 1299, 1296, 1295, 1293, 4, 1292, 1290, 1289, 17, + 1286, 25, 64, 37, 20, 10, 1285, 1283, 18, 101, + 63, 91, 1276, 1273, 1271, 726, 1266, 1264, 49, 1263, + 117, 1261, 76, 102, 119, 531, 1260, 1258, 1257, 1254, + 1253, 46, 822, 1806, 16, 93, 1250, 1249, 1248, 1247, + 2763, 52, 66, 33, 1246, 1245, 1243, 21, 384, 35, + 692, 1241, 44, 1239, 1238, 1237, 1234, 1223, 1222, 1219, + 106, 1218, 1217, 1216, 80, 38, 94, 24, 1215, 1212, + 1207, 1206, 60, 85, 1205, 1202, 62, 61, 1199, 95, + 34, 30, 1198, 1197, 1196, 1195, 31, 8, 1194, 92, + 36, 59, 28, 22, 1192, 13, 1191, 29, 42, 1190, + 6, 1188, 11, 1166, 3, 0, 1162, 5, 58, 1, + 1160, 2, 1154, 1153, 1149, 1412, 576, 107, 1146, 104, } var yyR1 = [...]int{ - 0, 228, 229, 229, 1, 1, 1, 1, 1, 1, + 0, 233, 234, 234, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 220, 220, 220, 21, 33, 3, 3, 3, 3, - 2, 2, 8, 9, 4, 5, 5, 10, 10, 38, - 38, 11, 12, 12, 12, 12, 232, 232, 60, 60, - 61, 61, 121, 121, 13, 14, 14, 130, 130, 129, - 129, 129, 131, 131, 131, 131, 169, 169, 15, 15, - 15, 15, 15, 15, 15, 222, 222, 221, 219, 219, - 218, 218, 217, 22, 201, 203, 203, 202, 202, 202, - 202, 202, 202, 192, 172, 172, 172, 172, 175, 175, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 174, - 174, 174, 174, 174, 176, 176, 176, 176, 176, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 178, 178, 178, 178, 178, 178, - 178, 178, 191, 191, 179, 179, 185, 185, 186, 186, - 186, 188, 188, 189, 189, 145, 145, 145, 181, 181, - 182, 182, 187, 187, 183, 183, 183, 184, 184, 184, - 190, 190, 190, 190, 190, 180, 180, 193, 193, 211, - 211, 210, 210, 210, 200, 200, 207, 207, 207, 207, - 207, 197, 197, 197, 198, 198, 196, 196, 199, 199, - 209, 209, 208, 194, 194, 195, 195, 212, 212, 212, - 212, 212, 213, 225, 226, 224, 224, 224, 224, 224, - 146, 146, 146, 204, 204, 204, 205, 205, 205, 206, - 206, 206, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 223, - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 216, 214, 214, 215, 215, 17, 23, - 23, 18, 18, 18, 18, 18, 19, 19, 24, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 138, - 138, 227, 227, 140, 140, 136, 136, 139, 139, 137, - 137, 137, 141, 141, 141, 142, 142, 170, 170, 170, - 26, 26, 28, 28, 29, 30, 30, 164, 164, 165, - 165, 31, 32, 37, 37, 37, 37, 37, 37, 40, - 40, 40, 7, 7, 7, 7, 36, 36, 36, 6, - 6, 27, 27, 27, 27, 20, 233, 34, 35, 35, - 39, 39, 39, 41, 41, 41, 44, 44, 44, 47, - 47, 49, 49, 49, 49, 49, 50, 50, 50, 50, - 50, 50, 46, 46, 48, 48, 48, 48, 156, 156, - 156, 155, 155, 52, 52, 53, 53, 54, 54, 55, - 55, 55, 92, 69, 69, 120, 120, 122, 122, 56, - 56, 56, 56, 57, 57, 58, 58, 59, 59, 163, - 163, 162, 162, 162, 161, 161, 62, 62, 62, 64, - 63, 63, 63, 63, 65, 65, 67, 67, 66, 66, - 68, 70, 70, 70, 70, 70, 71, 71, 51, 51, - 51, 51, 51, 51, 51, 51, 133, 133, 73, 73, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 84, 84, 84, 84, 84, 84, 74, 74, 74, 74, - 74, 74, 74, 45, 45, 85, 85, 85, 91, 86, - 86, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 81, 81, 81, 81, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 234, 234, - 83, 82, 82, 82, 82, 82, 82, 82, 43, 43, - 43, 43, 43, 168, 168, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 171, 171, 171, 96, 96, - 42, 42, 94, 94, 95, 97, 97, 93, 93, 93, - 76, 76, 76, 76, 76, 76, 76, 76, 78, 78, - 78, 98, 98, 99, 99, 100, 100, 101, 101, 102, - 103, 103, 103, 104, 104, 104, 104, 118, 118, 118, - 105, 105, 105, 105, 110, 110, 110, 106, 106, 108, - 108, 108, 109, 109, 109, 107, 113, 113, 115, 115, - 114, 114, 112, 112, 117, 117, 116, 116, 111, 111, - 75, 75, 75, 75, 75, 119, 119, 119, 119, 123, - 123, 87, 87, 89, 89, 88, 90, 124, 124, 127, - 125, 125, 128, 128, 128, 128, 128, 126, 126, 126, - 158, 158, 158, 132, 132, 143, 143, 144, 144, 134, - 134, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 135, 135, 135, 148, 148, 148, 149, 149, 150, - 150, 150, 157, 157, 153, 153, 154, 154, 159, 159, - 160, 160, 151, 151, 151, 151, 151, 151, 151, 151, + 1, 225, 225, 225, 21, 34, 3, 3, 3, 3, + 2, 2, 8, 9, 4, 5, 5, 10, 10, 39, + 39, 11, 12, 12, 12, 12, 237, 237, 61, 61, + 62, 62, 122, 122, 13, 14, 14, 131, 131, 130, + 130, 130, 132, 132, 132, 132, 170, 170, 15, 15, + 15, 15, 15, 15, 15, 227, 227, 226, 224, 224, + 223, 223, 222, 22, 24, 202, 204, 204, 203, 203, + 203, 203, 203, 203, 193, 173, 173, 173, 173, 176, + 176, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 175, 175, 175, 175, 175, 177, 177, 177, 177, 177, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 179, 179, 179, 179, 179, + 179, 179, 179, 192, 192, 180, 180, 186, 186, 187, + 187, 187, 189, 189, 190, 190, 146, 146, 146, 182, + 182, 183, 183, 188, 188, 184, 184, 184, 185, 185, + 185, 191, 191, 191, 191, 191, 181, 181, 194, 215, + 215, 214, 214, 211, 211, 211, 211, 201, 201, 208, + 208, 208, 208, 208, 198, 198, 198, 199, 199, 197, + 197, 200, 200, 210, 210, 209, 195, 195, 196, 196, + 217, 217, 217, 217, 217, 218, 230, 231, 229, 229, + 229, 229, 229, 147, 147, 147, 205, 205, 205, 206, + 206, 206, 207, 207, 207, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 221, 219, 219, 220, + 220, 17, 23, 23, 18, 18, 18, 18, 18, 19, + 19, 25, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 139, 139, 232, 232, 141, 141, 137, 137, + 140, 140, 138, 138, 138, 142, 142, 142, 143, 143, + 171, 171, 171, 27, 27, 29, 29, 30, 31, 31, + 165, 165, 166, 166, 32, 33, 38, 38, 38, 38, + 38, 38, 41, 41, 41, 7, 7, 7, 7, 37, + 37, 37, 6, 6, 28, 28, 28, 28, 20, 238, + 35, 36, 36, 40, 40, 40, 42, 42, 42, 45, + 45, 45, 48, 48, 50, 50, 50, 50, 50, 51, + 51, 51, 51, 51, 51, 47, 47, 49, 49, 49, + 49, 156, 156, 156, 155, 155, 53, 53, 54, 54, + 55, 55, 56, 56, 56, 93, 70, 70, 121, 121, + 123, 123, 57, 57, 57, 57, 58, 58, 59, 59, + 60, 60, 164, 164, 163, 163, 163, 162, 162, 63, + 63, 63, 65, 64, 64, 64, 64, 66, 66, 68, + 68, 67, 67, 69, 71, 71, 71, 71, 71, 72, + 72, 52, 52, 52, 52, 52, 52, 52, 52, 134, + 134, 74, 74, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 85, 85, 85, 85, 85, 85, 75, + 75, 75, 75, 75, 75, 75, 46, 46, 86, 86, + 86, 92, 87, 87, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 78, 78, 78, 78, 82, 82, + 82, 82, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 239, 239, 84, 83, 83, 83, 83, 83, 83, + 83, 44, 44, 44, 44, 44, 169, 169, 172, 172, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 97, 97, 43, 43, 95, 95, 96, 98, 98, + 94, 94, 94, 77, 77, 77, 77, 77, 77, 77, + 77, 79, 79, 79, 99, 99, 100, 100, 101, 101, + 102, 102, 103, 104, 104, 104, 105, 105, 105, 105, + 216, 216, 216, 216, 216, 212, 212, 212, 212, 213, + 213, 213, 119, 119, 119, 106, 106, 106, 106, 111, + 111, 111, 107, 107, 109, 109, 109, 110, 110, 110, + 108, 114, 114, 116, 116, 115, 115, 113, 113, 118, + 118, 117, 117, 112, 112, 76, 76, 76, 76, 76, + 120, 120, 120, 120, 124, 124, 88, 88, 90, 90, + 89, 91, 125, 125, 128, 126, 126, 129, 129, 129, + 129, 129, 127, 127, 127, 159, 159, 159, 133, 133, + 144, 144, 145, 145, 135, 135, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 136, 136, 136, 149, + 149, 149, 150, 150, 158, 158, 158, 157, 157, 153, + 153, 154, 154, 160, 160, 161, 161, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, @@ -3153,7 +3279,7 @@ var yyR1 = [...]int{ 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, + 151, 151, 151, 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, @@ -3172,8 +3298,9 @@ var yyR1 = [...]int{ 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 230, 231, 166, 167, 167, - 167, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 235, 236, 167, + 168, 168, 168, } var yyR2 = [...]int{ @@ -3185,73 +3312,75 @@ var yyR2 = [...]int{ 1, 9, 9, 8, 7, 7, 1, 1, 1, 3, 1, 3, 0, 4, 3, 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, - 8, 4, 6, 5, 5, 0, 2, 1, 0, 2, - 1, 3, 3, 4, 4, 2, 4, 1, 1, 3, - 4, 3, 3, 8, 3, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 1, 2, 2, 2, 2, 4, - 4, 2, 2, 3, 3, 3, 3, 1, 1, 1, - 1, 1, 6, 6, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 0, 3, 0, 5, 0, 3, - 5, 0, 1, 0, 1, 0, 1, 2, 0, 2, - 0, 3, 0, 1, 0, 3, 3, 0, 2, 2, - 0, 2, 1, 2, 1, 0, 2, 5, 4, 1, - 2, 2, 3, 2, 0, 1, 2, 3, 3, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 1, 3, 2, 3, 1, 3, 1, 10, 11, 11, - 12, 1, 5, 3, 3, 1, 1, 2, 2, 2, - 0, 1, 2, 0, 1, 3, 1, 2, 3, 1, - 1, 1, 6, 7, 7, 7, 7, 4, 5, 4, - 4, 7, 5, 5, 5, 12, 7, 5, 9, 1, + 6, 4, 6, 5, 5, 0, 2, 1, 0, 2, + 1, 3, 3, 4, 7, 4, 2, 4, 1, 1, + 3, 4, 3, 3, 8, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 7, 1, 3, 8, 8, 3, 3, - 5, 4, 6, 5, 4, 4, 3, 2, 3, 4, - 4, 3, 4, 4, 4, 4, 4, 4, 3, 3, - 3, 2, 7, 2, 3, 4, 5, 7, 5, 4, - 2, 4, 4, 3, 3, 5, 2, 3, 3, 1, - 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, - 2, 2, 0, 2, 2, 0, 2, 0, 1, 1, - 2, 1, 1, 2, 1, 1, 5, 0, 1, 0, - 1, 2, 3, 0, 3, 3, 3, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, - 3, 2, 2, 3, 3, 2, 0, 2, 0, 2, - 1, 2, 2, 0, 1, 1, 0, 1, 1, 0, - 1, 0, 1, 2, 3, 4, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 2, 3, 5, 0, 1, - 2, 1, 1, 0, 2, 1, 3, 1, 1, 1, - 3, 3, 3, 3, 7, 1, 3, 1, 3, 4, - 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, - 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, - 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, - 3, 0, 5, 4, 5, 5, 0, 2, 1, 3, - 3, 3, 2, 3, 1, 2, 0, 3, 1, 1, - 3, 3, 4, 4, 5, 3, 4, 5, 6, 2, - 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 0, 2, 1, 1, 1, 3, 1, - 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, + 4, 4, 2, 2, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 6, 6, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 0, 3, 0, 5, 0, + 3, 5, 0, 1, 0, 1, 0, 1, 2, 0, + 2, 0, 3, 0, 1, 0, 3, 3, 0, 2, + 2, 0, 2, 1, 2, 1, 0, 2, 5, 0, + 1, 1, 2, 2, 3, 2, 3, 0, 1, 2, + 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 3, 3, 3, 1, 3, 1, + 10, 11, 11, 12, 1, 5, 3, 3, 1, 1, + 2, 2, 2, 0, 1, 2, 0, 1, 3, 1, + 2, 3, 1, 1, 1, 6, 7, 7, 7, 7, + 4, 5, 4, 4, 7, 5, 5, 5, 12, 7, + 5, 9, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 7, 1, 3, 8, + 8, 3, 3, 5, 4, 6, 5, 4, 4, 3, + 2, 3, 4, 4, 3, 4, 4, 4, 4, 4, + 4, 3, 3, 3, 2, 7, 2, 3, 4, 5, + 7, 5, 4, 2, 4, 4, 3, 3, 5, 2, + 3, 3, 1, 1, 1, 1, 0, 1, 0, 1, + 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, + 0, 1, 1, 2, 1, 1, 2, 1, 1, 5, + 0, 1, 0, 1, 2, 3, 0, 3, 3, 3, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 3, 3, 2, 2, 3, 3, 2, 0, + 2, 0, 2, 1, 2, 2, 0, 1, 1, 0, + 1, 1, 0, 1, 0, 1, 2, 3, 4, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 2, 3, + 5, 0, 1, 2, 1, 1, 0, 2, 1, 3, + 1, 1, 1, 3, 3, 3, 3, 7, 1, 3, + 1, 3, 4, 4, 4, 3, 2, 4, 0, 1, + 0, 2, 0, 1, 0, 1, 2, 1, 1, 1, + 2, 2, 1, 2, 3, 2, 3, 2, 2, 2, + 1, 1, 3, 3, 0, 5, 4, 5, 5, 0, + 2, 1, 3, 3, 3, 2, 3, 1, 2, 0, + 3, 1, 1, 3, 3, 4, 4, 5, 3, 4, + 5, 6, 2, 1, 2, 1, 2, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, + 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 1, 1, 1, 1, 4, 5, 5, 6, 4, - 4, 6, 6, 6, 8, 8, 8, 8, 9, 8, - 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 8, 8, 0, 2, - 3, 4, 4, 4, 4, 4, 4, 4, 0, 3, - 4, 7, 3, 1, 1, 2, 3, 3, 1, 2, - 2, 1, 2, 1, 2, 2, 1, 2, 0, 1, - 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 0, 3, 0, 2, 0, 3, 1, 3, 2, - 0, 1, 1, 0, 2, 4, 4, 0, 2, 4, - 0, 9, 3, 5, 0, 3, 3, 0, 1, 0, - 2, 2, 0, 2, 2, 2, 0, 3, 0, 3, - 0, 3, 0, 4, 0, 3, 0, 4, 0, 1, - 2, 1, 5, 4, 4, 1, 3, 3, 5, 0, - 5, 1, 3, 1, 2, 3, 1, 1, 3, 3, - 1, 3, 3, 3, 3, 3, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, + 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 1, 1, 1, 1, 4, 5, + 5, 6, 4, 4, 6, 6, 6, 8, 8, 8, + 8, 9, 8, 5, 4, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, + 8, 0, 2, 3, 4, 4, 4, 4, 4, 4, + 4, 0, 3, 4, 7, 3, 1, 1, 2, 3, + 3, 1, 2, 2, 1, 2, 1, 2, 2, 1, + 2, 0, 1, 0, 2, 1, 2, 4, 0, 2, + 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 0, 3, 0, 2, 0, 3, + 1, 3, 2, 0, 1, 1, 0, 2, 4, 4, + 0, 2, 2, 1, 1, 3, 3, 3, 3, 3, + 3, 3, 0, 2, 4, 0, 9, 3, 5, 0, + 3, 3, 0, 1, 0, 2, 2, 0, 2, 2, + 2, 0, 3, 0, 3, 0, 3, 0, 4, 0, + 3, 0, 4, 0, 1, 2, 1, 5, 4, 4, + 1, 3, 3, 5, 0, 5, 1, 3, 1, 2, + 3, 1, 1, 3, 3, 1, 3, 3, 3, 3, + 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, + 0, 2, 0, 3, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 2, 3, 0, + 1, 1, 1, 1, 0, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 2, 3, 0, 1, 1, 1, 1, 0, - 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -3283,376 +3412,382 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, - 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 0, 1, 1, } var yyChk = [...]int{ - -1000, -228, -1, -3, -8, -9, -10, -11, -12, -13, - -14, -15, -16, -17, -18, -19, -24, -25, -26, -28, - -29, -30, -31, -32, -6, -27, -20, -21, -33, -4, - -230, 6, 7, 8, -38, 10, 11, 31, -22, 139, - 140, 142, 141, 175, 143, 168, 69, 189, 190, 192, - 193, 194, 195, -40, 173, 174, 32, 33, 145, 35, - 40, 73, 9, 282, 170, 169, 26, -229, 384, -39, - 5, -100, 16, -3, -34, -233, -34, -34, -34, -34, - -34, -34, -201, -203, 73, 112, -150, 149, 93, 274, - 146, 147, 153, -153, -220, -152, 76, 77, 78, 292, - 161, 324, 325, 189, 203, 197, 224, 216, 293, 326, - 162, 214, 217, 261, 159, 327, 244, 251, 87, 192, - 270, 328, 46, 39, 171, 212, 208, 329, 301, 206, - 45, 28, 44, 330, 253, 229, 43, 331, 297, 255, - 207, 252, 145, 332, 164, 380, 157, 333, 230, 234, - 334, 262, 47, 335, 336, 337, 201, 202, 338, 160, - 264, 228, 158, 34, 256, 294, 53, 179, 265, 41, - 232, 40, 339, 227, 223, 48, 340, 341, 342, 343, - 226, 200, 222, 57, 236, 235, 237, 260, 219, 344, - 345, 346, 165, 347, 209, 19, 348, 349, 350, 51, - 351, 352, 268, 174, 353, 49, 177, 354, 355, 356, - 357, 358, 359, 254, 231, 233, 154, 181, 250, 296, - 360, 266, 205, 361, 166, 178, 173, 269, 167, 362, - 363, 364, 365, 366, 367, 368, 193, 38, 369, 370, - 371, 372, 188, 263, 272, 56, 241, 373, 199, 156, - 374, 190, 50, 185, 246, 42, 220, 180, 375, 376, - 210, 211, 225, 198, 221, 191, 381, 182, 175, 377, - 271, 242, 298, 218, 215, 186, 378, 183, 184, 379, - 382, 257, 247, 258, 259, 248, 187, 295, 267, 213, - 243, -135, 149, 274, 146, 248, 295, 147, 147, 148, - 149, 274, 146, 147, -66, -159, -220, -152, 149, 147, - 130, 217, 261, 139, 245, 256, 257, 253, -140, 254, - 181, -170, 147, -136, 244, 247, 248, 187, -227, -220, - 255, 263, 262, 249, 259, 258, -159, 191, -164, 196, - -153, 194, -66, -37, 380, 143, -166, -166, 246, 246, - -166, -86, -51, -72, 96, -77, 30, 24, -76, -73, - -93, -90, -91, 130, 131, 133, 132, 134, 119, 120, - 127, 97, 135, -81, -79, -80, -82, 80, 79, 88, - 81, 82, 83, 84, 89, 90, 91, -153, -159, -88, - -230, 63, 64, 283, 284, 285, 286, 291, 287, 99, - 52, 273, 281, 280, 279, 277, 278, 275, 276, 289, - 290, 152, 274, 146, 125, 282, -220, -152, 39, -5, - -4, -230, 6, 21, 22, -104, 18, 17, -231, 75, - -41, -49, 58, 59, -50, 22, 36, 62, 60, -35, - -48, 121, -51, -159, -48, -134, 151, -134, -134, -125, - -169, 191, -128, 263, 262, -154, -126, -153, -151, 261, - 217, 260, 144, 299, 95, 23, 25, 239, 98, 130, - 17, 99, 129, 283, 139, 67, 300, 275, 276, 273, - 285, 286, 274, 245, 30, 11, 302, 26, 169, 22, - 36, 123, 141, 102, 103, 172, 24, 170, 91, 305, - 20, 70, 12, 14, 306, 307, 15, 152, 151, 114, - 148, 65, 9, 135, 27, 111, 61, 308, 29, 309, - 310, 311, 312, 63, 112, 18, 277, 278, 32, 313, - 291, 176, 125, 68, 54, 96, 314, 315, 89, 316, - 92, 71, 93, 16, 66, 37, 317, 318, 319, 320, - 113, 142, 282, 64, 321, 146, 6, 288, 31, 168, - 62, 322, 147, 101, 289, 290, 150, 90, 5, 153, - 33, 10, 69, 72, 279, 280, 281, 52, 100, 13, - 323, 94, -202, 112, -192, -195, -153, 163, -213, 159, - -66, 148, -66, 282, -144, 152, -144, -144, 147, -66, - -220, -220, 139, 141, 144, 71, 80, -23, -66, -143, - 152, -220, -143, -143, -143, -66, 136, -66, -220, 31, - -141, 112, 13, 274, -220, 181, 147, 182, 149, -142, - 112, -142, -142, -197, 148, 34, 160, -167, -230, -154, - 185, 186, 185, -139, -138, 251, 252, 246, 250, 13, - 186, 246, 184, -141, -167, 150, -153, -36, -153, 80, - -7, -3, -11, -10, -12, 104, -166, -166, 74, 95, - 93, 94, 111, -51, -74, 114, 96, 112, 113, 98, - 116, 115, 126, 119, 120, 121, 122, 123, 124, 125, - 117, 118, 129, 104, 105, 106, 107, 108, 109, 110, - -133, -230, -91, -230, 137, 138, -77, -77, -77, -77, - -77, -77, -77, -77, -77, -77, -230, 136, -2, -86, - -4, -230, -230, -230, -230, -230, -230, -230, -230, -96, - -51, -230, -234, -83, -230, -234, -83, -234, -83, -234, - -230, -234, -83, -234, -83, -234, -234, -83, -230, -230, - -230, -230, -230, -230, -230, -166, -100, -3, -34, -118, - 20, 32, -51, -101, -102, -51, -100, 54, -46, -48, - -50, 58, 59, 86, 12, -156, -155, 23, -153, 80, - 136, 12, -67, 27, -66, -53, -54, -55, -56, -69, - -92, -230, -66, 12, -60, -61, -66, -68, -159, 74, - 191, -128, -169, -130, -129, 264, 266, 104, -158, -153, - 80, 30, 31, 75, 74, -66, -172, -175, -177, -176, - -178, -173, -174, 214, 215, 130, 218, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 31, 171, 210, - 211, 212, 213, 230, 231, 232, 233, 234, 235, 236, - 237, 197, 216, 293, 198, 199, 200, 201, 202, 203, - 205, 206, 207, 208, 209, -220, 73, -220, -167, 149, - -220, 96, -220, -66, -66, -167, -167, -167, 183, 183, - 147, 147, 188, -66, 80, 74, 150, -60, 24, 71, - -66, -220, -220, -160, -159, -151, -167, -141, 80, -51, - -167, -167, -167, -66, -167, -167, 80, -198, 12, 114, - -167, -167, -137, 12, 114, -198, -137, -51, -142, 71, - -165, 194, 228, 381, 382, 383, -51, -51, -51, -51, - -84, 89, 96, 90, 91, -77, -85, -88, -91, 85, - 114, 112, 113, 98, -77, -77, -77, -77, -77, -77, - -77, -77, -77, -77, -77, -77, -77, -77, -77, -168, - -220, 80, -220, -76, -76, -153, -47, 22, 36, -46, - -154, -160, -151, -39, -231, -231, -100, -46, -46, -51, - -51, -93, 80, -46, -93, 80, -46, -46, -44, 22, - 36, -94, -95, 100, -93, -153, -159, -231, -77, -153, - -153, -46, -47, -47, -46, -46, -104, -231, -105, 27, - 10, 114, 74, 19, 74, -103, 25, 26, -104, -78, - -153, 81, 84, -52, 74, 12, -50, -66, -155, 121, - -160, -66, -121, 177, -66, 31, 74, -62, -64, -63, - -65, 61, 65, 67, 62, 63, 64, 68, -163, 23, - -53, -3, -230, -162, 177, -161, 23, -159, 80, -66, - -60, -232, 74, 12, 72, -232, 74, 136, -128, -130, - 74, 265, 267, 268, 71, 92, -51, -184, 129, -204, - -205, -206, -154, 80, 81, -192, -193, -194, -207, 163, - -212, 154, 156, 153, -196, 164, -213, 148, 29, 75, - -145, 89, 96, -188, 242, -179, 73, -179, -179, -179, - -179, -183, 217, -183, -183, -183, 73, 73, -179, -179, - -179, -179, -185, 73, -185, -185, -186, 73, -186, -213, - 159, -51, -157, 72, -66, -167, 24, -167, -147, 144, - 141, 142, -216, 140, 239, 217, 87, 30, 16, 283, - 177, 298, -220, 178, -66, -66, -66, -66, -66, 144, - 141, -66, -66, -66, -167, -66, -141, -159, -159, -66, - -141, -66, -153, 89, 90, 91, -85, -77, -77, -77, - -45, 172, 95, -231, -231, -46, -46, -230, 136, -5, - -104, -231, -231, 74, 72, 23, 12, 12, -231, 12, - 12, -231, -231, -46, -97, -95, 102, -51, -231, 136, - -231, 74, 74, -231, -231, -231, -231, -231, -118, 37, - 45, 56, -51, -51, -102, -118, -132, 20, 12, 52, - 52, -71, 13, -48, -53, -50, 136, -71, -75, 31, - 52, -3, -230, -230, -124, -127, -93, -54, -55, -55, - -54, -55, 61, 61, 61, 66, 61, 66, 61, -63, - -159, -231, -231, -3, -70, 69, 151, 70, -230, -161, - -121, 72, -53, -66, -53, -68, -159, 121, -129, -131, - 269, 266, 272, -220, 80, 74, -206, 104, -195, 73, - -220, 29, -196, -196, -199, -220, -199, 29, -181, 30, - 89, -189, 243, 81, -183, -183, -184, 31, -184, -184, - -184, -191, 80, -191, 81, 81, 75, 71, -153, -167, - -166, -223, 159, 155, 163, 164, 157, 76, 77, 78, - 148, 29, 154, 156, 177, 153, -223, -148, -149, 150, - 23, 148, 29, 177, -222, 72, 183, 239, 183, 150, - -167, -137, -137, -45, 95, -77, -77, -231, -231, -47, - -154, -100, -118, -171, 130, 214, 171, 212, 208, 228, - 219, 241, 210, 242, -168, -171, -77, -77, -77, -77, - 292, -100, 103, -51, 101, -154, -77, -77, 38, 80, - 80, 57, -66, -98, 14, -51, 121, -104, -123, 71, - -124, -87, -89, -88, -230, -119, -231, -153, -122, -153, - -71, 74, 104, -58, -57, 71, 72, -59, 71, -57, - 61, 61, -231, 148, 148, 148, -122, -71, -53, -71, - -71, 136, 266, 270, 271, -205, -206, -209, -208, -153, - -212, 164, -199, -199, 73, -182, 71, -77, 75, -184, - -184, -220, 130, 75, 74, 75, 74, 75, 74, -146, - 330, 96, -66, -166, -166, -66, -166, -153, -219, 295, - -221, -220, -153, -153, -153, -66, -141, -141, -77, -231, - -104, -231, -179, -179, -179, -186, -179, 202, -179, 202, - -231, -231, 20, 20, 20, 20, -230, -42, 288, -51, - 74, 74, 80, -183, -99, 15, 17, 28, -123, 74, - -231, -231, 74, 52, 136, -231, 74, -100, -127, -51, - -51, 73, -51, -230, -230, -230, -231, -100, -71, 75, - 74, -179, -120, -153, -187, 239, 10, -183, 80, -183, - 81, 81, 330, -167, 27, -218, -217, -154, 73, 72, - -118, -183, -220, -77, -77, -77, -77, -77, -104, 80, - -77, -77, -183, -107, -112, -139, -51, -86, 29, -89, - 52, -3, -153, -87, -153, -153, -104, -120, -120, -231, - -120, -120, -162, -104, -211, -210, 72, 158, 87, -208, - 75, 74, -190, 154, 29, 153, -80, -184, -184, 75, - 75, -230, 74, 104, -120, -66, -231, -231, -231, -231, - -43, 114, 295, -231, -231, -231, -110, 380, -113, 41, - -114, 42, 10, -87, 136, 75, -231, -231, -231, -70, - -210, -220, -200, 104, 80, 166, -153, -180, 87, 29, - 29, -214, -215, 177, -217, -206, 75, -231, 293, 68, - 296, -107, 46, 220, -115, 50, -116, -111, 51, 17, - -124, -153, 81, -66, 80, -231, 74, -153, -222, 57, - 294, 297, -108, 48, -106, 47, -106, -114, 17, -117, - 43, 44, 80, 73, -215, 52, -219, 57, -109, 49, - 71, 92, 80, 17, 17, -120, 179, 295, 71, 92, - 80, 80, 75, 180, 296, -225, -226, 71, -230, 297, - -226, 71, 11, 10, -77, 176, -224, 167, 162, 165, - 31, -224, -231, -231, 161, 30, 89, + -1000, -233, -1, -3, -8, -9, -10, -11, -12, -13, + -14, -15, -16, -17, -18, -19, -25, -26, -27, -29, + -30, -31, -32, -33, -6, -28, -20, -21, -34, -4, + -235, 6, 7, 8, -39, 10, 11, 31, -22, -24, + 146, 147, 149, 148, 182, 150, 175, 70, 196, 197, + 199, 200, 201, 202, -41, 180, 181, 32, 33, 152, + 35, 41, 80, 9, 289, 177, 176, 26, -234, 391, + -40, 5, -101, 16, -3, -35, -238, -35, -35, -35, + -35, -35, -35, -202, -204, 80, 119, 80, 156, 100, + 281, 153, 154, -158, 160, -153, -225, -152, 83, 84, + 85, 299, 168, 331, 332, 76, 196, 210, 204, 231, + 223, 300, 333, 169, 221, 224, 268, 166, 334, 251, + 258, 94, 199, 277, 335, 75, 47, 40, 178, 219, + 215, 336, 308, 213, 46, 28, 45, 337, 260, 236, + 44, 338, 79, 304, 262, 214, 259, 152, 339, 171, + 387, 164, 340, 237, 241, 341, 269, 48, 342, 343, + 344, 74, 208, 209, 345, 167, 271, 235, 165, 34, + 263, 301, 54, 186, 272, 42, 239, 41, 346, 234, + 230, 49, 347, 348, 349, 350, 233, 207, 229, 58, + 243, 242, 244, 267, 226, 351, 352, 353, 172, 77, + 354, 216, 19, 355, 356, 357, 52, 358, 359, 275, + 181, 360, 50, 37, 184, 361, 362, 363, 364, 365, + 366, 261, 238, 240, 161, 188, 257, 303, 367, 273, + 212, 368, 173, 185, 180, 276, 174, 369, 370, 371, + 372, 373, 374, 375, 200, 39, 376, 377, 378, 379, + 195, 270, 279, 57, 78, 248, 380, 206, 163, 381, + 197, 51, 192, 253, 43, 227, 187, 382, 383, 217, + 218, 232, 205, 228, 198, 388, 189, 182, 384, 278, + 249, 305, 225, 222, 193, 385, 190, 191, 386, 389, + 264, 254, 265, 266, 255, 194, 302, 274, 220, 250, + -136, 156, 281, 153, 255, 302, 154, 154, 155, 156, + 281, 153, 154, -67, -160, -225, -152, 156, 154, 137, + 224, 268, 146, 252, 263, 264, 260, -141, 261, 188, + -171, 154, -137, 251, 254, 255, 194, -232, -225, 262, + 270, 269, 256, 266, 265, -160, 198, -165, 203, -153, + 201, -67, -38, 387, 150, -167, -167, 253, 253, -167, + -87, -52, -73, 103, -78, 30, 24, -77, -74, -94, + -91, -92, 137, 138, 140, 139, 141, 126, 127, 134, + 104, 142, -82, -80, -81, -83, 87, 86, 95, 88, + 89, 90, 91, 96, 97, 98, -153, -160, -89, -235, + 64, 65, 290, 291, 292, 293, 298, 294, 106, 53, + 280, 288, 287, 286, 284, 285, 282, 283, 296, 297, + 159, 281, 153, 132, 289, -225, -152, 40, -5, -4, + -235, 6, 21, 22, -105, 18, 17, -236, 82, -42, + -50, 59, 60, -51, 22, 36, 63, 61, -36, -49, + 128, -52, -160, -49, -135, 158, -135, -135, -126, -170, + 198, -129, 270, 269, -154, -127, -153, -151, 268, 224, + 267, 151, 306, 102, 23, 25, 246, 105, 137, 17, + 106, 136, 290, 146, 68, 307, 282, 283, 280, 292, + 293, 281, 252, 30, 11, 309, 26, 176, 22, 36, + 130, 148, 109, 110, 179, 24, 177, 98, 312, 20, + 71, 12, 14, 313, 314, 15, 159, 158, 121, 155, + 66, 9, 142, 27, 118, 62, 315, 29, 316, 317, + 318, 319, 64, 119, 18, 284, 285, 32, 320, 298, + 183, 132, 69, 55, 103, 321, 322, 96, 323, 99, + 72, 100, 16, 67, 38, 324, 325, 326, 327, 120, + 149, 289, 65, 328, 153, 6, 295, 31, 175, 63, + 329, 154, 108, 296, 297, 157, 97, 5, 160, 33, + 10, 70, 73, 286, 287, 288, 53, 107, 13, 330, + 101, -203, 119, -193, -196, -153, 170, -218, 166, -67, + -210, -209, -153, -67, 289, -145, 159, -145, -145, 155, + 154, -67, -225, -225, 146, 148, 151, 72, 87, -23, + -67, -144, 159, -225, -144, -144, -144, -67, 143, -67, + -225, 31, -142, 119, 13, 281, -225, 188, 154, 189, + 156, -143, 119, -143, -143, -198, 155, 34, 167, -168, + -235, -154, 192, 193, 192, -140, -139, 258, 259, 253, + 257, 13, 193, 253, 191, -142, -168, 157, -153, -37, + -153, 87, -7, -3, -11, -10, -12, 111, -167, -167, + 81, 102, 100, 101, 118, -52, -75, 121, 103, 119, + 120, 105, 123, 122, 133, 126, 127, 128, 129, 130, + 131, 132, 124, 125, 136, 111, 112, 113, 114, 115, + 116, 117, -134, -235, -92, -235, 144, 145, -78, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -235, 143, + -2, -87, -4, -235, -235, -235, -235, -235, -235, -235, + -235, -97, -52, -235, -239, -84, -235, -239, -84, -239, + -84, -239, -235, -239, -84, -239, -84, -239, -239, -84, + -235, -235, -235, -235, -235, -235, -235, -167, -101, -3, + -35, -119, 20, 32, -52, -102, -103, -52, -101, 55, + -47, -49, -51, 59, 60, 93, 12, -156, -155, 23, + -153, 87, 143, 12, -68, 27, -67, -54, -55, -56, + -57, -70, -93, -235, -67, 12, -61, -62, -67, -69, + -160, 81, 198, -129, -170, -131, -130, 271, 273, 111, + -159, -153, 87, 30, 31, 82, 81, -67, -173, -176, + -178, -177, -179, -174, -175, 221, 222, 137, 225, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 31, + 178, 217, 218, 219, 220, 237, 238, 239, 240, 241, + 242, 243, 244, 204, 223, 300, 205, 206, 207, 208, + 209, 210, 212, 213, 214, 215, 216, -225, 80, 82, + 81, -180, 80, -168, 156, -225, 103, -225, -67, -225, + -67, -168, -168, -168, 190, 190, 154, 154, 195, -67, + 87, 81, 157, -61, 24, 72, -67, -225, -225, -161, + -160, -151, -168, -142, 87, -52, -168, -168, -168, -67, + -168, -168, 87, -199, 12, 121, -168, -168, -138, 12, + 121, -199, -138, -52, -143, 72, -166, 201, 235, 388, + 389, 390, -52, -52, -52, -52, -85, 96, 103, 97, + 98, -78, -86, -89, -92, 92, 121, 119, 120, 105, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -169, -225, 87, -225, -77, + -77, -153, -48, 22, 36, -47, -154, -161, -151, -40, + -236, -236, -101, -47, -47, -52, -52, -94, 87, -47, + -94, 87, -47, -47, -45, 22, 36, -95, -96, 107, + -94, -153, -160, -236, -78, -153, -153, -47, -48, -48, + -47, -47, -105, -236, -106, 27, 10, 121, 81, 19, + 81, -104, 25, 26, -105, -79, -153, 88, 91, -53, + 81, 12, -51, -67, -155, 128, -161, -67, -122, 184, + -67, 31, 81, -63, -65, -64, -66, 62, 66, 68, + 63, 64, 65, 69, -164, 23, -54, -3, -235, -163, + 184, -162, 23, -160, 87, -67, -61, -237, 81, 12, + 73, -237, 81, 143, -129, -131, 81, 272, 274, 275, + 72, 99, -52, -185, 136, -205, -206, -207, -154, 87, + 88, -193, -194, -195, -208, 170, -217, 161, 163, 160, + -197, 171, -218, 155, 29, 82, -146, 96, 103, -189, + 249, -180, -180, -180, -180, -180, -184, 224, -184, -184, + -184, 80, 80, -180, -180, -180, -180, -186, 80, -186, + -186, -187, 80, -187, -218, 166, -52, -215, -214, -211, + 73, 165, 94, 302, -209, -104, 88, -67, -168, 24, + -168, -157, 73, -148, 151, 148, 149, -221, 147, 246, + 224, 94, 30, 16, 290, 184, 305, -225, 185, -67, + -67, -67, -67, -67, 151, 148, -67, -67, -67, -168, + -67, -142, -160, -160, -67, -142, -67, -153, 96, 97, + 98, -86, -78, -78, -78, -46, 179, 102, -236, -236, + -47, -47, -235, 143, -5, -105, -236, -236, 81, 73, + 23, 12, 12, -236, 12, 12, -236, -236, -47, -98, + -96, 109, -52, -236, 143, -236, 81, 81, -236, -236, + -236, -236, -236, -119, 38, 46, 57, -52, -52, -103, + -119, -133, 20, 12, 53, 53, -72, 13, -49, -54, + -51, 143, -72, -76, 31, 53, -3, -235, -235, -125, + -128, -94, -55, -56, -56, -55, -56, 62, 62, 62, + 67, 62, 67, 62, -64, -160, -236, -236, -3, -71, + 70, 158, 71, -235, -162, -122, 73, -54, -67, -54, + -69, -160, 128, -130, -132, 276, 273, 279, -225, 87, + 81, -207, 111, -196, 80, -225, 29, -197, -197, -200, + -225, -200, 29, -182, 30, 96, -190, 250, -184, -184, + -185, 31, -185, -185, -185, -192, 87, -192, 88, 88, + 82, -216, -212, -213, 32, 76, -211, -225, -201, 111, + 87, 37, 82, -168, 72, -153, -167, -228, 166, 162, + 170, 171, 164, 83, 84, 85, 155, 29, 161, 163, + 184, 160, -228, -149, -150, 157, 23, 155, 29, 184, + -227, 73, 190, 246, 190, 157, -168, -138, -138, -46, + 102, -78, -78, -236, -236, -48, -154, -101, -119, -172, + 137, 221, 178, 219, 215, 235, 226, 248, 217, 249, + -169, -172, -78, -78, -78, -78, 299, -101, 110, -52, + 108, -154, -78, -78, 39, 87, 87, 58, -67, -99, + 14, -52, 128, -105, -124, 72, -125, -88, -90, -89, + -235, -120, -236, -153, -123, -153, -72, 81, 111, -59, + -58, 72, 73, -60, 72, -58, 62, 62, -236, 155, + 155, 155, -123, -72, -54, -72, -72, 143, 273, 277, + 278, -206, -207, -210, -217, 171, -200, -200, 80, -183, + 72, -78, -185, -185, -225, 137, 82, 81, 82, 81, + 82, 81, -147, 337, 103, -213, -212, -201, -201, 88, + 87, -67, -167, -167, -67, -167, -153, -224, 302, -226, + -225, -153, -153, -153, -67, -142, -142, -78, -236, -105, + -236, -180, -180, -180, -187, -180, 209, -180, 209, -236, + -236, 20, 20, 20, 20, -235, -43, 295, -52, 81, + 81, 87, -184, -100, 15, 17, 28, -124, 81, -236, + -236, 81, 53, 143, -236, 81, -101, -128, -52, -52, + 80, -52, -235, -235, -235, -236, -101, -72, 82, -121, + -153, -188, 246, 10, -184, 87, -184, 88, 88, 337, + 30, 77, 78, 79, 30, 74, 75, 27, -223, -222, + -154, 80, 73, -119, -184, -225, -78, -78, -78, -78, + -78, -105, 87, -78, -78, -184, -108, -113, -140, -52, + -87, 29, -90, 53, -3, -153, -88, -153, -153, -105, + -121, -121, -236, -121, -121, -163, -105, -215, 82, 81, + -191, 161, 29, 160, -81, -185, -185, 82, 82, -235, + 81, 111, -121, -67, -236, -236, -236, -236, -44, 121, + 302, -236, -236, -236, -111, 387, -114, 42, -115, 43, + 10, -88, 143, 82, -236, -236, -236, -71, 173, -153, + -181, 94, 29, 29, -219, -220, 184, -222, -207, 82, + -236, 300, 69, 303, -108, 47, 227, -116, 51, -117, + -112, 52, 17, -125, -153, -67, 87, -236, 81, -153, + -227, 58, 301, 304, -109, 49, -107, 48, -107, -115, + 17, -118, 44, 45, 87, 80, -220, 53, -224, 58, + -110, 50, 72, 99, 87, 17, 17, -121, 186, 302, + 72, 99, 87, 87, 82, 187, 303, -230, -231, 72, + -235, 304, -231, 72, 11, 10, -78, 183, -229, 174, + 169, 172, 31, -229, -236, -236, 168, 30, 96, } var yyDef = [...]int{ 30, -2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 635, - 0, 376, 376, 376, 376, 376, 376, 376, 0, 739, - 731, 0, 0, 0, 0, -2, 341, 342, 0, 344, - -2, 0, 0, 353, 1067, 1067, 0, 0, 1067, 0, - 0, 1065, 49, 50, 359, 360, 361, 1, 3, 0, - 380, 643, 0, 0, -2, 378, 0, 0, 719, 719, - 719, 0, 78, 79, 0, 0, 0, 1050, 0, 717, - 717, 717, 740, 741, 744, 745, 31, 32, 33, 872, - 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, - 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, - 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, - 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, - 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, - 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, - 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, - 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, - 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, - 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, - 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, - 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1051, 1052, 1053, - 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, - 1064, 0, 0, 0, 0, 0, 0, 0, 715, 0, - 715, 715, 715, 0, 287, 458, 748, 749, 1050, 0, - 0, 0, 332, 0, 335, 335, 335, 301, 0, 303, - 1068, 0, 0, 0, 310, 0, 0, 316, 332, 1068, - 324, 338, 339, 326, 321, 322, 340, 343, 0, 348, - 351, 0, 366, 0, 918, 358, 371, 372, 1067, 1067, - 375, 34, 509, 468, 0, 474, 476, 0, 511, 512, - 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 541, 542, 543, 544, 620, 621, 622, - 623, 624, 625, 626, 627, 478, 479, 617, 0, 696, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 608, - 0, 578, 578, 578, 578, 578, 578, 578, 578, 0, - 0, 0, 0, 0, 0, 0, -2, -2, 1067, 635, - 45, 0, 376, 381, 382, 647, 0, 0, 635, 1066, - 0, 0, -2, -2, 392, 398, 399, 400, 401, 377, - 0, 404, 408, 0, 0, 0, 720, 0, 0, 64, - 0, 1038, 700, -2, -2, 0, 0, 746, 747, -2, - 885, -2, 752, 753, 754, 755, 756, 757, 758, 759, - 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, - 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, - 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, - 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, - 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, - 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, - 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, - 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, - 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, - 870, 871, 0, 0, 97, 98, 0, 0, 216, 887, - 95, 0, 1068, 0, 0, 0, 0, 0, 0, 1068, - 1068, 1068, 0, 0, 0, 0, 732, 278, 0, 0, - 0, 0, 0, 0, 0, 286, 0, 288, 1068, 332, - 291, 0, 0, 1068, 1068, 1068, 0, 1068, 1068, 298, - 0, 299, 300, 0, 201, 202, 203, 304, 1069, 1070, - 1068, 1068, 329, 0, 329, 327, 328, 319, 320, 0, - 335, 313, 314, 317, 318, 349, 352, 369, 367, 368, - 370, 362, 363, 364, 365, 0, 373, 374, 0, 0, - 0, 0, 0, 472, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 496, 497, 498, 499, 500, 501, 502, - 475, 0, 489, 0, 0, 0, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 0, 389, 0, 0, 0, - 635, 0, 0, 0, 0, 0, 0, 0, 386, 0, - 609, 0, 562, 570, 0, 563, 571, 564, 572, 565, - 0, 566, 573, 567, 574, 568, 569, 575, 0, 0, - 0, 389, 389, 0, 0, 35, 643, 0, 391, 650, - 0, 0, 644, 636, 637, 640, 643, 0, 413, 402, - 393, 396, 397, 379, 0, 405, 409, 0, 411, 412, - 0, 0, 62, 0, 457, 0, 415, 417, 418, 419, - 439, 0, 441, 0, 0, 0, 58, 60, 458, 0, - 1038, 706, 0, 66, 67, 0, 0, 0, 177, 710, - 711, 712, 708, 233, 0, 0, 165, 161, 105, 106, - 107, 154, 109, 154, 154, 154, 154, 174, 174, 174, - 174, 137, 138, 139, 140, 141, 0, 0, 124, 154, - 154, 154, 154, 144, 145, 146, 147, 148, 149, 150, - 151, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 156, 156, 156, 158, 158, 0, 0, 742, 81, 0, - 1068, 0, 1068, 93, 0, 247, 249, 250, 0, 0, - 0, 0, 0, 0, 733, 0, 0, 281, 716, 0, - 1068, 284, 285, 459, 750, 751, 289, 290, 333, 334, - 292, 293, 294, 295, 296, 297, 336, 0, 204, 205, - 305, 309, 332, 0, 0, 0, 332, 311, 312, 0, - 0, 350, 354, 355, 356, 357, 510, 469, 470, 471, - 473, 490, 0, 492, 494, 480, 481, 505, 506, 507, - 0, 0, 0, 0, 503, 485, 0, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 530, - 593, 594, 0, 528, 529, 540, 0, 0, 0, 390, - 618, 0, -2, 0, 508, 695, 643, 0, 0, 0, - 0, 513, 620, 0, 513, 620, 0, 0, 0, 387, - 388, 615, 612, 0, 0, 617, 0, 579, 0, 0, - 0, 0, 0, 0, 0, 0, 647, 46, 36, 0, - 648, 0, 0, 0, 0, 639, 641, 642, 647, 0, - 628, 0, 0, 466, 0, 0, 394, 42, 410, 406, - 0, 466, 0, 0, 456, 0, 0, 0, 0, 0, - 0, 446, 0, 0, 449, 0, 0, 0, 0, 440, - 0, 0, 0, 461, 979, 442, 0, 444, 445, -2, - 0, 0, 0, 56, 57, 0, 0, 0, 701, 65, - 0, 0, 70, 71, 702, 703, 704, 705, 0, 94, - 234, 236, 239, 240, 241, 99, 101, 102, 0, 0, - 214, 989, 1022, 208, 208, 917, 221, 206, 207, 96, - 168, 166, 0, 163, 162, 108, 0, 174, 174, 131, - 132, 177, 0, 177, 177, 177, 0, 0, 125, 126, - 127, 128, 119, 0, 120, 121, 122, 0, 123, 215, - 0, 0, 0, 0, 1068, 83, 718, 84, 1067, 0, - 0, 734, 248, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 0, 85, 252, 254, 253, 257, 0, - 0, 0, 279, 1068, 283, 329, 306, 330, 331, 329, - 308, 315, 346, 491, 493, 495, 482, 503, 486, 0, - 483, 0, 0, 477, 545, 0, 0, 389, 0, 635, - 647, 549, 550, 0, 0, 0, 0, 0, 586, 0, - 0, 587, 0, 635, 0, 613, 0, 0, 561, 0, - 580, 0, 0, 581, 582, 583, 584, 585, 38, 0, - 0, 0, 645, 646, 638, 37, 0, 713, 714, 629, - 630, 631, 0, 403, 414, 395, 0, 643, 689, 0, - 0, 681, 0, 0, 466, 697, 0, 416, 435, 437, - 0, 432, 447, 448, 450, 0, 452, 0, 454, 455, - 420, 421, 422, 0, 423, 0, 0, 0, 0, 443, - 466, 0, 466, 59, 466, 61, 0, 460, 68, 69, - 0, 0, 75, 178, 179, 0, 237, 0, 100, 0, - 0, 196, 208, 208, 199, 209, 200, 0, 170, 0, - 167, 104, 164, 0, 177, 177, 133, 0, 134, 135, - 136, 0, 152, 0, 0, 0, 230, 0, 743, 82, - 242, 1067, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 1067, 0, 1067, 735, - 736, 737, 738, 0, 88, 0, 0, 0, 0, 0, - 282, 332, 332, 484, 0, 504, 487, 546, 547, 0, - 619, 643, 40, 0, 154, 154, 598, 154, 158, 601, - 154, 603, 154, 606, 0, 0, 0, 0, 0, 0, - 0, 610, 560, 616, 0, 618, 0, 0, 0, 174, - 652, 649, 39, 633, 0, 467, 407, 43, 47, 0, - 689, 680, 691, 693, 0, 0, 0, 685, 0, 427, - 635, 0, 0, 429, 436, 0, 0, 430, 0, 431, - 451, 453, -2, 0, 0, 0, 0, 635, 466, 54, - 55, 0, 72, 73, 74, 235, 238, 0, 210, 154, - 213, 0, 197, 198, 0, 172, 0, 169, 155, 129, - 130, 175, 176, 174, 0, 174, 0, 159, 0, 222, - 231, 0, 1068, 243, 244, 245, 246, 0, 251, 0, - 86, 87, 0, 0, 256, 280, 302, 307, 488, 548, - 647, 551, 595, 174, 599, 600, 602, 604, 605, 607, - 553, 552, 0, 0, 0, 0, 0, 643, 0, 614, - 0, 0, 174, 672, 44, 0, 0, 0, 48, 0, - 694, 0, 0, 0, 0, 63, 0, 643, 698, 699, - 433, 0, 438, 0, 0, 0, 441, 643, 53, 188, - 0, 212, 0, 425, 180, 173, 0, 177, 153, 177, - 0, 0, 232, 80, 0, 89, 90, 0, 0, 0, - 41, 596, 597, 0, 0, 0, 0, 588, 0, 611, - 0, 0, 654, 653, 666, 670, 634, 632, 0, 692, - 0, 684, 687, 683, 686, 428, 51, 0, 0, 463, - 0, 0, 461, 52, 187, 189, 0, 194, 0, 211, - 0, 0, 185, 0, 182, 184, 171, 142, 143, 157, - 160, 0, 0, 0, 0, 258, 554, 556, 555, 557, - 0, 0, 0, 559, 576, 577, 672, 0, 665, 668, - -2, 0, 0, 682, 0, 434, 462, 464, 465, 424, - 190, 191, 0, 195, 193, 0, 426, 103, 0, 181, - 183, 0, 274, 0, 91, 92, 85, 558, 0, 0, - 0, 659, 657, 657, 670, 0, 674, 0, 679, 0, - 690, 688, 192, 0, 186, 273, 0, 0, 88, 589, - 0, 592, 662, 0, 655, 658, 656, 667, 0, 673, - 0, 0, 671, 0, 275, 0, 255, 590, 651, 0, - 660, 661, 669, 0, 0, 0, 0, 0, 663, 664, - 675, 677, 217, 0, 0, 218, 219, 0, 0, 591, - 220, 0, 0, 0, 0, 0, 223, 225, 226, 0, - 0, 224, 276, 277, 227, 228, 229, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 638, + 0, 379, 379, 379, 379, 379, 379, 379, 0, 0, + 754, 746, 0, 0, 0, 0, -2, 344, 345, 0, + 347, -2, 0, 0, 356, 1089, 1089, 0, 0, 1089, + 0, 0, 1087, 49, 50, 362, 363, 364, 1, 3, + 0, 383, 646, 0, 0, -2, 381, 0, 0, 734, + 734, 734, 0, 78, 79, 0, 0, 0, 1072, 0, + 732, 732, 732, 0, 755, 756, 759, 760, 31, 32, + 33, 887, 888, 889, 890, 891, 892, 893, 894, 895, + 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, + 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, + 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, + 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, + 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, + 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, + 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, + 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, + 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, + 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, + 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, + 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, + 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, + 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, + 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, + 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, + 1066, 1067, 1068, 1069, 1070, 1071, 1073, 1074, 1075, 1076, + 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, + 0, 0, 0, 0, 0, 0, 0, 730, 0, 730, + 730, 730, 0, 290, 461, 763, 764, 1072, 0, 0, + 0, 335, 0, 338, 338, 338, 304, 0, 306, 1090, + 0, 0, 0, 313, 0, 0, 319, 335, 1090, 327, + 341, 342, 329, 324, 325, 343, 346, 0, 351, 354, + 0, 369, 0, 936, 361, 374, 375, 1089, 1089, 378, + 34, 512, 471, 0, 477, 479, 0, 514, 515, 516, + 517, 518, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 544, 545, 546, 547, 623, 624, 625, 626, + 627, 628, 629, 630, 481, 482, 620, 0, 711, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 611, 0, + 581, 581, 581, 581, 581, 581, 581, 581, 0, 0, + 0, 0, 0, 0, 0, -2, -2, 1089, 638, 45, + 0, 379, 384, 385, 662, 0, 0, 638, 1088, 0, + 0, -2, -2, 395, 401, 402, 403, 404, 380, 0, + 407, 411, 0, 0, 0, 735, 0, 0, 64, 0, + 1060, 715, -2, -2, 0, 0, 761, 762, -2, 901, + -2, 767, 768, 769, 770, 771, 772, 773, 774, 775, + 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, + 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, + 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, + 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, + 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, + 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, + 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, + 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, + 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, + 886, 0, 0, 98, 99, 0, 0, 219, 903, 96, + 0, 213, 155, 1090, 0, 0, 0, 0, 0, 0, + 0, 1090, 1090, 1090, 0, 0, 0, 0, 747, 281, + 0, 0, 0, 0, 0, 0, 0, 289, 0, 291, + 1090, 335, 294, 0, 0, 1090, 1090, 1090, 0, 1090, + 1090, 301, 0, 302, 303, 0, 204, 205, 206, 307, + 1091, 1092, 1090, 1090, 332, 0, 332, 330, 331, 322, + 323, 0, 338, 316, 317, 320, 321, 352, 355, 372, + 370, 371, 373, 365, 366, 367, 368, 0, 376, 377, + 0, 0, 0, 0, 0, 475, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 499, 500, 501, 502, 503, + 504, 505, 478, 0, 492, 0, 0, 0, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 0, 392, 0, + 0, 0, 638, 0, 0, 0, 0, 0, 0, 0, + 389, 0, 612, 0, 565, 573, 0, 566, 574, 567, + 575, 568, 0, 569, 576, 570, 577, 571, 572, 578, + 0, 0, 0, 392, 392, 0, 0, 35, 646, 0, + 394, 665, 0, 0, 647, 639, 640, 643, 646, 0, + 416, 405, 396, 399, 400, 382, 0, 408, 412, 0, + 414, 415, 0, 0, 62, 0, 460, 0, 418, 420, + 421, 422, 442, 0, 444, 0, 0, 0, 58, 60, + 461, 0, 1060, 721, 0, 66, 67, 0, 0, 0, + 178, 725, 726, 727, 723, 236, 0, 0, 166, 162, + 106, 107, 108, 155, 110, 155, 155, 155, 155, 175, + 175, 175, 175, 138, 139, 140, 141, 142, 0, 0, + 125, 155, 155, 155, 155, 145, 146, 147, 148, 149, + 150, 151, 152, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 157, 157, 157, 159, 159, 0, 0, 189, + 0, 643, 0, 81, 0, 1090, 0, 1090, 93, 757, + 0, 250, 252, 253, 0, 0, 0, 0, 0, 0, + 748, 0, 0, 284, 731, 0, 1090, 287, 288, 462, + 765, 766, 292, 293, 336, 337, 295, 296, 297, 298, + 299, 300, 339, 0, 207, 208, 308, 312, 335, 0, + 0, 0, 335, 314, 315, 0, 0, 353, 357, 358, + 359, 360, 513, 472, 473, 474, 476, 493, 0, 495, + 497, 483, 484, 508, 509, 510, 0, 0, 0, 0, + 506, 488, 0, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 533, 596, 597, 0, 531, + 532, 543, 0, 0, 0, 393, 621, 0, -2, 0, + 511, 710, 646, 0, 0, 0, 0, 516, 623, 0, + 516, 623, 0, 0, 0, 390, 391, 618, 615, 0, + 0, 620, 0, 582, 0, 0, 0, 0, 0, 0, + 0, 0, 662, 46, 36, 0, 663, 0, 0, 0, + 0, 642, 644, 645, 662, 0, 631, 0, 0, 469, + 0, 0, 397, 42, 413, 409, 0, 469, 0, 0, + 459, 0, 0, 0, 0, 0, 0, 449, 0, 0, + 452, 0, 0, 0, 0, 443, 0, 0, 0, 464, + 1000, 445, 0, 447, 448, -2, 0, 0, 0, 56, + 57, 0, 0, 0, 716, 65, 0, 0, 70, 71, + 717, 718, 719, 720, 0, 95, 237, 239, 242, 243, + 244, 100, 102, 103, 0, 0, 217, 1010, 1044, 211, + 211, 935, 224, 209, 210, 97, 169, 167, 0, 164, + 163, 109, 175, 175, 132, 133, 178, 0, 178, 178, + 178, 0, 0, 126, 127, 128, 129, 120, 0, 121, + 122, 123, 0, 124, 218, 0, 0, 650, 190, 191, + 0, 197, 0, 0, 214, 215, 0, 1090, 83, 733, + 84, 0, 0, 1089, 0, 0, 749, 251, 736, 737, + 738, 739, 740, 741, 742, 743, 744, 745, 0, 85, + 255, 257, 256, 260, 0, 0, 0, 282, 1090, 286, + 332, 309, 333, 334, 332, 311, 318, 349, 494, 496, + 498, 485, 506, 489, 0, 486, 0, 0, 480, 548, + 0, 0, 392, 0, 638, 662, 552, 553, 0, 0, + 0, 0, 0, 589, 0, 0, 590, 0, 638, 0, + 616, 0, 0, 564, 0, 583, 0, 0, 584, 585, + 586, 587, 588, 38, 0, 0, 0, 648, 649, 641, + 37, 0, 728, 729, 632, 633, 634, 0, 406, 417, + 398, 0, 646, 704, 0, 0, 696, 0, 0, 469, + 712, 0, 419, 438, 440, 0, 435, 450, 451, 453, + 0, 455, 0, 457, 458, 423, 424, 425, 0, 426, + 0, 0, 0, 0, 446, 469, 0, 469, 59, 469, + 61, 0, 463, 68, 69, 0, 0, 75, 179, 180, + 0, 240, 0, 101, 0, 0, 199, 211, 211, 202, + 212, 203, 0, 171, 0, 168, 105, 165, 178, 178, + 134, 0, 135, 136, 137, 0, 153, 0, 0, 0, + 233, 80, 654, 653, 197, 197, 192, 193, 0, 198, + 195, 0, 156, 82, 0, 758, 245, 1089, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 1089, 0, 1089, 750, 751, 752, 753, 0, + 88, 0, 0, 0, 0, 0, 285, 335, 335, 487, + 0, 507, 490, 549, 550, 0, 622, 646, 40, 0, + 155, 155, 601, 155, 159, 604, 155, 606, 155, 609, + 0, 0, 0, 0, 0, 0, 0, 613, 563, 619, + 0, 621, 0, 0, 0, 175, 667, 664, 39, 636, + 0, 470, 410, 43, 47, 0, 704, 695, 706, 708, + 0, 0, 0, 700, 0, 430, 638, 0, 0, 432, + 439, 0, 0, 433, 0, 434, 454, 456, -2, 0, + 0, 0, 0, 638, 469, 54, 55, 0, 72, 73, + 74, 238, 241, 0, 216, 0, 200, 201, 0, 173, + 0, 170, 130, 131, 176, 177, 175, 0, 175, 0, + 160, 0, 225, 234, 0, 651, 652, 0, 0, 194, + 196, 94, 246, 247, 248, 249, 0, 254, 0, 86, + 87, 0, 0, 259, 283, 305, 310, 491, 551, 662, + 554, 598, 175, 602, 603, 605, 607, 608, 610, 556, + 555, 0, 0, 0, 0, 0, 646, 0, 617, 0, + 0, 175, 687, 44, 0, 0, 0, 48, 0, 709, + 0, 0, 0, 0, 63, 0, 646, 713, 714, 436, + 0, 441, 0, 0, 0, 444, 646, 53, 189, 0, + 428, 181, 174, 0, 178, 154, 178, 0, 0, 235, + 655, 656, 657, 658, 659, 660, 661, 0, 89, 90, + 0, 0, 0, 41, 599, 600, 0, 0, 0, 0, + 591, 0, 614, 0, 0, 669, 668, 681, 685, 637, + 635, 0, 707, 0, 699, 702, 698, 701, 431, 51, + 0, 0, 466, 0, 0, 464, 52, 188, 0, 0, + 186, 0, 183, 185, 172, 143, 144, 158, 161, 0, + 0, 0, 0, 261, 557, 559, 558, 560, 0, 0, + 0, 562, 579, 580, 687, 0, 680, 683, -2, 0, + 0, 697, 0, 437, 465, 467, 468, 427, 0, 429, + 104, 0, 182, 184, 0, 277, 0, 91, 92, 85, + 561, 0, 0, 0, 674, 672, 672, 685, 0, 689, + 0, 694, 0, 705, 703, 0, 187, 276, 0, 0, + 88, 592, 0, 595, 677, 0, 670, 673, 671, 682, + 0, 688, 0, 0, 686, 0, 278, 0, 258, 593, + 666, 0, 675, 676, 684, 0, 0, 0, 0, 0, + 678, 679, 690, 692, 220, 0, 0, 221, 222, 0, + 0, 594, 223, 0, 0, 0, 0, 0, 226, 228, + 229, 0, 0, 227, 279, 280, 230, 231, 232, } var yyTok1 = [...]int{ 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 97, 3, 3, 3, 124, 116, 3, - 73, 75, 121, 119, 74, 120, 136, 122, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 384, - 105, 104, 106, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 104, 3, 3, 3, 131, 123, 3, + 80, 82, 128, 126, 81, 127, 143, 129, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 391, + 112, 111, 113, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 126, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 133, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 115, 3, 127, + 3, 3, 3, 3, 122, 3, 134, } var yyTok2 = [...]int{ @@ -3663,12 +3798,12 @@ var yyTok2 = [...]int{ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 72, 73, 74, 75, 76, 77, 78, 79, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 98, 99, 100, 101, 102, 103, 107, 108, - 109, 110, 111, 112, 113, 114, 117, 118, 123, 125, - 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, + 106, 107, 108, 109, 110, 114, 115, 116, 117, 118, + 119, 120, 121, 124, 125, 130, 132, 135, 136, 137, + 138, 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, @@ -3705,7 +3840,9 @@ var yyTok3 = [...]int{ 57690, 365, 57691, 366, 57692, 367, 57693, 368, 57694, 369, 57695, 370, 57696, 371, 57697, 372, 57698, 373, 57699, 374, 57700, 375, 57701, 376, 57702, 377, 57703, 378, 57704, 379, - 57705, 380, 57706, 381, 57707, 382, 57708, 383, 0, + 57705, 380, 57706, 381, 57707, 382, 57708, 383, 57709, 384, + 57710, 385, 57711, 386, 57712, 387, 57713, 388, 57714, 389, + 57715, 390, 0, } var yyErrorMessages = [...]struct { @@ -4047,65 +4184,65 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:365 +//line sql.y:367 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:370 +//line sql.y:372 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:371 +//line sql.y:373 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:375 +//line sql.y:377 { yyVAL.statement = yyDollar[1].selStmt } case 30: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:404 +//line sql.y:406 { setParseTree(yylex, nil) } case 31: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:410 +//line sql.y:412 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), NoAt) } case 32: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:414 +//line sql.y:416 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), SingleAt) } case 33: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:418 +//line sql.y:420 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), DoubleAt) } case 34: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:424 +//line sql.y:426 { yyVAL.statement = &OtherAdmin{} } case 35: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:430 +//line sql.y:432 { yyVAL.statement = &Load{} } case 36: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:436 +//line sql.y:438 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -4116,25 +4253,25 @@ yydefault: } case 37: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:445 +//line sql.y:447 { yyVAL.selStmt = &Union{FirstStatement: &ParenSelect{Select: yyDollar[2].selStmt}, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].lock} } case 38: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:449 +//line sql.y:451 { yyVAL.selStmt = Unionize(yyDollar[1].selStmt, yyDollar[3].selStmt, yyDollar[2].unionType, yyDollar[4].orderBy, yyDollar[5].limit, yyDollar[6].lock) } case 39: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:453 +//line sql.y:455 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), SelectExprs{Nextval{Expr: yyDollar[5].expr}}, []string{yyDollar[3].str} /*options*/, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/) } case 40: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:476 +//line sql.y:478 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -4144,43 +4281,43 @@ yydefault: } case 41: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:484 +//line sql.y:486 { yyVAL.selStmt = Unionize(yyDollar[1].selStmt, yyDollar[3].selStmt, yyDollar[2].unionType, yyDollar[4].orderBy, yyDollar[5].limit, yyDollar[6].lock) } case 42: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:490 +//line sql.y:492 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } case 43: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:496 +//line sql.y:498 { yyVAL.statement = &VStream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName, Where: NewWhere(WhereClause, yyDollar[6].expr), Limit: yyDollar[7].limit} } case 44: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:504 +//line sql.y:506 { yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), yyDollar[4].selectExprs /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].tableExprs /*from*/, NewWhere(WhereClause, yyDollar[6].expr), GroupBy(yyDollar[7].exprs), NewWhere(HavingClause, yyDollar[8].expr)) } case 45: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:510 +//line sql.y:512 { yyVAL.selStmt = yyDollar[1].selStmt } case 46: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:514 +//line sql.y:516 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 47: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:521 +//line sql.y:523 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -4194,7 +4331,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:533 +//line sql.y:535 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -4206,340 +4343,348 @@ yydefault: } case 49: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:545 +//line sql.y:547 { yyVAL.insertAction = InsertAct } case 50: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:549 +//line sql.y:551 { yyVAL.insertAction = ReplaceAct } case 51: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:555 +//line sql.y:557 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, TableExprs: yyDollar[4].tableExprs, Exprs: yyDollar[6].updateExprs, Where: NewWhere(WhereClause, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit} } case 52: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:561 +//line sql.y:563 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[5].tableName}}, Partitions: yyDollar[6].partitions, Where: NewWhere(WhereClause, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit} } case 53: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:565 +//line sql.y:567 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[5].tableNames, TableExprs: yyDollar[7].tableExprs, Where: NewWhere(WhereClause, yyDollar[8].expr)} } case 54: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:569 +//line sql.y:571 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereClause, yyDollar[7].expr)} } case 55: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:573 +//line sql.y:575 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereClause, yyDollar[7].expr)} } case 56: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:578 +//line sql.y:580 { } case 57: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:579 +//line sql.y:581 { } case 58: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:583 +//line sql.y:585 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 59: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:587 +//line sql.y:589 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 60: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:593 +//line sql.y:595 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 61: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:597 +//line sql.y:599 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 62: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:602 +//line sql.y:604 { yyVAL.partitions = nil } case 63: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:606 +//line sql.y:608 { yyVAL.partitions = yyDollar[3].partitions } case 64: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:612 +//line sql.y:614 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 65: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:618 +//line sql.y:620 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].scope, Characteristics: yyDollar[5].characteristics} } case 66: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:622 +//line sql.y:624 { yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Characteristics: yyDollar[4].characteristics, Scope: ImplicitScope} } case 67: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:628 +//line sql.y:630 { yyVAL.characteristics = []Characteristic{yyDollar[1].characteristic} } case 68: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:632 +//line sql.y:634 { yyVAL.characteristics = append(yyVAL.characteristics, yyDollar[3].characteristic) } case 69: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:638 +//line sql.y:640 { yyVAL.characteristic = yyDollar[3].isolationLevel } case 70: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:642 +//line sql.y:644 { yyVAL.characteristic = ReadWrite } case 71: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:646 +//line sql.y:648 { yyVAL.characteristic = ReadOnly } case 72: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:652 +//line sql.y:654 { yyVAL.isolationLevel = RepeatableRead } case 73: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:656 +//line sql.y:658 { yyVAL.isolationLevel = ReadCommitted } case 74: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:660 +//line sql.y:662 { yyVAL.isolationLevel = ReadUncommitted } case 75: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:664 +//line sql.y:666 { yyVAL.isolationLevel = Serializable } case 76: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:670 +//line sql.y:672 { yyVAL.scope = SessionScope } case 77: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:674 +//line sql.y:676 { yyVAL.scope = GlobalScope } case 78: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:680 +//line sql.y:682 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } case 79: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:685 +//line sql.y:687 { // Create table [name] like [name] yyDollar[1].ddl.OptLike = yyDollar[2].optLike yyVAL.statement = yyDollar[1].ddl } case 80: - yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:691 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:693 { - // Change this to an alter statement - yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[7].tableName} + yyDollar[1].createIndex.Columns = yyDollar[3].indexColumns + yyDollar[1].createIndex.Options = append(yyDollar[5].indexOptions, yyDollar[6].indexOptions...) + yyVAL.statement = yyDollar[1].createIndex } case 81: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:696 +//line sql.y:699 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 82: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:700 +//line sql.y:703 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[5].tableName.ToViewName()} } case 83: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:704 +//line sql.y:707 { yyVAL.statement = &DBDDL{Action: CreateDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean} } case 84: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:708 +//line sql.y:711 { yyVAL.statement = &DBDDL{Action: CreateDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean} } case 85: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:713 +//line sql.y:716 { yyVAL.colIdent = NewColIdent("") } case 86: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:717 +//line sql.y:720 { yyVAL.colIdent = yyDollar[2].colIdent } case 87: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:723 +//line sql.y:726 { yyVAL.colIdent = yyDollar[1].colIdent } case 88: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:728 +//line sql.y:731 { var v []VindexParam yyVAL.vindexParams = v } case 89: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:733 +//line sql.y:736 { yyVAL.vindexParams = yyDollar[2].vindexParams } case 90: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:739 +//line sql.y:742 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } case 91: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:744 +//line sql.y:747 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } case 92: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:750 +//line sql.y:753 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 93: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:756 +//line sql.y:759 { yyVAL.ddl = &DDL{Action: CreateDDLAction, Table: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } case 94: + yyDollar = yyS[yypt-7 : yypt+1] +//line sql.y:766 + { + yyVAL.createIndex = &CreateIndex{Constraint: yyDollar[2].colIdent, Name: yyDollar[4].colIdent, IndexType: yyDollar[5].colIdent, Table: yyDollar[7].tableName} + setDDL(yylex, yyVAL.createIndex) + } + case 95: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:763 +//line sql.y:774 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } - case 95: + case 96: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:770 +//line sql.y:781 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} } - case 96: + case 97: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:774 +//line sql.y:785 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} } - case 97: + case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:780 +//line sql.y:791 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } - case 98: + case 99: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:785 +//line sql.y:796 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddConstraint(yyDollar[1].constraintDefinition) } - case 99: + case 100: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:790 +//line sql.y:801 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } - case 100: + case 101: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:794 +//line sql.y:805 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) yyVAL.TableSpec.AddConstraint(yyDollar[4].constraintDefinition) } - case 101: + case 102: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:799 +//line sql.y:810 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } - case 102: + case 103: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:803 +//line sql.y:814 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } - case 103: + case 104: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:809 +//line sql.y:820 { yyDollar[2].columnType.NotNull = yyDollar[3].boolean yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -4549,92 +4694,84 @@ yydefault: yyDollar[2].columnType.Comment = yyDollar[8].literal yyVAL.columnDefinition = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType} } - case 104: + case 105: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:820 +//line sql.y:831 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolean yyVAL.columnType.Zerofill = yyDollar[3].boolean } - case 108: + case 109: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:831 +//line sql.y:842 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literal } - case 109: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:836 - { - yyVAL.columnType = yyDollar[1].columnType - } case 110: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:842 +//line sql.y:847 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = yyDollar[1].columnType } case 111: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:846 +//line sql.y:853 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 112: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:850 +//line sql.y:857 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 113: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:854 +//line sql.y:861 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 114: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:858 +//line sql.y:865 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 115: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:862 +//line sql.y:869 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 116: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:866 +//line sql.y:873 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:870 +//line sql.y:877 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 118: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:874 +//line sql.y:881 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 119: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:880 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:885 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} - yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 120: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:886 +//line sql.y:891 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4642,7 +4779,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:892 +//line sql.y:897 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4650,7 +4787,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:898 +//line sql.y:903 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4658,789 +4795,809 @@ yydefault: } case 123: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:904 +//line sql.y:909 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 124: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:912 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:915 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 125: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:916 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:923 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 126: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:920 +//line sql.y:927 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 127: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:924 +//line sql.y:931 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 128: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:928 +//line sql.y:935 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 129: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:934 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:939 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 130: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:938 +//line sql.y:945 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 131: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:942 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:949 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 132: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:946 +//line sql.y:953 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 133: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:950 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:957 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:954 +//line sql.y:961 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 135: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:958 +//line sql.y:965 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 136: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:962 +//line sql.y:969 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 137: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:966 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:973 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 138: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:970 +//line sql.y:977 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 139: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:974 +//line sql.y:981 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:978 +//line sql.y:985 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 141: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:982 +//line sql.y:989 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 142: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:986 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:993 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 143: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:991 +//line sql.y:997 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 144: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:997 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:1002 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 145: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1001 +//line sql.y:1008 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 146: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1005 +//line sql.y:1012 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 147: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1009 +//line sql.y:1016 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 148: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1013 +//line sql.y:1020 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 149: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1017 +//line sql.y:1024 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 150: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1021 +//line sql.y:1028 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 151: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1025 +//line sql.y:1032 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 152: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1031 +//line sql.y:1036 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + } + case 153: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1042 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 153: + case 154: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1036 +//line sql.y:1047 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 154: + case 155: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1041 +//line sql.y:1052 { yyVAL.literal = nil } - case 155: + case 156: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1045 +//line sql.y:1056 { yyVAL.literal = NewIntLiteral(yyDollar[2].bytes) } - case 156: + case 157: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1050 +//line sql.y:1061 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 157: + case 158: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1054 +//line sql.y:1065 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), Scale: NewIntLiteral(yyDollar[4].bytes), } } - case 158: + case 159: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1062 +//line sql.y:1073 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 159: + case 160: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1066 +//line sql.y:1077 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), } } - case 160: + case 161: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1072 +//line sql.y:1083 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), Scale: NewIntLiteral(yyDollar[4].bytes), } } - case 161: + case 162: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1080 +//line sql.y:1091 { yyVAL.boolean = false } - case 162: + case 163: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1084 +//line sql.y:1095 { yyVAL.boolean = true } - case 163: + case 164: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1089 +//line sql.y:1100 { yyVAL.boolean = false } - case 164: + case 165: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1093 +//line sql.y:1104 { yyVAL.boolean = true } - case 165: + case 166: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1099 +//line sql.y:1110 { yyVAL.boolean = false } - case 166: + case 167: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1103 +//line sql.y:1114 { yyVAL.boolean = false } - case 167: + case 168: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1107 +//line sql.y:1118 { yyVAL.boolean = true } - case 168: + case 169: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1112 +//line sql.y:1123 { yyVAL.optVal = nil } - case 169: + case 170: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1116 +//line sql.y:1127 { yyVAL.optVal = yyDollar[2].expr } - case 170: + case 171: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1121 +//line sql.y:1132 { yyVAL.optVal = nil } - case 171: + case 172: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1125 +//line sql.y:1136 { yyVAL.optVal = yyDollar[3].expr } - case 172: + case 173: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1130 +//line sql.y:1141 { yyVAL.boolean = false } - case 173: + case 174: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1134 +//line sql.y:1145 { yyVAL.boolean = true } - case 174: + case 175: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1139 +//line sql.y:1150 { yyVAL.str = "" } - case 175: + case 176: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1143 +//line sql.y:1154 { yyVAL.str = string(yyDollar[3].colIdent.String()) } - case 176: + case 177: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1147 +//line sql.y:1158 { yyVAL.str = string(yyDollar[3].bytes) } - case 177: + case 178: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1152 +//line sql.y:1163 { yyVAL.str = "" } - case 178: + case 179: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1156 +//line sql.y:1167 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 179: + case 180: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1160 +//line sql.y:1171 { yyVAL.str = string(yyDollar[2].bytes) } - case 180: + case 181: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1165 +//line sql.y:1176 { yyVAL.colKeyOpt = colKeyNone } - case 181: + case 182: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1169 +//line sql.y:1180 { yyVAL.colKeyOpt = colKeyPrimary } - case 182: + case 183: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1173 +//line sql.y:1184 { yyVAL.colKeyOpt = colKey } - case 183: + case 184: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1177 +//line sql.y:1188 { yyVAL.colKeyOpt = colKeyUniqueKey } - case 184: + case 185: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1181 +//line sql.y:1192 { yyVAL.colKeyOpt = colKeyUnique } - case 185: + case 186: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1186 +//line sql.y:1197 { yyVAL.literal = nil } - case 186: + case 187: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1190 +//line sql.y:1201 { yyVAL.literal = NewStrLiteral(yyDollar[2].bytes) } - case 187: + case 188: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1196 +//line sql.y:1207 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 188: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1200 + case 189: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:1212 { - yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} + yyVAL.indexOptions = nil } - case 189: + case 190: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1216 + { + yyVAL.indexOptions = yyDollar[1].indexOptions + } + case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1206 +//line sql.y:1222 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 190: + case 192: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1210 +//line sql.y:1226 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 191: + case 193: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1216 +//line sql.y:1232 { - yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].colIdent.String())} + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} } - case 192: + case 194: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1220 +//line sql.y:1236 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } - case 193: + case 195: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1225 +//line sql.y:1241 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)} } - case 194: + case 196: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1245 + { + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} + } + case 197: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1231 +//line sql.y:1251 { yyVAL.str = "" } - case 195: + case 198: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1235 +//line sql.y:1255 { yyVAL.str = string(yyDollar[1].bytes) } - case 196: + case 199: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1241 +//line sql.y:1261 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } - case 197: + case 200: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1245 +//line sql.y:1265 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } - case 198: + case 201: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1249 +//line sql.y:1269 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } - case 199: + case 202: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1253 +//line sql.y:1273 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } - case 200: + case 203: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1257 +//line sql.y:1277 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } - case 201: + case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1263 +//line sql.y:1283 { yyVAL.str = string(yyDollar[1].bytes) } - case 202: + case 205: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1267 +//line sql.y:1287 { yyVAL.str = string(yyDollar[1].bytes) } - case 203: + case 206: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1271 +//line sql.y:1291 { yyVAL.str = string(yyDollar[1].bytes) } - case 204: + case 207: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1278 +//line sql.y:1298 { yyVAL.str = string(yyDollar[1].bytes) } - case 205: + case 208: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1282 +//line sql.y:1302 { yyVAL.str = string(yyDollar[1].bytes) } - case 206: + case 209: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1288 +//line sql.y:1308 { yyVAL.str = string(yyDollar[1].bytes) } - case 207: + case 210: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1292 +//line sql.y:1312 { yyVAL.str = string(yyDollar[1].bytes) } - case 208: + case 211: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1297 +//line sql.y:1317 { yyVAL.str = "" } - case 209: + case 212: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1301 +//line sql.y:1321 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 210: + case 213: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1307 +//line sql.y:1327 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 211: + case 214: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1311 +//line sql.y:1331 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 212: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1317 + case 215: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1337 { - yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal} + yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal, Direction: yyDollar[3].orderDirection} } - case 213: + case 216: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1323 +//line sql.y:1343 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 214: + case 217: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1327 +//line sql.y:1347 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 215: + case 218: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1333 +//line sql.y:1353 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 216: + case 219: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1337 +//line sql.y:1357 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 217: + case 220: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1343 +//line sql.y:1363 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } - case 218: + case 221: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1347 +//line sql.y:1367 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } - case 219: + case 222: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1351 +//line sql.y:1371 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } - case 220: + case 223: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1355 +//line sql.y:1375 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } - case 221: + case 224: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1359 +//line sql.y:1379 { yyVAL.constraintInfo = yyDollar[1].constraintInfo } - case 222: + case 225: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1365 +//line sql.y:1385 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } - case 223: + case 226: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1371 +//line sql.y:1391 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 224: + case 227: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1377 +//line sql.y:1397 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } - case 225: + case 228: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1383 +//line sql.y:1403 { yyVAL.ReferenceAction = Restrict } - case 226: + case 229: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1387 +//line sql.y:1407 { yyVAL.ReferenceAction = Cascade } - case 227: + case 230: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1391 +//line sql.y:1411 { yyVAL.ReferenceAction = NoAction } - case 228: + case 231: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1395 +//line sql.y:1415 { yyVAL.ReferenceAction = SetDefault } - case 229: + case 232: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1399 +//line sql.y:1419 { yyVAL.ReferenceAction = SetNull } - case 230: + case 233: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1404 +//line sql.y:1424 { yyVAL.boolean = true } - case 231: + case 234: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1408 +//line sql.y:1428 { yyVAL.boolean = true } - case 232: + case 235: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1412 +//line sql.y:1432 { yyVAL.boolean = false } - case 233: + case 236: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1417 +//line sql.y:1437 { yyVAL.str = "" } - case 234: + case 237: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1421 +//line sql.y:1441 { yyVAL.str = " " + string(yyDollar[1].str) } - case 235: + case 238: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1425 +//line sql.y:1445 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } - case 236: + case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1433 +//line sql.y:1453 { yyVAL.str = yyDollar[1].str } - case 237: + case 240: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1437 +//line sql.y:1457 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } - case 238: + case 241: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1441 +//line sql.y:1461 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } - case 239: + case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1447 +//line sql.y:1467 { yyVAL.str = yyDollar[1].colIdent.String() } - case 240: + case 243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1451 +//line sql.y:1471 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 241: + case 244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1455 +//line sql.y:1475 { yyVAL.str = string(yyDollar[1].bytes) } - case 242: + case 245: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1461 +//line sql.y:1481 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } - case 243: + case 246: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1465 +//line sql.y:1485 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } - case 244: + case 247: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1469 +//line sql.y:1489 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } - case 245: + case 248: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1473 +//line sql.y:1493 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} } - case 246: + case 249: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1478 +//line sql.y:1498 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } - case 247: + case 250: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1483 +//line sql.y:1503 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName.ToViewName()} } - case 248: + case 251: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1487 +//line sql.y:1507 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } - case 249: + case 252: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1491 +//line sql.y:1511 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } - case 250: + case 253: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1495 +//line sql.y:1515 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } - case 251: + case 254: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1499 +//line sql.y:1519 { yyVAL.statement = &DDL{ Action: CreateVindexDDLAction, @@ -5452,9 +5609,9 @@ yydefault: }, } } - case 252: + case 255: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1511 +//line sql.y:1531 { yyVAL.statement = &DDL{ Action: DropVindexDDLAction, @@ -5464,21 +5621,21 @@ yydefault: }, } } - case 253: + case 256: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1521 +//line sql.y:1541 { yyVAL.statement = &DDL{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 254: + case 257: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1525 +//line sql.y:1545 { yyVAL.statement = &DDL{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 255: + case 258: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1529 +//line sql.y:1549 { yyVAL.statement = &DDL{ Action: AddColVindexDDLAction, @@ -5491,9 +5648,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 256: + case 259: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1542 +//line sql.y:1562 { yyVAL.statement = &DDL{ Action: DropColVindexDDLAction, @@ -5503,15 +5660,15 @@ yydefault: }, } } - case 257: + case 260: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1552 +//line sql.y:1572 { yyVAL.statement = &DDL{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } - case 258: + case 261: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:1556 +//line sql.y:1576 { yyVAL.statement = &DDL{ Action: AddAutoIncDDLAction, @@ -5522,228 +5679,228 @@ yydefault: }, } } - case 273: + case 276: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1585 +//line sql.y:1605 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 274: + case 277: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1591 +//line sql.y:1611 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 275: + case 278: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1595 +//line sql.y:1615 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 276: + case 279: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1601 +//line sql.y:1621 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 277: + case 280: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1605 +//line sql.y:1625 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 278: + case 281: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1611 +//line sql.y:1631 { yyVAL.statement = yyDollar[3].ddl } - case 279: + case 282: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1617 +//line sql.y:1637 { yyVAL.ddl = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } - case 280: + case 283: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1621 +//line sql.y:1641 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) yyVAL.ddl.ToTables = append(yyVAL.ddl.ToTables, yyDollar[5].tableName) } - case 281: + case 284: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1629 +//line sql.y:1649 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } - case 282: + case 285: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1633 +//line sql.y:1653 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[5].tableName} } - case 283: + case 286: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1638 +//line sql.y:1658 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: yyDollar[3].boolean} } - case 284: + case 287: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1642 +//line sql.y:1662 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } - case 285: + case 288: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1646 +//line sql.y:1666 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } - case 286: + case 289: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1652 +//line sql.y:1672 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[3].tableName} } - case 287: + case 290: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1656 +//line sql.y:1676 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[2].tableName} } - case 288: + case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1661 +//line sql.y:1681 { yyVAL.statement = &OtherRead{} } - case 289: + case 292: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1667 +//line sql.y:1687 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } - case 290: + case 293: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1672 +//line sql.y:1692 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: CharsetStr, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } - case 291: + case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1677 +//line sql.y:1697 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } - case 292: + case 295: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1682 +//line sql.y:1702 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 293: + case 296: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1687 +//line sql.y:1707 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } - case 294: + case 297: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1691 +//line sql.y:1711 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 295: + case 298: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1695 +//line sql.y:1715 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } - case 296: + case 299: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1699 +//line sql.y:1719 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 297: + case 300: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1703 +//line sql.y:1723 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 298: + case 301: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1707 +//line sql.y:1727 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } - case 299: + case 302: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1712 +//line sql.y:1732 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } - case 300: + case 303: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1717 +//line sql.y:1737 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } - case 301: + case 304: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1722 +//line sql.y:1742 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 302: + case 305: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1726 +//line sql.y:1746 { showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{&ShowLegacy{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } - case 303: + case 306: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1731 +//line sql.y:1751 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 304: + case 307: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1735 +//line sql.y:1755 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 305: + case 308: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1739 +//line sql.y:1759 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } - case 306: + case 309: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1743 +//line sql.y:1763 { yyVAL.statement = &Show{&ShowTableStatus{DatabaseName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } - case 307: + case 310: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1747 +//line sql.y:1767 { yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].str, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } - case 308: + case 311: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1751 +//line sql.y:1771 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5753,866 +5910,866 @@ yydefault: yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } } - case 309: + case 312: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1761 +//line sql.y:1781 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } - case 310: + case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1765 +//line sql.y:1785 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 311: + case 314: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1769 +//line sql.y:1789 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr, Scope: ImplicitScope}} } - case 312: + case 315: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1773 +//line sql.y:1793 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } - case 313: + case 316: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1778 +//line sql.y:1798 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 314: + case 317: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1782 +//line sql.y:1802 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } - case 315: + case 318: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1786 +//line sql.y:1806 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } - case 316: + case 319: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1790 +//line sql.y:1810 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } - case 317: + case 320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1795 +//line sql.y:1815 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[2].str, ShowTablesOpt: showTablesOpt}} } - case 318: + case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1809 +//line sql.y:1829 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } - case 319: + case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1815 +//line sql.y:1835 { yyVAL.str = string(yyDollar[1].bytes) } - case 320: + case 323: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1819 +//line sql.y:1839 { yyVAL.str = string(yyDollar[1].bytes) } - case 321: + case 324: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1825 +//line sql.y:1845 { yyVAL.str = string(yyDollar[1].bytes) } - case 322: + case 325: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1829 +//line sql.y:1849 { yyVAL.str = string(yyDollar[1].bytes) } - case 323: + case 326: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1835 +//line sql.y:1855 { yyVAL.str = "" } - case 324: + case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1839 +//line sql.y:1859 { yyVAL.str = "extended " } - case 325: + case 328: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1845 +//line sql.y:1865 { yyVAL.str = "" } - case 326: + case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1849 +//line sql.y:1869 { yyVAL.str = "full " } - case 327: + case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1855 +//line sql.y:1875 { yyVAL.str = string(yyDollar[1].bytes) } - case 328: + case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1859 +//line sql.y:1879 { yyVAL.str = string(yyDollar[1].bytes) } - case 329: + case 332: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1865 +//line sql.y:1885 { yyVAL.str = "" } - case 330: + case 333: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1869 +//line sql.y:1889 { yyVAL.str = yyDollar[2].tableIdent.v } - case 331: + case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1873 +//line sql.y:1893 { yyVAL.str = yyDollar[2].tableIdent.v } - case 332: + case 335: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1879 +//line sql.y:1899 { yyVAL.showFilter = nil } - case 333: + case 336: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1883 +//line sql.y:1903 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 334: + case 337: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1887 +//line sql.y:1907 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 335: + case 338: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1893 +//line sql.y:1913 { yyVAL.showFilter = nil } - case 336: + case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1897 +//line sql.y:1917 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 337: + case 340: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1903 +//line sql.y:1923 { yyVAL.scope = ImplicitScope } - case 338: + case 341: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1907 +//line sql.y:1927 { yyVAL.scope = SessionScope } - case 339: + case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1911 +//line sql.y:1931 { yyVAL.scope = GlobalScope } - case 340: + case 343: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1917 +//line sql.y:1937 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 341: + case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1921 +//line sql.y:1941 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 342: + case 345: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1927 +//line sql.y:1947 { yyVAL.statement = &Begin{} } - case 343: + case 346: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1931 +//line sql.y:1951 { yyVAL.statement = &Begin{} } - case 344: + case 347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1937 +//line sql.y:1957 { yyVAL.statement = &Commit{} } - case 345: + case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1943 +//line sql.y:1963 { yyVAL.statement = &Rollback{} } - case 346: + case 349: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1947 +//line sql.y:1967 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } - case 347: + case 350: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1952 +//line sql.y:1972 { yyVAL.empty = struct{}{} } - case 348: + case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1954 +//line sql.y:1974 { yyVAL.empty = struct{}{} } - case 349: + case 352: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1957 +//line sql.y:1977 { yyVAL.empty = struct{}{} } - case 350: + case 353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1959 +//line sql.y:1979 { yyVAL.empty = struct{}{} } - case 351: + case 354: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1964 +//line sql.y:1984 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } - case 352: + case 355: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1970 +//line sql.y:1990 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } - case 353: + case 356: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1975 +//line sql.y:1995 { yyVAL.explainType = EmptyType } - case 354: + case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1979 +//line sql.y:1999 { yyVAL.explainType = JSONType } - case 355: + case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1983 +//line sql.y:2003 { yyVAL.explainType = TreeType } - case 356: + case 359: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1987 +//line sql.y:2007 { yyVAL.explainType = VitessType } - case 357: + case 360: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1991 +//line sql.y:2011 { yyVAL.explainType = TraditionalType } - case 358: + case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1995 +//line sql.y:2015 { yyVAL.explainType = AnalyzeType } - case 359: + case 362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2001 +//line sql.y:2021 { yyVAL.bytes = yyDollar[1].bytes } - case 360: + case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2005 +//line sql.y:2025 { yyVAL.bytes = yyDollar[1].bytes } - case 361: + case 364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2009 +//line sql.y:2029 { yyVAL.bytes = yyDollar[1].bytes } - case 362: + case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2015 +//line sql.y:2035 { yyVAL.statement = yyDollar[1].selStmt } - case 363: + case 366: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2019 +//line sql.y:2039 { yyVAL.statement = yyDollar[1].statement } - case 364: + case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2023 +//line sql.y:2043 { yyVAL.statement = yyDollar[1].statement } - case 365: + case 368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2027 +//line sql.y:2047 { yyVAL.statement = yyDollar[1].statement } - case 366: + case 369: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2032 +//line sql.y:2052 { yyVAL.str = "" } - case 367: + case 370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2036 +//line sql.y:2056 { yyVAL.str = "" } - case 368: + case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2040 +//line sql.y:2060 { yyVAL.str = "" } - case 369: + case 372: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2046 +//line sql.y:2066 { yyVAL.statement = &OtherRead{} } - case 370: + case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2050 +//line sql.y:2070 { yyVAL.statement = &Explain{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } - case 371: + case 374: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2056 +//line sql.y:2076 { yyVAL.statement = &OtherAdmin{} } - case 372: + case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2060 +//line sql.y:2080 { yyVAL.statement = &OtherAdmin{} } - case 373: + case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2064 +//line sql.y:2084 { yyVAL.statement = &OtherAdmin{} } - case 374: + case 377: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2068 +//line sql.y:2088 { yyVAL.statement = &OtherAdmin{} } - case 375: + case 378: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2074 +//line sql.y:2094 { yyVAL.statement = &DDL{Action: FlushDDLAction} } - case 376: + case 379: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2078 +//line sql.y:2098 { setAllowComments(yylex, true) } - case 377: + case 380: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2082 +//line sql.y:2102 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 378: + case 381: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2088 +//line sql.y:2108 { yyVAL.bytes2 = nil } - case 379: + case 382: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2092 +//line sql.y:2112 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 380: + case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2098 +//line sql.y:2118 { yyVAL.unionType = UnionBasic } - case 381: + case 384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2102 +//line sql.y:2122 { yyVAL.unionType = UnionAll } - case 382: + case 385: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2106 +//line sql.y:2126 { yyVAL.unionType = UnionDistinct } - case 383: + case 386: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2111 +//line sql.y:2131 { yyVAL.str = "" } - case 384: + case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2115 +//line sql.y:2135 { yyVAL.str = SQLNoCacheStr } - case 385: + case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2119 +//line sql.y:2139 { yyVAL.str = SQLCacheStr } - case 386: + case 389: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2124 +//line sql.y:2144 { yyVAL.boolean = false } - case 387: + case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2128 +//line sql.y:2148 { yyVAL.boolean = true } - case 388: + case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2132 +//line sql.y:2152 { yyVAL.boolean = true } - case 389: + case 392: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2137 +//line sql.y:2157 { yyVAL.selectExprs = nil } - case 390: + case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2141 +//line sql.y:2161 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 391: + case 394: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2146 +//line sql.y:2166 { yyVAL.strs = nil } - case 392: + case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2150 +//line sql.y:2170 { yyVAL.strs = []string{yyDollar[1].str} } - case 393: + case 396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2154 +//line sql.y:2174 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 394: + case 397: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2158 +//line sql.y:2178 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } - case 395: + case 398: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2162 +//line sql.y:2182 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } - case 396: + case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2168 +//line sql.y:2188 { yyVAL.str = SQLNoCacheStr } - case 397: + case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2172 +//line sql.y:2192 { yyVAL.str = SQLCacheStr } - case 398: + case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2176 +//line sql.y:2196 { yyVAL.str = DistinctStr } - case 399: + case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2180 +//line sql.y:2200 { yyVAL.str = DistinctStr } - case 400: + case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2184 +//line sql.y:2204 { yyVAL.str = StraightJoinHint } - case 401: + case 404: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2188 +//line sql.y:2208 { yyVAL.str = SQLCalcFoundRowsStr } - case 402: + case 405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2194 +//line sql.y:2214 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 403: + case 406: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2198 +//line sql.y:2218 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 404: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2204 +//line sql.y:2224 { yyVAL.selectExpr = &StarExpr{} } - case 405: + case 408: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2208 +//line sql.y:2228 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 406: + case 409: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2212 +//line sql.y:2232 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 407: + case 410: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2216 +//line sql.y:2236 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 408: + case 411: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2221 +//line sql.y:2241 { yyVAL.colIdent = ColIdent{} } - case 409: + case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2225 +//line sql.y:2245 { yyVAL.colIdent = yyDollar[1].colIdent } - case 410: + case 413: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2229 +//line sql.y:2249 { yyVAL.colIdent = yyDollar[2].colIdent } - case 412: + case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2236 +//line sql.y:2256 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 413: + case 416: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2241 +//line sql.y:2261 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 414: + case 417: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2245 +//line sql.y:2265 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 415: + case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2251 +//line sql.y:2271 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 416: + case 419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2255 +//line sql.y:2275 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 419: + case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2265 +//line sql.y:2285 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 420: + case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2269 +//line sql.y:2289 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 421: + case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2273 +//line sql.y:2293 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 422: + case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2279 +//line sql.y:2299 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 423: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2285 +//line sql.y:2305 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 424: + case 427: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2289 +//line sql.y:2309 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 425: + case 428: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2295 +//line sql.y:2315 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 426: + case 429: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2299 +//line sql.y:2319 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 427: + case 430: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2305 +//line sql.y:2325 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 428: + case 431: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2309 +//line sql.y:2329 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 429: + case 432: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2322 +//line sql.y:2342 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 430: + case 433: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2326 +//line sql.y:2346 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 431: + case 434: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2330 +//line sql.y:2350 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 432: + case 435: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2334 +//line sql.y:2354 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } - case 433: + case 436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2340 +//line sql.y:2360 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 434: + case 437: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2342 +//line sql.y:2362 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 435: + case 438: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2346 +//line sql.y:2366 { yyVAL.joinCondition = JoinCondition{} } - case 436: + case 439: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2348 +//line sql.y:2368 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 437: + case 440: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2352 +//line sql.y:2372 { yyVAL.joinCondition = JoinCondition{} } - case 438: + case 441: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2354 +//line sql.y:2374 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 439: + case 442: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2357 +//line sql.y:2377 { yyVAL.empty = struct{}{} } - case 440: + case 443: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2359 +//line sql.y:2379 { yyVAL.empty = struct{}{} } - case 441: + case 444: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2362 +//line sql.y:2382 { yyVAL.tableIdent = NewTableIdent("") } - case 442: + case 445: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2366 +//line sql.y:2386 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 443: + case 446: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2370 +//line sql.y:2390 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 445: + case 448: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2377 +//line sql.y:2397 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 446: + case 449: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2383 +//line sql.y:2403 { yyVAL.joinType = NormalJoinType } - case 447: + case 450: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2387 +//line sql.y:2407 { yyVAL.joinType = NormalJoinType } - case 448: + case 451: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2391 +//line sql.y:2411 { yyVAL.joinType = NormalJoinType } - case 449: + case 452: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2397 +//line sql.y:2417 { yyVAL.joinType = StraightJoinType } - case 450: + case 453: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2403 +//line sql.y:2423 { yyVAL.joinType = LeftJoinType } - case 451: + case 454: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2407 +//line sql.y:2427 { yyVAL.joinType = LeftJoinType } - case 452: + case 455: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2411 +//line sql.y:2431 { yyVAL.joinType = RightJoinType } - case 453: + case 456: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2415 +//line sql.y:2435 { yyVAL.joinType = RightJoinType } - case 454: + case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2421 +//line sql.y:2441 { yyVAL.joinType = NaturalJoinType } - case 455: + case 458: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2425 +//line sql.y:2445 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -6620,489 +6777,489 @@ yydefault: yyVAL.joinType = NaturalRightJoinType } } - case 456: + case 459: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2435 +//line sql.y:2455 { yyVAL.tableName = yyDollar[2].tableName } - case 457: + case 460: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2439 +//line sql.y:2459 { yyVAL.tableName = yyDollar[1].tableName } - case 458: + case 461: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2445 +//line sql.y:2465 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 459: + case 462: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2449 +//line sql.y:2469 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 460: + case 463: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2455 +//line sql.y:2475 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 461: + case 464: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2460 +//line sql.y:2480 { yyVAL.indexHints = nil } - case 462: + case 465: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2464 +//line sql.y:2484 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } - case 463: + case 466: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2468 +//line sql.y:2488 { yyVAL.indexHints = &IndexHints{Type: UseOp} } - case 464: + case 467: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2472 +//line sql.y:2492 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } - case 465: + case 468: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2476 +//line sql.y:2496 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } - case 466: + case 469: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2481 +//line sql.y:2501 { yyVAL.expr = nil } - case 467: + case 470: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2485 +//line sql.y:2505 { yyVAL.expr = yyDollar[2].expr } - case 468: + case 471: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2491 +//line sql.y:2511 { yyVAL.expr = yyDollar[1].expr } - case 469: + case 472: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2495 +//line sql.y:2515 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 470: + case 473: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2499 +//line sql.y:2519 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 471: + case 474: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2503 +//line sql.y:2523 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 472: + case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2507 +//line sql.y:2527 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 473: + case 476: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2511 +//line sql.y:2531 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } - case 474: + case 477: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2515 +//line sql.y:2535 { yyVAL.expr = yyDollar[1].expr } - case 475: + case 478: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2519 +//line sql.y:2539 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 476: + case 479: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2525 +//line sql.y:2545 { yyVAL.str = "" } - case 477: + case 480: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2529 +//line sql.y:2549 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 478: + case 481: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2535 +//line sql.y:2555 { yyVAL.boolVal = BoolVal(true) } - case 479: + case 482: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2539 +//line sql.y:2559 { yyVAL.boolVal = BoolVal(false) } - case 480: + case 483: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2545 +//line sql.y:2565 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } - case 481: + case 484: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2549 +//line sql.y:2569 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } - case 482: + case 485: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2553 +//line sql.y:2573 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } - case 483: + case 486: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2557 +//line sql.y:2577 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 484: + case 487: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2561 +//line sql.y:2581 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 485: + case 488: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2565 +//line sql.y:2585 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } - case 486: + case 489: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2569 +//line sql.y:2589 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } - case 487: + case 490: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2573 +//line sql.y:2593 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 488: + case 491: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2577 +//line sql.y:2597 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 489: + case 492: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2581 +//line sql.y:2601 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 490: + case 493: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2587 +//line sql.y:2607 { yyVAL.isExprOperator = IsNullOp } - case 491: + case 494: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2591 +//line sql.y:2611 { yyVAL.isExprOperator = IsNotNullOp } - case 492: + case 495: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2595 +//line sql.y:2615 { yyVAL.isExprOperator = IsTrueOp } - case 493: + case 496: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2599 +//line sql.y:2619 { yyVAL.isExprOperator = IsNotTrueOp } - case 494: + case 497: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2603 +//line sql.y:2623 { yyVAL.isExprOperator = IsFalseOp } - case 495: + case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2607 +//line sql.y:2627 { yyVAL.isExprOperator = IsNotFalseOp } - case 496: + case 499: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2613 +//line sql.y:2633 { yyVAL.comparisonExprOperator = EqualOp } - case 497: + case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2617 +//line sql.y:2637 { yyVAL.comparisonExprOperator = LessThanOp } - case 498: + case 501: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2621 +//line sql.y:2641 { yyVAL.comparisonExprOperator = GreaterThanOp } - case 499: + case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2625 +//line sql.y:2645 { yyVAL.comparisonExprOperator = LessEqualOp } - case 500: + case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2629 +//line sql.y:2649 { yyVAL.comparisonExprOperator = GreaterEqualOp } - case 501: + case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2633 +//line sql.y:2653 { yyVAL.comparisonExprOperator = NotEqualOp } - case 502: + case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2637 +//line sql.y:2657 { yyVAL.comparisonExprOperator = NullSafeEqualOp } - case 503: + case 506: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2642 +//line sql.y:2662 { yyVAL.expr = nil } - case 504: + case 507: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2646 +//line sql.y:2666 { yyVAL.expr = yyDollar[2].expr } - case 505: + case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2652 +//line sql.y:2672 { yyVAL.colTuple = yyDollar[1].valTuple } - case 506: + case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2656 +//line sql.y:2676 { yyVAL.colTuple = yyDollar[1].subquery } - case 507: + case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2660 +//line sql.y:2680 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 508: + case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2666 +//line sql.y:2686 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 509: + case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2672 +//line sql.y:2692 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 510: + case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2676 +//line sql.y:2696 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 511: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2682 +//line sql.y:2702 { yyVAL.expr = yyDollar[1].expr } - case 512: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2686 +//line sql.y:2706 { yyVAL.expr = yyDollar[1].boolVal } - case 513: + case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2690 +//line sql.y:2710 { yyVAL.expr = yyDollar[1].colName } - case 514: + case 517: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2694 +//line sql.y:2714 { yyVAL.expr = yyDollar[1].expr } - case 515: + case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2698 +//line sql.y:2718 { yyVAL.expr = yyDollar[1].subquery } - case 516: + case 519: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2702 +//line sql.y:2722 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } - case 517: + case 520: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2706 +//line sql.y:2726 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } - case 518: + case 521: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2710 +//line sql.y:2730 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } - case 519: + case 522: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2714 +//line sql.y:2734 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } - case 520: + case 523: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2718 +//line sql.y:2738 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } - case 521: + case 524: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2722 +//line sql.y:2742 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } - case 522: + case 525: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2726 +//line sql.y:2746 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } - case 523: + case 526: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2730 +//line sql.y:2750 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } - case 524: + case 527: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2734 +//line sql.y:2754 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 525: + case 528: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2738 +//line sql.y:2758 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } - case 526: + case 529: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2742 +//line sql.y:2762 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } - case 527: + case 530: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2746 +//line sql.y:2766 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } - case 528: + case 531: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2750 +//line sql.y:2770 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 529: + case 532: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2754 +//line sql.y:2774 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 530: + case 533: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2758 +//line sql.y:2778 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 531: + case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2762 +//line sql.y:2782 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } - case 532: + case 535: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2766 +//line sql.y:2786 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } - case 533: + case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2770 +//line sql.y:2790 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } - case 534: + case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2774 +//line sql.y:2794 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } - case 535: + case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2778 +//line sql.y:2798 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } - case 536: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2782 +//line sql.y:2802 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -7110,9 +7267,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusOp, Expr: yyDollar[2].expr} } } - case 537: + case 540: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2790 +//line sql.y:2810 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -7126,21 +7283,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].expr} } } - case 538: + case 541: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2804 +//line sql.y:2824 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } - case 539: + case 542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2808 +//line sql.y:2828 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } - case 540: + case 543: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2812 +//line sql.y:2832 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -7148,497 +7305,497 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 545: + case 548: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2830 +//line sql.y:2850 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 546: + case 549: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2834 +//line sql.y:2854 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 547: + case 550: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2838 +//line sql.y:2858 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 548: + case 551: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2842 +//line sql.y:2862 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 549: + case 552: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2852 +//line sql.y:2872 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 550: + case 553: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2856 +//line sql.y:2876 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 551: + case 554: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2860 +//line sql.y:2880 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 552: + case 555: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2864 +//line sql.y:2884 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 553: + case 556: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2868 +//line sql.y:2888 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 554: + case 557: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2872 +//line sql.y:2892 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 555: + case 558: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2876 +//line sql.y:2896 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 556: + case 559: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2880 +//line sql.y:2900 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 557: + case 560: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2884 +//line sql.y:2904 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 558: + case 561: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2888 +//line sql.y:2908 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } - case 559: + case 562: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2892 +//line sql.y:2912 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } - case 560: + case 563: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2896 +//line sql.y:2916 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 561: + case 564: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2900 +//line sql.y:2920 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 562: + case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2910 +//line sql.y:2930 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 563: + case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2914 +//line sql.y:2934 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 564: + case 567: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2918 +//line sql.y:2938 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 565: + case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2923 +//line sql.y:2943 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 566: + case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2928 +//line sql.y:2948 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 567: + case 570: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2933 +//line sql.y:2953 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 568: + case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2939 +//line sql.y:2959 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 569: + case 572: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2944 +//line sql.y:2964 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 570: + case 573: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2949 +//line sql.y:2969 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } - case 571: + case 574: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2953 +//line sql.y:2973 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } - case 572: + case 575: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2957 +//line sql.y:2977 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } - case 573: + case 576: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2962 +//line sql.y:2982 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } - case 574: + case 577: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2967 +//line sql.y:2987 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } - case 575: + case 578: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2972 +//line sql.y:2992 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } - case 576: + case 579: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2976 +//line sql.y:2996 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 577: + case 580: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2980 +//line sql.y:3000 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 580: + case 583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2990 +//line sql.y:3010 { yyVAL.expr = yyDollar[2].expr } - case 581: + case 584: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3000 +//line sql.y:3020 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 582: + case 585: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3004 +//line sql.y:3024 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 583: + case 586: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3008 +//line sql.y:3028 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } - case 584: + case 587: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3012 +//line sql.y:3032 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 585: + case 588: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3016 +//line sql.y:3036 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 586: + case 589: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3020 +//line sql.y:3040 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 587: + case 590: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3024 +//line sql.y:3044 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } - case 588: + case 591: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3030 +//line sql.y:3050 { yyVAL.matchExprOption = NoOption } - case 589: + case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3034 +//line sql.y:3054 { yyVAL.matchExprOption = BooleanModeOpt } - case 590: + case 593: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3038 +//line sql.y:3058 { yyVAL.matchExprOption = NaturalLanguageModeOpt } - case 591: + case 594: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3042 +//line sql.y:3062 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } - case 592: + case 595: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3046 +//line sql.y:3066 { yyVAL.matchExprOption = QueryExpansionOpt } - case 593: + case 596: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3052 +//line sql.y:3072 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 594: + case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3056 +//line sql.y:3076 { yyVAL.str = string(yyDollar[1].bytes) } - case 595: + case 598: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3062 +//line sql.y:3082 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 596: + case 599: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3066 +//line sql.y:3086 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } - case 597: + case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3070 +//line sql.y:3090 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } - case 598: + case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3074 +//line sql.y:3094 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 599: + case 602: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3078 +//line sql.y:3098 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 600: + case 603: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3082 +//line sql.y:3102 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 601: + case 604: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3088 +//line sql.y:3108 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 602: + case 605: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3092 +//line sql.y:3112 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 603: + case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3096 +//line sql.y:3116 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 604: + case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3100 +//line sql.y:3120 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 605: + case 608: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3104 +//line sql.y:3124 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } - case 606: + case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3108 +//line sql.y:3128 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 607: + case 610: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3112 +//line sql.y:3132 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 608: + case 611: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3117 +//line sql.y:3137 { yyVAL.expr = nil } - case 609: + case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3121 +//line sql.y:3141 { yyVAL.expr = yyDollar[1].expr } - case 610: + case 613: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3126 +//line sql.y:3146 { yyVAL.str = string("") } - case 611: + case 614: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3130 +//line sql.y:3150 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 612: + case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3136 +//line sql.y:3156 { yyVAL.whens = []*When{yyDollar[1].when} } - case 613: + case 616: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3140 +//line sql.y:3160 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 614: + case 617: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3146 +//line sql.y:3166 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 615: + case 618: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3151 +//line sql.y:3171 { yyVAL.expr = nil } - case 616: + case 619: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3155 +//line sql.y:3175 { yyVAL.expr = yyDollar[2].expr } - case 617: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3161 +//line sql.y:3181 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 618: + case 621: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3165 +//line sql.y:3185 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 619: + case 622: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3169 +//line sql.y:3189 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 620: + case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3175 +//line sql.y:3195 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 621: + case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3179 +//line sql.y:3199 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } - case 622: + case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3183 +//line sql.y:3203 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } - case 623: + case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3187 +//line sql.y:3207 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 624: + case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3191 +//line sql.y:3211 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } - case 625: + case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3195 +//line sql.y:3215 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } - case 626: + case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3199 +//line sql.y:3219 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 627: + case 630: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3203 +//line sql.y:3223 { yyVAL.expr = &NullVal{} } - case 628: + case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3209 +//line sql.y:3229 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7647,411 +7804,483 @@ yydefault: } yyVAL.expr = NewIntLiteral([]byte("1")) } - case 629: + case 632: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3218 +//line sql.y:3238 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } - case 630: + case 633: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3222 +//line sql.y:3242 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } - case 631: + case 634: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3227 +//line sql.y:3247 { yyVAL.exprs = nil } - case 632: + case 635: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3231 +//line sql.y:3251 { yyVAL.exprs = yyDollar[3].exprs } - case 633: + case 636: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3236 +//line sql.y:3256 { yyVAL.expr = nil } - case 634: + case 637: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3240 +//line sql.y:3260 { yyVAL.expr = yyDollar[2].expr } - case 635: + case 638: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3245 +//line sql.y:3265 { yyVAL.orderBy = nil } - case 636: + case 639: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3249 +//line sql.y:3269 { yyVAL.orderBy = yyDollar[3].orderBy } - case 637: + case 640: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3255 +//line sql.y:3275 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 638: + case 641: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3259 +//line sql.y:3279 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 639: + case 642: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3265 +//line sql.y:3285 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } - case 640: + case 643: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3270 +//line sql.y:3290 + { + yyVAL.orderDirection = AscOrder + } + case 644: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3294 { yyVAL.orderDirection = AscOrder } - case 641: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3274 + case 645: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3298 + { + yyVAL.orderDirection = DescOrder + } + case 646: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3303 + { + yyVAL.limit = nil + } + case 647: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3307 + { + yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} + } + case 648: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3311 + { + yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} + } + case 649: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3315 + { + yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} + } + case 650: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3320 + { + yyVAL.indexOptions = nil + } + case 651: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3324 + { + yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption} + } + case 652: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3328 + { + yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption} + } + case 653: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3332 + { + yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} + } + case 654: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3336 + { + yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} + } + case 655: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3343 + { + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} + } + case 656: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3347 { - yyVAL.orderDirection = AscOrder + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 642: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3278 + case 657: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3351 { - yyVAL.orderDirection = DescOrder + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 643: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3283 + case 658: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3355 { - yyVAL.limit = nil + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 644: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3287 + case 659: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3361 { - yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 645: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3291 + case 660: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3365 { - yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 646: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3295 + case 661: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3369 { - yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } - case 647: + case 662: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3300 +//line sql.y:3374 { yyVAL.lock = NoLock } - case 648: + case 663: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3304 +//line sql.y:3378 { yyVAL.lock = ForUpdateLock } - case 649: + case 664: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3308 +//line sql.y:3382 { yyVAL.lock = ShareModeLock } - case 650: + case 665: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3313 +//line sql.y:3387 { yyVAL.selectInto = nil } - case 651: + case 666: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3317 +//line sql.y:3391 { yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } - case 652: + case 667: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3321 +//line sql.y:3395 { yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } - case 653: + case 668: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3325 +//line sql.y:3399 { yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } - case 654: + case 669: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3330 +//line sql.y:3404 { yyVAL.str = "" } - case 655: + case 670: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3334 +//line sql.y:3408 { yyVAL.str = " format csv" + yyDollar[3].str } - case 656: + case 671: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3338 +//line sql.y:3412 { yyVAL.str = " format text" + yyDollar[3].str } - case 657: + case 672: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3343 +//line sql.y:3417 { yyVAL.str = "" } - case 658: + case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3347 +//line sql.y:3421 { yyVAL.str = " header" } - case 659: + case 674: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3352 +//line sql.y:3426 { yyVAL.str = "" } - case 660: + case 675: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3356 +//line sql.y:3430 { yyVAL.str = " manifest on" } - case 661: + case 676: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3360 +//line sql.y:3434 { yyVAL.str = " manifest off" } - case 662: + case 677: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3365 +//line sql.y:3439 { yyVAL.str = "" } - case 663: + case 678: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3369 +//line sql.y:3443 { yyVAL.str = " overwrite on" } - case 664: + case 679: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3373 +//line sql.y:3447 { yyVAL.str = " overwrite off" } - case 665: + case 680: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3379 +//line sql.y:3453 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 666: + case 681: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3384 +//line sql.y:3458 { yyVAL.str = "" } - case 667: + case 682: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3388 +//line sql.y:3462 { yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str } - case 668: + case 683: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3393 +//line sql.y:3467 { yyVAL.str = "" } - case 669: + case 684: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3397 +//line sql.y:3471 { yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" } - case 670: + case 685: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3402 +//line sql.y:3476 { yyVAL.str = "" } - case 671: + case 686: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3406 +//line sql.y:3480 { yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" } - case 672: + case 687: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3411 +//line sql.y:3485 { yyVAL.str = "" } - case 673: + case 688: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3415 +//line sql.y:3489 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str } - case 674: + case 689: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3420 +//line sql.y:3494 { yyVAL.str = "" } - case 675: + case 690: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3424 +//line sql.y:3498 { yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" } - case 676: + case 691: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3429 +//line sql.y:3503 { yyVAL.str = "" } - case 677: + case 692: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3433 +//line sql.y:3507 { yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" } - case 678: + case 693: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3438 +//line sql.y:3512 { yyVAL.str = "" } - case 679: + case 694: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3442 +//line sql.y:3516 { yyVAL.str = " optionally" } - case 680: + case 695: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3455 +//line sql.y:3529 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 681: + case 696: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3459 +//line sql.y:3533 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 682: + case 697: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3463 +//line sql.y:3537 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 683: + case 698: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3467 +//line sql.y:3541 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } - case 684: + case 699: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3471 +//line sql.y:3545 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 685: + case 700: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3477 +//line sql.y:3551 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 686: + case 701: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3481 +//line sql.y:3555 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 687: + case 702: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3485 +//line sql.y:3559 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 688: + case 703: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3489 +//line sql.y:3563 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 689: + case 704: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3494 +//line sql.y:3568 { yyVAL.updateExprs = nil } - case 690: + case 705: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3498 +//line sql.y:3572 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 691: + case 706: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3504 +//line sql.y:3578 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 692: + case 707: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3508 +//line sql.y:3582 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 693: + case 708: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3514 +//line sql.y:3588 { yyVAL.valTuple = yyDollar[1].valTuple } - case 694: + case 709: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3518 +//line sql.y:3592 { yyVAL.valTuple = ValTuple{} } - case 695: + case 710: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3524 +//line sql.y:3598 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 696: + case 711: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3530 +//line sql.y:3604 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -8059,342 +8288,342 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 697: + case 712: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3540 +//line sql.y:3614 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 698: + case 713: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3544 +//line sql.y:3618 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 699: + case 714: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3550 +//line sql.y:3624 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 700: + case 715: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3556 +//line sql.y:3630 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 701: + case 716: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3560 +//line sql.y:3634 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 702: + case 717: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3566 +//line sql.y:3640 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } - case 703: + case 718: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3570 +//line sql.y:3644 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } - case 704: + case 719: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3574 +//line sql.y:3648 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } - case 705: + case 720: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3578 +//line sql.y:3652 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } - case 706: + case 721: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3582 +//line sql.y:3656 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } - case 708: + case 723: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3590 +//line sql.y:3664 { yyVAL.bytes = []byte("charset") } - case 710: + case 725: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3597 +//line sql.y:3671 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } - case 711: + case 726: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3601 +//line sql.y:3675 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 712: + case 727: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3605 +//line sql.y:3679 { yyVAL.expr = &Default{} } - case 715: + case 730: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3614 +//line sql.y:3688 { yyVAL.boolean = false } - case 716: + case 731: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3616 +//line sql.y:3690 { yyVAL.boolean = true } - case 717: + case 732: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3619 +//line sql.y:3693 { yyVAL.boolean = false } - case 718: + case 733: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3621 +//line sql.y:3695 { yyVAL.boolean = true } - case 719: + case 734: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3624 +//line sql.y:3698 { yyVAL.ignore = false } - case 720: + case 735: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3626 +//line sql.y:3700 { yyVAL.ignore = true } - case 721: + case 736: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3630 +//line sql.y:3704 { yyVAL.empty = struct{}{} } - case 722: + case 737: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3632 +//line sql.y:3706 { yyVAL.empty = struct{}{} } - case 723: + case 738: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3634 +//line sql.y:3708 { yyVAL.empty = struct{}{} } - case 724: + case 739: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3636 +//line sql.y:3710 { yyVAL.empty = struct{}{} } - case 725: + case 740: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3638 +//line sql.y:3712 { yyVAL.empty = struct{}{} } - case 726: + case 741: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3640 +//line sql.y:3714 { yyVAL.empty = struct{}{} } - case 727: + case 742: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3642 +//line sql.y:3716 { yyVAL.empty = struct{}{} } - case 728: + case 743: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3644 +//line sql.y:3718 { yyVAL.empty = struct{}{} } - case 729: + case 744: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3646 +//line sql.y:3720 { yyVAL.empty = struct{}{} } - case 730: + case 745: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3648 +//line sql.y:3722 { yyVAL.empty = struct{}{} } - case 731: + case 746: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3652 +//line sql.y:3726 { yyVAL.OnlineDDLHint = &OnlineDDLHint{} } - case 732: + case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3656 +//line sql.y:3730 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), } } - case 733: + case 748: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3662 +//line sql.y:3736 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), Options: string(yyDollar[3].bytes), } } - case 734: + case 749: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3670 +//line sql.y:3744 { yyVAL.empty = struct{}{} } - case 735: + case 750: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3672 +//line sql.y:3746 { yyVAL.empty = struct{}{} } - case 736: + case 751: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3674 +//line sql.y:3748 { yyVAL.empty = struct{}{} } - case 737: + case 752: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3678 +//line sql.y:3752 { yyVAL.empty = struct{}{} } - case 738: + case 753: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3680 +//line sql.y:3754 { yyVAL.empty = struct{}{} } - case 739: + case 754: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3683 +//line sql.y:3757 { - yyVAL.empty = struct{}{} + yyVAL.colIdent = ColIdent{} } - case 740: + case 755: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3685 +//line sql.y:3759 { - yyVAL.empty = struct{}{} + yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 741: + case 756: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3687 +//line sql.y:3761 { - yyVAL.empty = struct{}{} + yyVAL.colIdent = yyDollar[1].colIdent } - case 742: + case 757: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3690 +//line sql.y:3764 { yyVAL.colIdent = ColIdent{} } - case 743: + case 758: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3692 +//line sql.y:3766 { yyVAL.colIdent = yyDollar[2].colIdent } - case 744: + case 759: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3696 +//line sql.y:3770 { yyVAL.colIdent = yyDollar[1].colIdent } - case 745: + case 760: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3700 +//line sql.y:3774 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 747: + case 762: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3707 +//line sql.y:3781 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 748: + case 763: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3713 +//line sql.y:3787 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 749: + case 764: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3717 +//line sql.y:3791 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 751: + case 766: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3724 +//line sql.y:3798 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1065: + case 1087: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4063 +//line sql.y:4144 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1066: + case 1088: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4072 +//line sql.y:4153 { decNesting(yylex) } - case 1067: + case 1089: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4077 +//line sql.y:4158 { skipToEnd(yylex) } - case 1068: + case 1090: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4082 +//line sql.y:4163 { skipToEnd(yylex) } - case 1069: + case 1091: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4086 +//line sql.y:4167 { skipToEnd(yylex) } - case 1070: + case 1092: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4090 +//line sql.y:4171 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 407aad9b438..060db1b12c0 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -25,7 +25,7 @@ func setAllowComments(yylex interface{}, allow bool) { yylex.(*Tokenizer).AllowComments = allow } -func setDDL(yylex interface{}, ddl *DDL) { +func setDDL(yylex interface{}, ddl DDLStatement) { yylex.(*Tokenizer).partialDDL = ddl } @@ -132,20 +132,21 @@ func skipToEnd(yylex interface{}) { orderDirection OrderDirection explainType ExplainType selectInto *SelectInto + createIndex *CreateIndex } %token LEX_ERROR %left UNION %token SELECT STREAM VSTREAM INSERT UPDATE DELETE FROM WHERE GROUP HAVING ORDER BY LIMIT OFFSET FOR %token ALL DISTINCT AS EXISTS ASC DESC INTO DUPLICATE KEY DEFAULT SET LOCK UNLOCK KEYS DO -%token DISTINCTROW +%token DISTINCTROW PARSER %token OUTFILE S3 DATA LOAD LINES TERMINATED ESCAPED ENCLOSED %token DUMPFILE CSV HEADER MANIFEST OVERWRITE STARTING OPTIONALLY %token VALUES LAST_INSERT_ID %token NEXT VALUE SHARE MODE %token SQL_NO_CACHE SQL_CACHE SQL_CALC_FOUND_ROWS %left JOIN STRAIGHT_JOIN LEFT RIGHT INNER OUTER CROSS NATURAL USE FORCE -%left ON USING +%left ON USING INPLACE COPY ALGORITHM NONE SHARED EXCLUSIVE %token '(' ',' ')' %token ID AT_ID AT_AT_ID HEX STRING INTEGRAL FLOAT HEXNUM VALUE_ARG LIST_ARG COMMENT COMMENT_KEYWORD BIT_LITERAL %token NULL TRUE FALSE OFF @@ -241,6 +242,7 @@ func skipToEnd(yylex interface{}) { %type stream_statement vstream_statement insert_statement update_statement delete_statement set_statement set_transaction_statement %type create_statement alter_statement rename_statement drop_statement truncate_statement flush_statement do_statement %type create_table_prefix rename_list +%type create_index_prefix %type analyze_statement show_statement use_statement other_statement %type begin_statement commit_statement rollback_statement savepoint_statement release_statement load_statement %type comment_opt comment_list @@ -312,9 +314,9 @@ func skipToEnd(yylex interface{}) { %type full_opt from_database_opt tables_or_processlist columns_or_fields extended_opt %type like_or_where_opt like_opt %type exists_opt not_exists_opt null_opt enforced_opt -%type non_add_drop_or_rename_operation to_opt index_opt constraint_opt +%type non_add_drop_or_rename_operation to_opt index_opt %type reserved_keyword non_reserved_keyword -%type sql_id reserved_sql_id col_alias as_ci_opt using_opt +%type sql_id reserved_sql_id col_alias as_ci_opt using_opt constraint_opt %type charset_value %type table_id reserved_table_id table_alias as_opt_id %type as_opt work_opt savepoint_opt @@ -343,8 +345,8 @@ func skipToEnd(yylex interface{}) { %type index_info %type index_column %type index_column_list -%type index_option -%type index_option_list +%type index_option lock_index algorithm_index +%type index_option_list index_option_list_opt algorithm_lock_opt %type constraint_info check_constraint_info %type partition_definitions %type partition_definition @@ -687,10 +689,11 @@ create_statement: $1.OptLike = $2 $$ = $1 } -| CREATE constraint_opt INDEX id_or_var using_opt ON table_name ddl_skip_to_end +| create_index_prefix '(' index_column_list ')' index_option_list_opt algorithm_lock_opt { - // Change this to an alter statement - $$ = &DDL{Action: AlterDDLAction, Table: $7} + $1.Columns = $3 + $1.Options = append($5,$6...) + $$ = $1 } | CREATE VIEW table_name ddl_skip_to_end { @@ -758,6 +761,14 @@ create_table_prefix: setDDL(yylex, $$) } +create_index_prefix: + CREATE constraint_opt INDEX id_or_var using_opt ON table_name + { + $$ = &CreateIndex{Constraint: $2, Name: $4, IndexType: $5, Table: $7} + setDDL(yylex, $$) + } + + table_spec: '(' table_column_list ')' table_option_list { @@ -1192,13 +1203,18 @@ column_comment_opt: } index_definition: - index_info '(' index_column_list ')' index_option_list + index_info '(' index_column_list ')' index_option_list_opt { $$ = &IndexDefinition{Info: $1, Columns: $3, Options: $5} } -| index_info '(' index_column_list ')' + +index_option_list_opt: + { + $$ = nil + } +| index_option_list { - $$ = &IndexDefinition{Info: $1, Columns: $3} + $$ = $1 } index_option_list: @@ -1214,7 +1230,7 @@ index_option_list: index_option: USING id_or_var { - $$ = &IndexOption{Name: string($1), Using: string($2.String())} + $$ = &IndexOption{Name: string($1), String: string($2.String())} } | KEY_BLOCK_SIZE equal_opt INTEGRAL { @@ -1225,6 +1241,10 @@ index_option: { $$ = &IndexOption{Name: string($1), Value: NewStrLiteral($2)} } +| WITH PARSER STRING + { + $$ = &IndexOption{Name: string($1) + " " + string($2), Value: NewStrLiteral($3)} + } equal_opt: /* empty */ @@ -1313,9 +1333,9 @@ index_column_list: } index_column: - sql_id length_opt + sql_id length_opt asc_desc_opt { - $$ = &IndexColumn{Column: $1, Length: $2} + $$ = &IndexColumn{Column: $1, Length: $2, Direction: $3} } constraint_definition: @@ -3296,6 +3316,60 @@ limit_opt: $$ = &Limit{Offset: $4, Rowcount: $2} } +algorithm_lock_opt: + { + $$ = nil + } +| lock_index algorithm_index + { + $$ = []*IndexOption{$1,$2} + } +| algorithm_index lock_index + { + $$ = []*IndexOption{$1,$2} + } +| algorithm_index + { + $$ = []*IndexOption{$1} + } +| lock_index + { + $$ = []*IndexOption{$1} + } + + +lock_index: + LOCK equal_opt DEFAULT + { + $$ = &IndexOption{Name: string($1), String: string($3)} + } +| LOCK equal_opt NONE + { + $$ = &IndexOption{Name: string($1), String: string($3)} + } +| LOCK equal_opt SHARED + { + $$ = &IndexOption{Name: string($1), String: string($3)} + } +| LOCK equal_opt EXCLUSIVE + { + $$ = &IndexOption{Name: string($1), String: string($3)} + } + +algorithm_index: + ALGORITHM equal_opt DEFAULT + { + $$ = &IndexOption{Name: string($1), String: string($3)} + } +| ALGORITHM equal_opt INPLACE + { + $$ = &IndexOption{Name: string($1), String: string($3)} + } +| ALGORITHM equal_opt COPY + { + $$ = &IndexOption{Name: string($1), String: string($3)} + } + lock_opt: { $$ = NoLock @@ -3680,11 +3754,11 @@ index_opt: { $$ = struct{}{} } constraint_opt: - { $$ = struct{}{} } + { $$ = ColIdent{} } | UNIQUE - { $$ = struct{}{} } + { $$ = NewColIdent(string($1)) } | sql_id - { $$ = struct{}{} } + { $$ = $1 } using_opt: { $$ = ColIdent{} } @@ -3868,6 +3942,7 @@ non_reserved_keyword: | ACTION | ACTIVE | ADMIN +| ALGORITHM | BEGIN | BIGINT | BIT @@ -3887,6 +3962,7 @@ non_reserved_keyword: | COMMIT | COMMITTED | COMPONENT +| COPY | CSV | DATA | DATE @@ -3903,6 +3979,7 @@ non_reserved_keyword: | ENUM | ESCAPED | EXCLUDE +| EXCLUSIVE | EXPANSION | EXTENDED | FLOAT_TYPE @@ -3921,6 +3998,7 @@ non_reserved_keyword: | HISTOGRAM | HISTORY | INACTIVE +| INPLACE | INT | INTEGER | INVISIBLE @@ -3958,6 +4036,7 @@ non_reserved_keyword: | NETWORK_NAMESPACE | NOWAIT | NO +| NONE | NULLS | NUMERIC | OFFSET @@ -3971,6 +4050,7 @@ non_reserved_keyword: | OPTIMIZE | OTHERS | OVERWRITE +| PARSER | PARTITION | PATH | PERSIST @@ -4011,6 +4091,7 @@ non_reserved_keyword: | SESSION | SERIALIZABLE | SHARE +| SHARED | SIGNED | SKIP | SMALLINT diff --git a/go/vt/sqlparser/token.go b/go/vt/sqlparser/token.go index be9cd17e428..df63a4381cb 100644 --- a/go/vt/sqlparser/token.go +++ b/go/vt/sqlparser/token.go @@ -44,7 +44,7 @@ type Tokenizer struct { LastError error posVarIndex int ParseTree Statement - partialDDL *DDL + partialDDL DDLStatement nesting int multi bool specialComment *Tokenizer @@ -88,6 +88,7 @@ var keywords = map[string]int{ "action": ACTION, "add": ADD, "against": AGAINST, + "algorithm": ALGORITHM, "all": ALL, "alter": ALTER, "analyze": ANALYZE, @@ -131,6 +132,7 @@ var keywords = map[string]int{ "constraint": CONSTRAINT, "continue": UNUSED, "convert": CONVERT, + "copy": COPY, "substr": SUBSTR, "substring": SUBSTRING, "create": CREATE, @@ -176,6 +178,7 @@ var keywords = map[string]int{ "enum": ENUM, "escape": ESCAPE, "escaped": ESCAPED, + "exclusive": EXCLUSIVE, "exists": EXISTS, "exit": UNUSED, "explain": EXPLAIN, @@ -217,6 +220,7 @@ var keywords = map[string]int{ "infile": UNUSED, "inout": UNUSED, "inner": INNER, + "inplace": INPLACE, "insensitive": UNUSED, "insert": INSERT, "int": INT, @@ -281,6 +285,7 @@ var keywords = map[string]int{ "nchar": NCHAR, "next": NEXT, "no": NO, + "none": NONE, "not": NOT, "no_write_to_binlog": UNUSED, "null": NULL, @@ -299,6 +304,7 @@ var keywords = map[string]int{ "outer": OUTER, "outfile": OUTFILE, "overwrite": OVERWRITE, + "parser": PARSER, "partition": PARTITION, "plugins": PLUGINS, "point": POINT, @@ -342,6 +348,7 @@ var keywords = map[string]int{ "session": SESSION, "set": SET, "share": SHARE, + "shared": SHARED, "show": SHOW, "signal": UNUSED, "signed": SIGNED, From 008b88b1f7cd98aea77f5a676bfe8e0833fdb7b3 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Fri, 13 Nov 2020 14:31:51 +0530 Subject: [PATCH 03/11] Add OnlineHints to Parsing and convert fields to strings Signed-off-by: GuptaManan100 --- go/vt/sqlparser/analyzer.go | 20 +- go/vt/sqlparser/ast.go | 50 +- go/vt/sqlparser/parse_test.go | 32 +- go/vt/sqlparser/rewriter.go | 10 - go/vt/sqlparser/sql.go | 6280 ++++++++++++++++----------------- go/vt/sqlparser/sql.y | 23 +- 6 files changed, 3199 insertions(+), 3216 deletions(-) diff --git a/go/vt/sqlparser/analyzer.go b/go/vt/sqlparser/analyzer.go index 54dd0a1366e..7925f469e86 100644 --- a/go/vt/sqlparser/analyzer.go +++ b/go/vt/sqlparser/analyzer.go @@ -256,21 +256,21 @@ func IsDMLStatement(stmt Statement) bool { } //IsVschemaDDL returns true if the query is an Vschema alter ddl. -func IsVschemaDDL(ddl *DDL) bool { - switch ddl.Action { - case CreateVindexDDLAction, DropVindexDDLAction, AddVschemaTableDDLAction, DropVschemaTableDDLAction, AddColVindexDDLAction, DropColVindexDDLAction, AddSequenceDDLAction, AddAutoIncDDLAction: - return true +func IsVschemaDDL(ddl DDLStatement) bool { + switch ddlStatement := ddl.(type) { + case *DDL: + switch ddlStatement.Action { + case CreateVindexDDLAction, DropVindexDDLAction, AddVschemaTableDDLAction, DropVschemaTableDDLAction, AddColVindexDDLAction, DropColVindexDDLAction, AddSequenceDDLAction, AddAutoIncDDLAction: + return true + } } return false } // IsOnlineSchemaDDL returns true if the query is an online schema change DDL -func IsOnlineSchemaDDL(ddl *DDL, sql string) bool { - switch ddl.Action { - case AlterDDLAction: - if ddl.OnlineHint != nil { - return ddl.OnlineHint.Strategy != "" - } +func IsOnlineSchemaDDL(ddl DDLStatement) bool { + if ddl.GetOnlineHint() != nil { + return ddl.GetOnlineHint().Strategy != "" } return false } diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index ef189171314..9478d45b14e 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -57,6 +57,8 @@ type ( // DDLStatement represents any DDL Statement DDLStatement interface { iDDLStatement() + GetOnlineHint() *OnlineDDLHint + IsFullyParsed() bool Statement } @@ -257,12 +259,14 @@ type ( // CreateIndex represents a CREATE INDEX query CreateIndex struct { - Constraint ColIdent - Name ColIdent - IndexType ColIdent - Table TableName - Columns []*IndexColumn - Options []*IndexOption + Constraint string + Name ColIdent + OnlineHint *OnlineDDLHint + IndexType string + Table TableName + Columns []*IndexColumn + Options []*IndexOption + FullyParsed bool } // DDLAction is an enum for DDL.Action @@ -363,6 +367,26 @@ func (*CreateIndex) iStatement() {} func (*DDL) iDDLStatement() {} func (*CreateIndex) iDDLStatement() {} +// IsFullyParsed implements the DDLStatement interface +func (*DDL) IsFullyParsed() bool { + return false +} + +// IsFullyParsed implements the DDLStatement interface +func (node *CreateIndex) IsFullyParsed() bool { + return node.FullyParsed +} + +// GetOnlineHint implements the DDLStatement interface +func (node *DDL) GetOnlineHint() *OnlineDDLHint { + return node.OnlineHint +} + +// GetOnlineHint implements the DDLStatement interface +func (node *CreateIndex) GetOnlineHint() *OnlineDDLHint { + return node.OnlineHint +} + // ParenSelect can actually not be a top level statement, // but we have to allow it because it's a requirement // of SelectStatement. @@ -2178,12 +2202,12 @@ func (node *SelectInto) Format(buf *TrackedBuffer) { // Format formats the node. func (node *CreateIndex) Format(buf *TrackedBuffer) { buf.WriteString("create") - if node.Constraint.String() != "" { - buf.astPrintf(node, " %v", node.Constraint) + if node.Constraint != "" { + buf.WriteString(" " + node.Constraint) } buf.astPrintf(node, " index %v", node.Name) - if node.IndexType.String() != "" { - buf.astPrintf(node, " using %v", node.IndexType) + if node.IndexType != "" { + buf.WriteString(" using " + node.IndexType) } buf.astPrintf(node, " on %v (", node.Table) for i, col := range node.Columns { @@ -2196,14 +2220,14 @@ func (node *CreateIndex) Format(buf *TrackedBuffer) { buf.astPrintf(node, "(%v)", col.Length) } if col.Direction == DescOrder { - buf.astPrintf(node, " desc") + buf.WriteString(" desc") } } buf.astPrintf(node, ")") for _, opt := range node.Options { - buf.astPrintf(node, " %s", strings.ToLower(opt.Name)) + buf.WriteString(" " + strings.ToLower(opt.Name)) if opt.String != "" { - buf.astPrintf(node, " %s", opt.String) + buf.WriteString(" " + opt.String) } else { buf.astPrintf(node, " %v", opt.Value) } diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 7f3e35d190a..f51d2a7587b 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -32,8 +32,9 @@ import ( var ( validSQL = []struct { - input string - output string + input string + output string + partialDDL bool }{{ input: "select 1", output: "select 1 from dual", @@ -1144,21 +1145,22 @@ var ( }, { input: "create index a on b (col1)", }, { - input: "create unique index a on b (col1)", - output: "create `unique` index a on b (col1)", + input: "create unique index a on b (col1)", + }, { + input: "create unique index a using foo on b (col1 desc)", }, { - input: "create `unique` index a using foo on b (col1 desc)", + input: "create with gh-ost unique index a using foo on b (col1 desc)", + output: "create unique index a using foo on b (col1 desc)", }, { - input: "create fulltext index a using foo on b (col1)", - output: "create `fulltext` index a using foo on b (col1)", + input: "create fulltext index a using foo on b (col1)", }, { - input: "create spatial index a using foo on b (col1)", - output: "create `spatial` index a using foo on b (col1)", + input: "create spatial index a using foo on b (col1)", }, { input: "create index a on b (col1) using btree key_block_size 12 with parser 'a' comment 'string' algorithm inplace lock none", }, { - input: "create index a on b ((col1 + col2), (col1*col2))", - output: "create index a on b ()", + input: "create index a on b ((col1 + col2), (col1*col2))", + output: "create index a on b ()", + partialDDL: true, }, { input: "create view a", output: "create table a", @@ -1760,6 +1762,14 @@ func TestValid(t *testing.T) { if tcase.output != out { t.Errorf("Parsing failed. \nExpected/Got:\n%s\n%s", tcase.output, out) } + + // CREATE INDEX currently only has 5.7 specifications. + // For mysql 8.0 syntax, the query is not entirely parsed. + // Add more structs as we go on adding full parsing support for DDL constructs for 5.7 syntax. + switch x := tree.(type) { + case *CreateIndex: + assert.Equal(t, !tcase.partialDDL, x.IsFullyParsed()) + } // This test just exercises the tree walking functionality. // There's no way automated way to verify that a node calls // all its children. But we can examine code coverage and diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go index f2200637856..2c65fdcc748 100644 --- a/go/vt/sqlparser/rewriter.go +++ b/go/vt/sqlparser/rewriter.go @@ -168,14 +168,6 @@ func replaceConvertUsingExprExpr(newNode, parent SQLNode) { parent.(*ConvertUsingExpr).Expr = newNode.(Expr) } -func replaceCreateIndexConstraint(newNode, parent SQLNode) { - parent.(*CreateIndex).Constraint = newNode.(ColIdent) -} - -func replaceCreateIndexIndexType(newNode, parent SQLNode) { - parent.(*CreateIndex).IndexType = newNode.(ColIdent) -} - func replaceCreateIndexName(newNode, parent SQLNode) { parent.(*CreateIndex).Name = newNode.(ColIdent) } @@ -1032,8 +1024,6 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { a.apply(node, n.Expr, replaceConvertUsingExprExpr) case *CreateIndex: - a.apply(node, n.Constraint, replaceCreateIndexConstraint) - a.apply(node, n.IndexType, replaceCreateIndexIndexType) a.apply(node, n.Name, replaceCreateIndexName) a.apply(node, n.Table, replaceCreateIndexTable) diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 4f562bdbd14..8f9dd049fd6 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -912,34 +912,34 @@ var yyExca = [...]int{ -1, 75, 55, 386, -2, 394, - -1, 425, - 143, 763, - -2, 759, - -1, 426, + -1, 423, 143, 764, -2, 760, - -1, 441, + -1, 424, + 143, 765, + -2, 761, + -1, 439, 55, 387, -2, 399, - -1, 442, + -1, 440, 55, 388, -2, 400, - -1, 462, - 111, 1037, + -1, 460, + 111, 1038, -2, 76, - -1, 463, - 111, 942, + -1, 461, + 111, 943, -2, 77, - -1, 468, - 111, 902, + -1, 466, + 111, 903, -2, 722, - -1, 470, - 111, 979, + -1, 468, + 111, 980, -2, 724, - -1, 988, - 143, 766, - -2, 762, - -1, 1075, + -1, 989, + 143, 767, + -2, 763, + -1, 1076, 73, 58, 81, 58, -2, 62, @@ -950,2050 +950,1997 @@ var yyExca = [...]int{ 32, 638, 82, 638, -2, 425, - -1, 1658, + -1, 1660, 45, 693, -2, 691, } const yyPrivate = 57344 -const yyLast = 20197 +const yyLast = 19651 var yyAct = [...]int{ - 425, 1748, 1738, 1507, 1658, 1380, 1675, 1706, 1097, 1606, - 1269, 1589, 1289, 1147, 731, 1437, 651, 771, 1270, 369, - 1434, 355, 1343, 1438, 1141, 1569, 384, 778, 1342, 1106, - 1348, 1096, 398, 1069, 1319, 975, 600, 1444, 1093, 1256, - 1450, 96, 597, 1066, 1399, 315, 467, 338, 315, 928, - 74, 3, 909, 96, 982, 315, 1205, 72, 1357, 1149, - 1335, 1110, 594, 816, 1048, 809, 1071, 1055, 804, 443, - 798, 428, 1008, 781, 952, 360, 632, 776, 356, 799, - 1126, 359, 29, 96, 371, 593, 96, 315, 96, 315, - 1031, 815, 601, 788, 1137, 923, 367, 75, 70, 464, - 938, 813, 641, 434, 744, 69, 881, 1077, 806, 1655, - 8, 7, 745, 313, 6, 1494, 1579, 1608, 1741, 621, - 1703, 303, 1736, 351, 301, 1683, 1150, 1729, 1508, 1702, - 77, 78, 79, 80, 81, 82, 1416, 1682, 1537, 604, - 1468, 31, 32, 33, 63, 35, 36, 1152, 1469, 1470, - 1087, 449, 453, 429, 817, 599, 818, 603, 1173, 31, - 664, 67, 63, 35, 36, 358, 37, 57, 58, 357, - 60, 1327, 1172, 98, 99, 100, 61, 311, 307, 308, - 309, 1088, 1089, 1120, 461, 1572, 1649, 693, 692, 702, - 703, 695, 696, 697, 698, 699, 700, 701, 694, 657, - 658, 704, 1685, 1382, 410, 47, 416, 417, 414, 415, - 413, 412, 411, 1127, 1528, 62, 985, 1526, 1151, 348, - 418, 419, 663, 304, 937, 98, 99, 100, 1306, 350, - 346, 1305, 897, 62, 1307, 659, 1171, 652, 653, 660, - 657, 658, 662, 654, 638, 1384, 640, 894, 1735, 302, - 896, 1676, 1728, 939, 940, 941, 98, 99, 100, 1383, - 1379, 1049, 1668, 1752, 1145, 647, 622, 1145, 1756, 1475, - 305, 596, 1145, 898, 606, 1290, 1292, 455, 637, 639, - 1400, 40, 41, 43, 42, 45, 895, 59, 1632, 1168, - 1165, 1166, 1114, 1164, 1385, 902, 667, 1114, 617, 610, - 884, 1461, 315, 612, 613, 310, 1460, 315, 318, 623, - 46, 66, 65, 315, 1459, 55, 56, 44, 609, 315, - 630, 1402, 306, 636, 1662, 1185, 1175, 1178, 1184, 1224, - 96, 48, 49, 1553, 50, 51, 52, 53, 1376, 96, - 1467, 1221, 716, 717, 1378, 1261, 98, 99, 100, 1493, - 1234, 96, 96, 1367, 1213, 1153, 1083, 792, 1404, 849, - 1408, 729, 1403, 1291, 1401, 628, 1170, 1650, 1681, 1406, - 611, 635, 614, 694, 615, 620, 704, 616, 1405, 678, - 679, 627, 1686, 1094, 649, 704, 646, 629, 1169, 1302, - 929, 1407, 1409, 924, 98, 99, 100, 1127, 648, 1027, - 681, 1750, 85, 673, 1751, 634, 1749, 1363, 1364, 1365, - 642, 684, 1641, 1349, 665, 1448, 684, 819, 1113, 1633, - 1631, 1032, 1033, 1113, 64, 677, 1418, 643, 644, 624, - 625, 626, 1174, 695, 696, 697, 698, 699, 700, 701, - 694, 86, 64, 704, 1009, 1009, 1231, 1176, 1485, 767, - 655, 714, 96, 886, 1325, 315, 768, 315, 315, 1671, - 96, 716, 717, 676, 674, 837, 96, 675, 1578, 785, - 1377, 1117, 1375, 716, 717, 1577, 464, 959, 1118, 1366, - 1730, 769, 732, 1499, 1371, 1368, 1359, 1369, 1362, 62, - 1358, 957, 958, 956, 1360, 1361, 682, 683, 681, 930, - 797, 955, 925, 947, 949, 950, 850, 1731, 1370, 1339, - 948, 633, 1722, 782, 684, 1338, 747, 749, 751, 753, - 755, 757, 758, 796, 748, 750, 808, 754, 756, 770, - 759, 605, 863, 866, 867, 868, 869, 870, 871, 1723, - 872, 873, 874, 875, 876, 851, 852, 853, 854, 835, - 836, 864, 1156, 838, 1733, 839, 840, 841, 842, 843, - 844, 845, 846, 847, 848, 855, 856, 857, 858, 859, - 860, 861, 862, 1198, 1199, 1200, 1013, 693, 692, 702, - 703, 695, 696, 697, 698, 699, 700, 701, 694, 1732, - 1029, 704, 1724, 315, 1714, 1696, 1757, 877, 1602, 682, - 683, 681, 683, 681, 96, 1575, 885, 1420, 887, 315, - 889, 315, 96, 96, 96, 1541, 1424, 684, 315, 684, - 1220, 1500, 315, 607, 608, 315, 907, 908, 865, 315, - 1426, 96, 1350, 1336, 1206, 922, 96, 96, 96, 315, - 96, 96, 697, 698, 699, 700, 701, 694, 914, 1340, - 704, 437, 1028, 96, 96, 1219, 900, 780, 682, 683, - 681, 827, 1758, 1218, 1425, 618, 451, 682, 683, 681, - 438, 682, 683, 681, 1638, 911, 684, 888, 1637, 890, - 1629, 1734, 682, 683, 681, 684, 899, 1698, 438, 684, - 808, 438, 814, 906, 98, 99, 100, 682, 683, 681, - 684, 1629, 1679, 1629, 438, 976, 932, 919, 913, 98, - 99, 100, 71, 977, 978, 684, 1079, 98, 99, 100, - 953, 1309, 1079, 666, 1629, 1663, 454, 361, 96, 1257, - 903, 693, 692, 702, 703, 695, 696, 697, 698, 699, - 700, 701, 694, 1629, 1628, 704, 986, 880, 1568, 1555, - 438, 931, 1551, 438, 1491, 1490, 31, 997, 1000, 73, - 992, 96, 96, 1010, 31, 934, 1487, 1488, 1487, 1486, - 1040, 438, 954, 1052, 438, 459, 988, 1080, 680, 438, - 96, 1264, 987, 1080, 1352, 1082, 1580, 315, 1115, 438, - 96, 1078, 880, 879, 315, 1447, 315, 1052, 732, 826, - 825, 1435, 1548, 1265, 315, 315, 315, 456, 457, 986, - 1447, 1613, 96, 979, 980, 96, 1257, 1296, 1018, 1019, - 1041, 1051, 426, 680, 1040, 1078, 96, 96, 464, 989, - 62, 464, 1640, 1581, 1582, 1583, 1489, 62, 62, 988, - 1052, 1310, 1098, 1086, 1237, 1046, 1236, 1040, 1078, 1030, - 901, 431, 1042, 811, 1067, 1043, 387, 386, 389, 390, - 391, 392, 1047, 97, 1050, 388, 393, 316, 1715, 1112, - 316, 1052, 1022, 31, 1075, 97, 1591, 316, 1560, 882, - 1142, 96, 1034, 1044, 1447, 315, 96, 1478, 96, 1040, - 878, 1177, 1314, 1138, 1132, 315, 315, 315, 315, 315, - 1131, 1143, 315, 315, 1085, 97, 315, 96, 97, 316, - 97, 316, 1101, 1084, 1076, 1081, 87, 1345, 1344, 1381, - 1144, 1128, 1129, 1130, 315, 62, 1451, 1452, 1592, 1162, - 315, 315, 315, 1584, 1743, 1739, 315, 96, 1480, 1719, - 1121, 1454, 1122, 1123, 1124, 1125, 1435, 62, 1354, 935, - 993, 994, 905, 1157, 999, 1002, 1003, 1457, 1133, 1134, - 1135, 1136, 1345, 1179, 1180, 1181, 1182, 1183, 1139, 1140, - 1186, 1187, 1155, 1154, 1188, 1281, 1279, 1585, 1586, 1017, - 1282, 1280, 1020, 1021, 1283, 1456, 1061, 1062, 883, 953, - 1278, 1277, 1190, 1701, 1427, 1246, 891, 892, 893, 779, - 1194, 1721, 1717, 1552, 1196, 1191, 1255, 1254, 1691, 1195, - 1057, 1060, 1061, 1062, 1058, 912, 1059, 1063, 1688, 1705, - 916, 917, 918, 1707, 920, 921, 1244, 1713, 1712, 1659, - 685, 1201, 1657, 427, 1245, 1351, 1005, 926, 927, 772, - 1243, 954, 315, 1344, 1331, 1546, 824, 631, 1324, 1673, - 1006, 773, 1250, 315, 315, 315, 315, 315, 1672, 1611, - 1322, 1214, 1316, 1587, 1025, 315, 361, 1032, 1033, 315, - 1159, 1271, 429, 315, 904, 742, 1065, 435, 315, 315, - 1230, 1726, 315, 315, 315, 1259, 1253, 1262, 432, 433, - 1725, 1430, 1710, 1692, 1252, 1308, 1215, 96, 1545, 1266, - 436, 73, 774, 777, 1544, 1311, 1315, 1257, 1249, 1225, - 1320, 1320, 1260, 1098, 1258, 661, 1745, 1744, 444, 1288, - 1222, 1297, 793, 1272, 316, 1299, 1275, 786, 1745, 316, - 911, 1284, 445, 1273, 1274, 316, 1276, 1660, 1573, 1294, - 1295, 316, 1026, 431, 71, 1321, 76, 1298, 1300, 68, - 1303, 1347, 97, 1, 337, 783, 784, 447, 96, 446, - 1737, 97, 1509, 96, 1313, 1330, 1588, 1332, 1333, 1334, - 1317, 1318, 444, 97, 97, 702, 703, 695, 696, 697, - 698, 699, 700, 701, 694, 1356, 445, 704, 1167, 96, - 1674, 1341, 1148, 1337, 1104, 1095, 84, 591, 83, 645, - 1210, 1211, 1103, 1328, 1329, 1102, 1630, 1326, 1346, 441, - 442, 447, 1119, 446, 96, 1571, 1479, 1323, 1670, 832, - 976, 1228, 830, 831, 1372, 1057, 1060, 1061, 1062, 1058, - 1396, 1059, 1063, 1398, 829, 1451, 1452, 834, 833, 828, - 1387, 330, 1397, 936, 1388, 347, 1064, 820, 93, 1161, - 787, 1421, 315, 1374, 1373, 1410, 1417, 1163, 1492, 1389, - 1116, 327, 96, 656, 332, 1411, 300, 1395, 96, 96, - 1158, 712, 1160, 1251, 97, 1436, 1304, 316, 1396, 316, - 316, 988, 97, 465, 1271, 458, 1441, 987, 97, 1711, - 1689, 1189, 1687, 1656, 96, 1607, 1690, 315, 1439, 1654, - 1720, 915, 1704, 1024, 775, 1543, 1429, 990, 991, 1446, - 1229, 96, 741, 96, 1007, 96, 1455, 802, 1320, 1320, - 1428, 1472, 370, 946, 385, 382, 383, 1098, 933, 1098, - 1035, 1462, 1484, 1263, 686, 1463, 368, 1465, 362, 1466, - 1464, 801, 1471, 794, 1056, 1474, 1023, 942, 943, 944, - 945, 1473, 1476, 1477, 1054, 315, 1053, 807, 1112, 1453, - 1449, 800, 1039, 440, 1004, 1495, 1433, 1482, 1483, 1648, - 1536, 439, 1496, 54, 315, 1497, 1498, 34, 352, 1502, - 96, 669, 1510, 96, 96, 96, 315, 448, 28, 23, - 22, 21, 20, 19, 1503, 25, 1505, 18, 17, 16, - 39, 619, 995, 996, 38, 27, 26, 15, 14, 13, - 12, 11, 399, 30, 10, 316, 9, 5, 4, 672, - 24, 730, 2, 1501, 0, 0, 97, 0, 0, 1524, - 0, 316, 0, 316, 97, 97, 97, 0, 0, 0, - 316, 0, 1504, 30, 316, 0, 0, 316, 0, 0, - 0, 316, 0, 97, 1514, 0, 0, 1547, 97, 97, - 97, 316, 97, 97, 1515, 1516, 1557, 1271, 0, 0, - 0, 0, 96, 0, 1556, 97, 97, 0, 0, 96, - 1311, 0, 0, 430, 0, 0, 1092, 0, 1098, 0, - 0, 1566, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1519, 0, 0, 1567, 0, 1542, 1521, 1522, 96, - 1523, 0, 0, 1525, 0, 1527, 0, 0, 0, 0, - 0, 0, 0, 1595, 0, 1590, 692, 702, 703, 695, - 696, 697, 698, 699, 700, 701, 694, 1593, 0, 704, - 0, 0, 1353, 0, 0, 1146, 0, 0, 0, 0, - 97, 0, 96, 0, 96, 1208, 96, 0, 0, 1209, - 1610, 96, 0, 96, 96, 96, 315, 1574, 1616, 1576, - 1216, 1217, 1612, 1386, 0, 0, 1223, 0, 0, 1226, - 1227, 1439, 1627, 97, 97, 1439, 1620, 1233, 1621, 1623, - 1624, 1235, 96, 315, 1238, 1239, 1240, 1241, 1242, 1625, - 1634, 1614, 97, 1594, 0, 0, 0, 0, 0, 316, - 0, 0, 97, 1635, 0, 1636, 316, 1642, 316, 0, - 0, 0, 1605, 0, 0, 0, 316, 316, 316, 1661, - 96, 0, 0, 0, 97, 0, 0, 97, 1667, 0, - 1601, 96, 96, 1286, 1287, 0, 1439, 0, 97, 97, - 1678, 0, 1677, 0, 0, 0, 0, 1590, 1098, 0, - 1619, 1643, 0, 96, 1684, 0, 0, 0, 0, 315, - 1626, 1693, 0, 0, 0, 0, 1232, 96, 0, 0, - 1271, 0, 0, 0, 0, 1700, 0, 0, 0, 0, - 0, 0, 1709, 0, 1708, 1247, 1248, 777, 0, 0, - 0, 0, 0, 97, 1718, 1716, 0, 316, 97, 0, - 97, 0, 0, 0, 0, 0, 96, 316, 316, 316, - 316, 316, 0, 0, 316, 316, 0, 0, 316, 97, - 0, 0, 0, 0, 0, 0, 0, 1695, 0, 0, - 1742, 1727, 650, 0, 0, 0, 316, 1753, 1540, 0, - 0, 650, 316, 316, 316, 0, 0, 0, 316, 97, - 0, 0, 0, 0, 0, 30, 693, 692, 702, 703, - 695, 696, 697, 698, 699, 700, 701, 694, 713, 715, - 704, 0, 0, 0, 0, 0, 0, 1393, 1394, 693, - 692, 702, 703, 695, 696, 697, 698, 699, 700, 701, - 694, 0, 0, 704, 0, 0, 396, 0, 0, 728, - 364, 0, 0, 733, 734, 735, 736, 737, 738, 739, - 740, 0, 743, 746, 746, 746, 752, 746, 746, 752, - 746, 760, 761, 762, 763, 764, 765, 766, 0, 0, - 0, 0, 0, 30, 1442, 0, 0, 95, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 349, - 0, 0, 0, 0, 316, 1458, 0, 0, 0, 803, - 0, 0, 0, 0, 0, 316, 316, 316, 316, 316, - 0, 0, 0, 0, 0, 0, 0, 316, 1534, 466, - 0, 316, 595, 0, 602, 316, 0, 0, 1419, 0, - 316, 316, 0, 0, 316, 316, 316, 0, 0, 0, - 0, 1539, 0, 0, 0, 0, 0, 0, 688, 97, - 691, 0, 0, 0, 1431, 0, 705, 706, 707, 708, - 709, 710, 711, 0, 689, 690, 687, 693, 692, 702, - 703, 695, 696, 697, 698, 699, 700, 701, 694, 0, - 0, 704, 693, 692, 702, 703, 695, 696, 697, 698, - 699, 700, 701, 694, 0, 0, 704, 0, 0, 0, - 0, 0, 1518, 0, 0, 0, 1520, 0, 0, 0, - 97, 0, 0, 0, 0, 97, 0, 1529, 1530, 0, - 693, 692, 702, 703, 695, 696, 697, 698, 699, 700, - 701, 694, 0, 0, 704, 0, 0, 0, 0, 0, - 0, 97, 0, 0, 0, 0, 650, 1549, 1550, 0, - 0, 1554, 0, 0, 650, 650, 650, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 97, 0, 0, 1565, - 0, 0, 0, 650, 0, 0, 0, 0, 650, 650, - 650, 0, 650, 650, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 650, 650, 0, 0, 0, - 0, 0, 1390, 0, 316, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 97, 0, 0, 1538, 0, 0, - 97, 97, 693, 692, 702, 703, 695, 696, 697, 698, - 699, 700, 701, 694, 0, 0, 704, 361, 0, 0, - 0, 0, 0, 0, 0, 1558, 97, 0, 1559, 316, - 0, 1561, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 97, 1533, 97, 466, 97, 0, 1622, - 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 668, 670, 0, - 0, 0, 0, 0, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 1644, 1645, 1646, 1647, 316, 1651, 1532, - 1652, 1653, 0, 718, 719, 720, 721, 722, 723, 724, - 725, 726, 727, 0, 0, 0, 316, 0, 1664, 0, - 1665, 1666, 97, 0, 1531, 97, 97, 97, 316, 0, - 0, 1609, 361, 0, 0, 0, 1068, 0, 319, 0, - 0, 0, 0, 0, 0, 1680, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 331, 693, 692, 702, 703, - 695, 696, 697, 698, 699, 700, 701, 694, 0, 0, - 704, 1697, 0, 0, 0, 0, 0, 0, 790, 0, - 0, 0, 0, 0, 0, 0, 466, 0, 0, 329, - 0, 0, 821, 0, 0, 336, 0, 0, 0, 0, - 0, 693, 692, 702, 703, 695, 696, 697, 698, 699, - 700, 701, 694, 0, 97, 704, 0, 0, 650, 0, - 650, 97, 0, 0, 0, 320, 693, 692, 702, 703, - 695, 696, 697, 698, 699, 700, 701, 694, 0, 650, - 704, 0, 0, 1754, 1755, 0, 0, 0, 0, 0, - 0, 97, 333, 323, 1207, 334, 335, 342, 0, 0, - 0, 326, 328, 339, 324, 325, 344, 343, 0, 321, - 341, 340, 0, 0, 693, 692, 702, 703, 695, 696, - 697, 698, 699, 700, 701, 694, 0, 0, 704, 0, - 0, 0, 0, 0, 97, 0, 97, 0, 97, 0, - 0, 0, 0, 97, 0, 97, 97, 97, 316, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1212, - 0, 0, 430, 0, 0, 0, 0, 0, 0, 0, - 466, 0, 0, 0, 97, 316, 0, 0, 466, 466, - 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 466, 0, 0, - 0, 0, 466, 466, 466, 0, 466, 466, 0, 0, - 0, 0, 97, 0, 803, 0, 0, 0, 0, 466, - 466, 1267, 1268, 97, 97, 803, 803, 803, 803, 803, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1068, 0, 1293, 0, 97, 0, 0, 0, 0, - 803, 316, 0, 0, 803, 0, 0, 951, 0, 97, - 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 981, 0, 466, 0, 97, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1011, 0, 0, 0, 0, 0, 0, 1014, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1015, 1016, 0, - 650, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1036, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 790, 0, 0, 466, - 0, 650, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, - 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 466, 595, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1440, 0, - 30, 0, 0, 0, 0, 0, 0, 602, 0, 0, - 0, 0, 466, 0, 466, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 803, - 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1197, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 397, 0, 0, 0, 0, 1202, 1203, - 1204, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, - 0, 345, 0, 0, 0, 0, 0, 0, 314, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1535, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 452, 452, 0, 0, 0, 0, 0, 0, 0, - 314, 0, 314, 0, 0, 0, 0, 0, 1011, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1562, 1563, 1564, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1440, 0, 30, 466, 1440, 0, 0, 0, 1355, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 423, 1750, 1740, 1508, 1660, 1380, 1677, 1570, 1708, 367, + 1269, 1608, 1098, 1289, 1591, 382, 732, 1070, 1127, 1148, + 432, 1437, 779, 1270, 1142, 74, 3, 772, 633, 1438, + 1434, 1348, 1343, 396, 353, 1342, 1319, 1094, 1067, 1444, + 1399, 1107, 595, 976, 598, 109, 1450, 334, 109, 1097, + 1205, 465, 72, 346, 910, 109, 1357, 1150, 1335, 983, + 1111, 592, 817, 929, 1049, 1072, 1056, 810, 800, 441, + 650, 799, 782, 777, 426, 369, 29, 358, 1009, 953, + 1032, 816, 599, 346, 789, 591, 346, 109, 346, 109, + 1138, 354, 814, 365, 357, 1256, 642, 109, 614, 615, + 70, 109, 652, 624, 924, 1078, 75, 109, 939, 69, + 1657, 8, 807, 1494, 882, 745, 986, 7, 6, 1580, + 89, 1743, 1610, 98, 746, 1705, 96, 1738, 1685, 408, + 1731, 414, 415, 412, 413, 411, 410, 409, 1151, 77, + 78, 79, 80, 81, 82, 416, 417, 427, 1509, 1704, + 447, 451, 1684, 1416, 1538, 1173, 602, 1469, 1470, 1153, + 1089, 1090, 31, 32, 33, 63, 35, 36, 1468, 1172, + 111, 112, 113, 91, 92, 459, 88, 1306, 1088, 818, + 1305, 819, 67, 1307, 665, 462, 356, 37, 57, 58, + 31, 60, 355, 63, 35, 36, 1327, 61, 1651, 694, + 693, 703, 704, 696, 697, 698, 699, 700, 701, 702, + 695, 658, 659, 705, 105, 101, 102, 103, 1121, 1573, + 1687, 1382, 111, 112, 113, 99, 47, 1128, 1529, 1400, + 1152, 1527, 344, 1171, 660, 938, 62, 348, 661, 658, + 659, 639, 342, 641, 899, 663, 664, 111, 112, 113, + 655, 97, 653, 654, 1384, 898, 896, 1737, 1730, 1678, + 1379, 940, 941, 942, 62, 1050, 1670, 1758, 648, 1146, + 1402, 1146, 94, 1754, 1475, 638, 640, 1383, 1146, 453, + 608, 1634, 594, 609, 610, 900, 1168, 1165, 1166, 1115, + 1164, 897, 1290, 1292, 1376, 623, 604, 1385, 449, 903, + 1378, 90, 40, 41, 43, 42, 45, 1404, 59, 1408, + 668, 1403, 1115, 1401, 885, 109, 631, 1461, 1406, 637, + 1460, 1459, 94, 1175, 1178, 890, 346, 1405, 612, 314, + 100, 46, 66, 65, 1224, 346, 55, 56, 44, 1221, + 1407, 1409, 104, 111, 112, 113, 1095, 1493, 619, 346, + 346, 1185, 48, 49, 1184, 50, 51, 52, 53, 359, + 717, 718, 666, 1170, 1664, 1367, 1554, 1154, 636, 1467, + 1261, 1234, 1213, 1084, 793, 730, 674, 705, 629, 1652, + 1291, 695, 1302, 1683, 705, 1169, 1028, 682, 1128, 647, + 679, 680, 696, 697, 698, 699, 700, 701, 702, 695, + 1688, 649, 705, 685, 930, 667, 643, 111, 112, 113, + 925, 1752, 1635, 1633, 1753, 1114, 1751, 644, 645, 1363, + 1364, 1365, 616, 685, 617, 1643, 1377, 618, 1375, 1174, + 1349, 698, 699, 700, 701, 702, 695, 85, 1114, 705, + 715, 111, 112, 113, 1176, 64, 635, 1010, 1448, 769, + 346, 656, 820, 109, 770, 109, 109, 678, 346, 1418, + 768, 315, 677, 887, 346, 1325, 717, 718, 675, 676, + 318, 717, 718, 64, 733, 1010, 86, 1231, 327, 693, + 703, 704, 696, 697, 698, 699, 700, 701, 702, 695, + 1732, 1366, 705, 798, 960, 1485, 1371, 1368, 1359, 1369, + 1362, 1673, 1358, 683, 684, 682, 1360, 1361, 958, 959, + 957, 783, 325, 931, 683, 684, 682, 1733, 332, 926, + 1370, 685, 1420, 436, 1014, 748, 750, 752, 754, 756, + 758, 759, 685, 786, 749, 751, 771, 755, 757, 622, + 760, 603, 1033, 1034, 684, 682, 1118, 1579, 316, 948, + 950, 951, 634, 1119, 1724, 781, 949, 1198, 1199, 1200, + 462, 685, 1578, 694, 693, 703, 704, 696, 697, 698, + 699, 700, 701, 702, 695, 329, 319, 705, 330, 331, + 338, 1725, 1499, 1424, 322, 324, 335, 320, 321, 340, + 339, 109, 317, 337, 336, 878, 62, 1339, 1338, 435, + 1157, 1735, 346, 436, 886, 1734, 888, 109, 956, 1759, + 1726, 1716, 1698, 109, 346, 346, 346, 683, 684, 682, + 109, 1604, 1576, 109, 1542, 1640, 109, 908, 909, 1500, + 109, 1425, 346, 605, 606, 685, 1426, 346, 346, 346, + 109, 346, 346, 625, 626, 627, 1350, 1336, 362, 1219, + 111, 112, 113, 923, 346, 346, 915, 1218, 891, 611, + 686, 914, 703, 704, 696, 697, 698, 699, 700, 701, + 702, 695, 884, 1639, 705, 1760, 683, 684, 682, 1352, + 1340, 912, 1631, 1736, 893, 894, 895, 111, 112, 113, + 1116, 978, 1700, 436, 685, 1541, 359, 1447, 683, 684, + 682, 1435, 913, 1631, 1681, 743, 977, 917, 918, 919, + 1447, 921, 922, 1631, 436, 979, 685, 1631, 1665, 1631, + 1630, 933, 954, 1549, 927, 928, 71, 1030, 1257, 346, + 881, 1569, 775, 778, 681, 904, 694, 693, 703, 704, + 696, 697, 698, 699, 700, 701, 702, 695, 998, 1001, + 705, 111, 112, 113, 1011, 1309, 993, 1556, 436, 1220, + 935, 932, 346, 346, 955, 694, 693, 703, 704, 696, + 697, 698, 699, 700, 701, 702, 695, 1552, 436, 705, + 1080, 346, 989, 1491, 1490, 988, 1487, 1488, 109, 1029, + 1023, 346, 31, 733, 815, 109, 1053, 109, 1487, 1486, + 1035, 1041, 436, 436, 1080, 109, 109, 109, 683, 684, + 682, 980, 981, 346, 1053, 436, 346, 1264, 681, 436, + 881, 880, 1206, 424, 1019, 1020, 685, 346, 346, 73, + 1068, 1052, 990, 987, 827, 826, 683, 684, 682, 1265, + 1642, 1081, 1296, 31, 1489, 989, 452, 1042, 1047, 1083, + 1079, 994, 995, 1043, 685, 1000, 1003, 1004, 1257, 1053, + 1129, 1130, 1131, 1310, 1087, 1081, 62, 62, 110, 1237, + 1113, 110, 1236, 1079, 429, 1045, 347, 457, 110, 1041, + 1018, 1053, 346, 1021, 1022, 1079, 109, 346, 1031, 346, + 1615, 1162, 1581, 1177, 1041, 1086, 987, 109, 109, 109, + 109, 109, 1144, 109, 109, 1085, 347, 109, 346, 347, + 110, 347, 110, 1102, 1082, 462, 1041, 62, 462, 1077, + 110, 1145, 902, 812, 110, 109, 1447, 454, 455, 1099, + 110, 109, 109, 109, 916, 31, 1717, 109, 346, 1582, + 1583, 1584, 1381, 1593, 1561, 883, 1143, 1478, 62, 1122, + 879, 1123, 1124, 1125, 1126, 1540, 1314, 1159, 1191, 1161, + 1139, 934, 1195, 1156, 1155, 1140, 1141, 1134, 1135, 1136, + 1137, 1133, 1132, 87, 1344, 1345, 1451, 1452, 1189, 1594, + 943, 944, 945, 946, 385, 384, 387, 388, 389, 390, + 1355, 954, 1745, 386, 391, 1741, 694, 693, 703, 704, + 696, 697, 698, 699, 700, 701, 702, 695, 1585, 62, + 705, 1501, 1480, 1454, 1215, 1435, 936, 906, 1345, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 1281, + 1457, 1456, 1278, 955, 1282, 996, 997, 1201, 1058, 1061, + 1062, 1063, 1059, 109, 1060, 1064, 1277, 1721, 1451, 1452, + 1703, 1243, 1586, 1587, 109, 109, 109, 109, 109, 1279, + 1427, 1246, 1271, 1250, 1280, 1214, 109, 427, 780, 1283, + 109, 1062, 1063, 1719, 109, 1266, 1553, 1255, 1254, 109, + 109, 1259, 1693, 109, 109, 109, 1690, 1230, 1723, 1707, + 1709, 1244, 1715, 1714, 1661, 1288, 1308, 1659, 346, 1245, + 425, 1210, 1211, 93, 1351, 1249, 1006, 1315, 1344, 1331, + 1311, 1320, 1320, 1260, 1258, 773, 442, 1297, 825, 1093, + 1007, 1299, 1228, 1273, 1274, 1272, 1276, 774, 1275, 632, + 443, 1284, 1324, 1675, 1674, 1613, 912, 1322, 110, 1294, + 1316, 1295, 1328, 1329, 1262, 95, 1547, 1589, 1321, 347, + 1303, 1300, 1347, 784, 785, 445, 1026, 444, 347, 346, + 1033, 1034, 1160, 905, 1313, 1330, 1066, 1332, 1333, 1334, + 1317, 1318, 347, 347, 442, 430, 431, 433, 1147, 1058, + 1061, 1062, 1063, 1059, 1728, 1060, 1064, 1253, 443, 346, + 1727, 1712, 1337, 1694, 1546, 1252, 434, 73, 1356, 1545, + 1099, 1430, 1257, 662, 1747, 1746, 429, 1346, 1225, 1222, + 794, 439, 440, 445, 346, 444, 787, 1747, 1662, 1574, + 977, 1027, 1372, 71, 76, 68, 1, 333, 1739, 1353, + 1510, 1590, 1167, 1676, 1341, 1149, 1105, 1397, 1096, 84, + 589, 83, 646, 1398, 1104, 1103, 1632, 1326, 1120, 1572, + 1479, 1417, 109, 1389, 1387, 1323, 991, 992, 1388, 1386, + 1672, 1411, 346, 1410, 833, 831, 832, 830, 346, 346, + 835, 834, 1395, 347, 1271, 1436, 110, 829, 110, 110, + 326, 347, 937, 1433, 343, 1065, 989, 347, 821, 988, + 788, 1374, 1373, 1163, 346, 1024, 1492, 109, 1117, 1439, + 323, 657, 328, 713, 1251, 1304, 463, 456, 1441, 1232, + 1354, 346, 607, 346, 1713, 346, 1396, 1691, 1320, 1320, + 1689, 1658, 1455, 1609, 1692, 1472, 1656, 1722, 1247, 1248, + 778, 1706, 1484, 1462, 1025, 1464, 952, 1421, 776, 961, + 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 972, 973, 974, 975, 1476, 1477, 346, 1474, 1113, 1473, + 1471, 1544, 1429, 1229, 1396, 1446, 1482, 1483, 742, 1008, + 803, 368, 947, 383, 109, 1495, 1497, 1498, 380, 1496, + 346, 381, 1511, 346, 346, 346, 109, 1535, 1036, 1263, + 687, 1463, 1503, 1465, 366, 1466, 1015, 360, 802, 795, + 1057, 1055, 1054, 808, 1453, 1449, 801, 1504, 1040, 1506, + 438, 1005, 1650, 1099, 110, 1099, 1516, 1517, 1520, 1537, + 437, 54, 34, 350, 670, 347, 446, 28, 23, 1525, + 110, 22, 21, 20, 19, 25, 110, 347, 347, 347, + 18, 17, 16, 110, 1543, 39, 110, 620, 38, 110, + 27, 26, 15, 110, 14, 347, 13, 1271, 12, 11, + 347, 347, 347, 110, 347, 347, 10, 1548, 9, 1557, + 5, 1558, 346, 4, 673, 24, 731, 347, 347, 346, + 2, 0, 0, 0, 1311, 0, 1567, 0, 0, 694, + 693, 703, 704, 696, 697, 698, 699, 700, 701, 702, + 695, 0, 109, 705, 1208, 1575, 0, 1577, 1209, 0, + 346, 0, 0, 0, 0, 1522, 1523, 0, 1524, 1216, + 1217, 1526, 0, 1528, 1597, 1223, 0, 0, 1226, 1227, + 1419, 0, 0, 0, 0, 0, 1233, 0, 0, 0, + 1235, 0, 1596, 1238, 1239, 1240, 1241, 1242, 1595, 0, + 0, 0, 347, 346, 0, 346, 1431, 346, 1603, 0, + 1568, 1607, 346, 1612, 346, 346, 346, 109, 0, 1622, + 0, 1623, 1625, 1626, 1099, 1618, 0, 1616, 1621, 1614, + 0, 0, 0, 1439, 1627, 347, 347, 1439, 1628, 1629, + 1636, 0, 1286, 1287, 346, 109, 0, 0, 0, 0, + 0, 1644, 0, 0, 347, 0, 0, 1202, 1203, 1204, + 0, 110, 1592, 1637, 347, 1638, 0, 0, 110, 0, + 110, 0, 0, 0, 0, 0, 0, 0, 110, 110, + 110, 0, 346, 0, 0, 0, 347, 1663, 0, 347, + 0, 1669, 0, 346, 346, 397, 30, 0, 0, 1439, + 347, 347, 0, 0, 0, 0, 1680, 1679, 0, 0, + 0, 0, 0, 0, 0, 346, 0, 0, 1686, 0, + 0, 109, 1271, 1695, 0, 0, 30, 0, 0, 346, + 0, 0, 0, 0, 0, 0, 0, 1702, 0, 0, + 0, 1534, 0, 0, 1711, 0, 0, 1710, 0, 0, + 0, 0, 0, 0, 0, 347, 1720, 1718, 0, 110, + 347, 0, 347, 1533, 0, 0, 428, 0, 346, 1539, + 110, 110, 110, 110, 110, 1729, 110, 110, 0, 0, + 110, 347, 0, 0, 0, 1393, 1394, 0, 0, 359, + 0, 0, 1744, 0, 0, 1592, 1099, 1559, 110, 1755, + 1560, 0, 0, 1562, 110, 110, 110, 689, 0, 692, + 110, 347, 0, 0, 0, 706, 707, 708, 709, 710, + 711, 712, 0, 690, 691, 688, 694, 693, 703, 704, + 696, 697, 698, 699, 700, 701, 702, 695, 0, 0, + 705, 0, 1442, 694, 693, 703, 704, 696, 697, 698, + 699, 700, 701, 702, 695, 0, 0, 705, 0, 0, + 0, 0, 0, 1458, 0, 694, 693, 703, 704, 696, + 697, 698, 699, 700, 701, 702, 695, 0, 0, 705, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1532, 1611, 359, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1391, 1392, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, + 1412, 1413, 0, 1414, 1415, 0, 0, 110, 110, 110, + 110, 110, 0, 0, 0, 1422, 1423, 0, 0, 110, + 0, 0, 0, 110, 0, 0, 0, 110, 0, 0, + 0, 0, 110, 110, 0, 0, 110, 110, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1519, 347, 0, 0, 1521, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1530, 1531, 0, 0, 0, + 0, 0, 0, 0, 394, 694, 693, 703, 704, 696, + 697, 698, 699, 700, 701, 702, 695, 0, 0, 705, + 0, 0, 0, 0, 0, 1550, 1551, 0, 0, 1555, + 0, 651, 0, 1481, 0, 0, 0, 0, 0, 0, + 651, 0, 347, 0, 0, 0, 0, 1566, 0, 0, + 0, 0, 0, 0, 1390, 0, 30, 345, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 714, + 716, 0, 347, 0, 694, 693, 703, 704, 696, 697, + 698, 699, 700, 701, 702, 695, 0, 464, 705, 0, + 593, 0, 600, 0, 0, 0, 0, 347, 0, 1518, + 729, 0, 0, 0, 734, 735, 736, 737, 738, 739, + 740, 741, 0, 744, 747, 747, 747, 753, 747, 747, + 753, 747, 761, 762, 763, 764, 765, 766, 767, 0, + 0, 0, 0, 0, 30, 110, 0, 0, 0, 0, + 0, 1207, 0, 0, 0, 347, 0, 0, 1624, 0, + 0, 347, 347, 0, 0, 0, 0, 0, 0, 0, + 804, 694, 693, 703, 704, 696, 697, 698, 699, 700, + 701, 702, 695, 0, 0, 705, 0, 347, 0, 0, + 110, 0, 0, 1646, 1647, 1648, 1649, 0, 1653, 0, + 1654, 1655, 0, 0, 347, 0, 347, 0, 347, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1666, 0, + 1667, 1668, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 850, 694, 693, 703, 704, 696, 697, 698, 699, + 700, 701, 702, 695, 0, 1682, 705, 0, 0, 347, + 0, 1598, 1599, 1600, 1601, 1602, 0, 0, 0, 1605, + 1606, 0, 0, 0, 0, 0, 0, 110, 0, 0, + 0, 1699, 0, 347, 0, 0, 347, 347, 347, 110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 651, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 651, + 651, 651, 0, 0, 0, 0, 0, 838, 0, 0, + 464, 0, 0, 1756, 1757, 0, 0, 651, 0, 464, + 0, 0, 651, 651, 651, 0, 651, 651, 0, 0, + 0, 0, 0, 669, 671, 347, 0, 0, 0, 651, + 651, 0, 347, 0, 0, 0, 0, 0, 851, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 347, 864, 867, 868, 869, 870, 871, + 872, 0, 873, 874, 875, 876, 877, 852, 853, 854, + 855, 836, 837, 865, 0, 839, 0, 840, 841, 842, + 843, 844, 845, 846, 847, 848, 849, 856, 857, 858, + 859, 860, 861, 862, 863, 0, 347, 0, 347, 0, + 347, 0, 0, 395, 0, 347, 0, 347, 347, 347, + 110, 1748, 0, 0, 791, 0, 0, 0, 0, 0, + 0, 0, 464, 0, 0, 0, 0, 0, 822, 0, + 0, 0, 0, 0, 0, 0, 0, 347, 110, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, + 866, 341, 0, 0, 0, 0, 0, 0, 108, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1069, 0, 0, 0, 0, 347, 0, 0, 0, 0, + 0, 450, 450, 0, 0, 0, 347, 347, 0, 0, + 108, 0, 108, 0, 0, 0, 0, 0, 0, 0, + 108, 0, 0, 0, 108, 0, 0, 0, 347, 0, + 108, 0, 0, 0, 110, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 651, 0, 651, 0, 0, 0, 0, 0, + 0, 347, 0, 0, 0, 0, 464, 0, 0, 0, + 0, 0, 0, 651, 0, 0, 0, 0, 464, 464, + 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 464, 0, 0, 0, + 0, 464, 464, 464, 0, 464, 464, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 464, 464, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1212, 0, 0, 428, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 982, 0, 464, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 804, 1012, + 0, 0, 0, 0, 0, 1267, 1268, 0, 108, 804, + 804, 804, 804, 804, 0, 0, 1016, 1017, 0, 0, + 0, 0, 0, 0, 0, 1069, 0, 1293, 0, 0, + 0, 0, 0, 0, 804, 1037, 0, 0, 804, 0, + 0, 0, 0, 0, 0, 791, 0, 0, 464, 0, + 805, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 464, 0, 0, + 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 464, 593, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 349, 0, 0, 0, 0, + 0, 0, 0, 0, 651, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, - 1639, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1391, 1392, 0, - 466, 0, 0, 0, 0, 0, 1440, 0, 0, 0, - 0, 0, 1412, 1413, 0, 1414, 1415, 0, 0, 0, - 0, 466, 0, 0, 0, 0, 0, 1422, 1423, 0, + 0, 0, 450, 0, 0, 0, 600, 597, 0, 601, + 0, 464, 0, 464, 651, 0, 108, 613, 108, 811, + 0, 621, 0, 0, 0, 0, 0, 628, 0, 0, + 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 314, 0, 0, 466, 0, - 314, 1011, 0, 0, 1443, 1445, 314, 0, 0, 0, - 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1445, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 466, 0, 466, - 0, 602, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1481, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1740, 0, + 0, 0, 1197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1440, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1506, 0, 0, 1511, - 1512, 1513, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1517, 0, 0, 452, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, - 314, 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, - 0, 0, 0, 0, 0, 1570, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 108, 0, 0, 0, 0, 0, 108, 1012, 0, 0, + 0, 0, 0, 108, 0, 0, 108, 0, 0, 108, + 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, + 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 630, 0, 0, 0, 0, + 0, 0, 1536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1596, 1597, 1598, 1599, 1600, 0, 0, 0, - 1603, 1604, 0, 0, 0, 0, 314, 0, 1615, 0, - 1617, 0, 1618, 0, 0, 0, 0, 1570, 0, 1570, - 1570, 1570, 314, 0, 314, 0, 0, 0, 0, 0, - 0, 314, 0, 0, 0, 314, 0, 0, 314, 0, - 0, 0, 910, 0, 0, 0, 0, 0, 1570, 0, - 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 464, 0, 1563, 1564, 1565, 0, 0, + 0, 0, 0, 450, 911, 0, 0, 0, 450, 450, + 0, 0, 450, 450, 450, 0, 0, 0, 1013, 0, + 0, 0, 0, 464, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 450, 450, 450, + 450, 450, 0, 0, 0, 0, 0, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1669, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 466, 466, 0, + 0, 108, 0, 0, 0, 0, 0, 911, 108, 464, + 108, 0, 0, 0, 0, 0, 0, 0, 108, 1074, + 108, 0, 0, 797, 0, 1440, 809, 30, 0, 1440, + 0, 0, 0, 0, 0, 0, 464, 0, 0, 1012, + 0, 0, 1443, 1445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1011, 0, 1694, + 0, 0, 0, 0, 0, 1641, 0, 0, 1445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1699, 0, 0, 0, 0, 0, 0, - 0, 0, 452, 910, 0, 0, 0, 452, 452, 0, - 0, 452, 452, 452, 0, 0, 0, 1012, 0, 0, + 0, 0, 0, 0, 0, 464, 0, 464, 0, 600, + 0, 1440, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1570, 0, 0, 0, 452, 452, 452, 452, - 452, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 108, 108, 108, 108, 108, 0, 108, 108, 0, 0, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1502, 0, 0, 0, 0, 0, 0, 0, 108, 0, + 0, 0, 0, 0, 1192, 1193, 108, 0, 0, 0, + 108, 0, 0, 0, 1507, 0, 0, 1512, 1513, 1514, + 0, 828, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 889, 0, 0, + 0, 0, 0, 892, 0, 0, 0, 0, 0, 0, + 901, 0, 0, 809, 0, 0, 907, 0, 450, 450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 314, 1746, 0, 0, 0, 0, 910, 314, 0, 314, - 0, 0, 0, 0, 0, 0, 0, 314, 1073, 314, + 920, 0, 0, 1742, 0, 0, 0, 0, 0, 450, + 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 464, 0, 0, 0, + 0, 0, 0, 1571, 0, 450, 108, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1013, 108, 108, 108, + 108, 108, 0, 0, 0, 0, 0, 0, 0, 1285, + 0, 0, 0, 108, 464, 0, 0, 1074, 0, 0, + 0, 0, 108, 108, 0, 0, 108, 1301, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1617, 0, 1619, + 0, 1620, 0, 0, 0, 0, 1571, 0, 1571, 1571, + 1571, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1044, 0, + 0, 0, 0, 0, 0, 1048, 0, 1051, 1571, 0, + 0, 0, 0, 0, 0, 0, 0, 1076, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1671, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 464, 464, 0, + 0, 0, 0, 0, 0, 0, 450, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1012, 0, 1696, + 0, 0, 0, 0, 0, 0, 0, 0, 911, 0, + 0, 0, 0, 1701, 0, 0, 1158, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 1179, 1180, 1181, + 1182, 1183, 0, 1186, 1187, 0, 0, 1188, 1013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1571, 0, 0, 1190, 0, 0, 0, 0, + 0, 0, 0, 1194, 0, 0, 0, 1196, 0, 0, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 314, - 314, 314, 314, 0, 0, 314, 314, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 314, 0, 0, - 0, 0, 0, 1192, 1193, 314, 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 452, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 452, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1012, 314, 314, 314, 314, - 314, 0, 0, 0, 0, 0, 0, 0, 1285, 0, - 0, 0, 314, 0, 0, 0, 1073, 0, 0, 0, - 0, 314, 314, 0, 0, 314, 1301, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1298, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 452, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 910, 0, + 0, 0, 1428, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1013, 0, 0, 0, + 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 314, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 314, + 0, 0, 0, 0, 1505, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 314, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1012, 0, 0, 0, 0, 577, - 565, 0, 314, 521, 580, 494, 511, 588, 512, 515, - 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, - 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, - 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, - 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, - 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 1099, 1100, 0, 0, 0, 0, 0, 121, 0, - 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, - 480, 587, 572, 502, 503, 1312, 0, 0, 0, 0, - 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, - 0, 0, 0, 0, 500, 0, 541, 0, 0, 0, - 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, - 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, - 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, - 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, - 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, - 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, - 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, - 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, - 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, - 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, - 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, - 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, - 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, - 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, - 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, - 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, - 0, 0, 98, 99, 100, 0, 1099, 1100, 0, 0, - 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, - 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, - 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, - 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, - 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, - 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, - 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, - 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, - 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, - 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, - 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, - 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, - 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, - 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, - 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, - 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, - 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, - 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, - 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, - 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, - 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, - 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, - 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, - 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, - 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, - 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, - 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, - 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, - 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, - 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, - 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, - 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, - 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, - 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, - 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, - 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, - 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, - 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, - 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, - 0, 0, 1432, 0, 500, 0, 541, 0, 0, 0, - 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, - 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, - 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, - 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, - 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, - 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, - 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, - 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, - 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, - 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, - 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, - 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, - 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, - 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, - 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, - 510, 550, 582, 161, 125, 105, 199, 254, 142, 62, - 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, - 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, - 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, - 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, - 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, - 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, - 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, - 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, - 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, - 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, - 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, - 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, - 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, - 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, - 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, - 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, - 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, - 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, - 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, - 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, - 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, - 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, - 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, - 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, - 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, - 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, - 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, - 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, - 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, - 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, - 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, - 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, - 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, - 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, - 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, - 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, - 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, - 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, - 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, - 0, 0, 1302, 0, 500, 0, 541, 0, 0, 0, - 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, - 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, - 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, - 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, - 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, - 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, - 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, - 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, - 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, - 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, - 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, - 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, - 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, - 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, - 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, - 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, - 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, - 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, - 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, - 518, 0, 0, 0, 0, 0, 0, 1045, 0, 500, - 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, - 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, - 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, - 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, - 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, - 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, - 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, - 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, - 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, - 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, - 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, - 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, - 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, - 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, - 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, - 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, - 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, - 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, - 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, - 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, - 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, - 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, - 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, - 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, - 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, - 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, - 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, - 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, - 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, - 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, - 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, - 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, - 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, - 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, - 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, - 0, 0, 0, 0, 500, 0, 541, 0, 0, 0, - 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, - 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, - 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, - 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, - 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, - 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, - 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, - 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, - 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, - 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, - 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, - 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, - 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, - 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, - 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, - 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, - 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, - 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, - 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, - 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, - 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, - 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, - 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, - 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, - 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, - 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, - 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, - 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, - 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, - 114, 283, 110, 469, 282, 194, 265, 273, 188, 180, - 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, - 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, - 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, - 221, 144, 170, 290, 292, 293, 470, 468, 463, 462, - 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, - 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, - 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, - 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, - 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, - 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, - 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, - 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, - 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, - 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, - 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, - 259, 267, 268, 278, 285, 288, 150, 275, 289, 577, - 565, 0, 0, 521, 580, 494, 511, 588, 512, 515, - 552, 479, 534, 202, 509, 0, 498, 474, 505, 475, - 496, 523, 135, 527, 493, 567, 537, 579, 169, 0, - 499, 213, 554, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 586, 172, 543, - 0, 253, 189, 0, 0, 0, 525, 569, 532, 562, - 520, 553, 484, 542, 581, 510, 550, 582, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, - 547, 576, 507, 549, 551, 590, 473, 544, 0, 477, - 480, 587, 572, 502, 503, 0, 0, 0, 0, 0, - 0, 0, 524, 533, 559, 518, 0, 0, 0, 0, - 0, 0, 0, 0, 500, 0, 541, 0, 0, 0, - 481, 478, 0, 0, 0, 0, 522, 0, 0, 0, - 483, 0, 501, 560, 0, 471, 147, 564, 571, 519, - 317, 575, 517, 516, 578, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 568, - 497, 506, 128, 504, 234, 210, 277, 540, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 812, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 469, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 476, 0, 255, 280, 299, 119, 492, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 470, 468, 463, 462, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 488, 491, 486, 487, 535, 536, - 583, 584, 585, 561, 482, 0, 489, 490, 0, 566, - 573, 574, 539, 101, 111, 171, 296, 227, 143, 281, - 472, 485, 132, 495, 0, 0, 508, 513, 514, 526, - 528, 529, 530, 531, 538, 545, 546, 548, 555, 556, - 557, 558, 563, 570, 589, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 577, 565, 0, 0, 521, 580, - 494, 511, 588, 512, 515, 552, 479, 534, 202, 509, - 0, 498, 474, 505, 475, 496, 523, 135, 527, 493, - 567, 537, 579, 169, 0, 499, 213, 554, 245, 127, - 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, - 261, 206, 586, 172, 543, 0, 253, 189, 0, 0, - 0, 525, 569, 532, 562, 520, 553, 484, 542, 581, - 510, 550, 582, 161, 125, 105, 199, 254, 142, 0, - 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, - 0, 0, 0, 121, 0, 547, 576, 507, 549, 551, - 590, 473, 544, 0, 477, 480, 587, 572, 502, 503, - 0, 0, 0, 0, 0, 0, 0, 524, 533, 559, - 518, 0, 0, 0, 0, 0, 0, 0, 0, 500, - 0, 541, 0, 0, 0, 481, 478, 0, 0, 0, - 0, 522, 0, 0, 0, 483, 0, 501, 560, 0, - 471, 147, 564, 571, 519, 317, 575, 517, 516, 578, - 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, - 149, 198, 232, 236, 568, 497, 506, 128, 504, 234, - 210, 277, 540, 214, 233, 173, 266, 225, 276, 286, - 287, 262, 284, 295, 250, 106, 260, 460, 122, 244, - 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, - 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, - 114, 283, 110, 469, 282, 194, 265, 273, 188, 180, - 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, - 154, 191, 190, 192, 0, 476, 0, 255, 280, 299, - 119, 492, 263, 291, 294, 0, 226, 120, 146, 138, - 221, 144, 170, 290, 292, 293, 470, 468, 463, 462, - 166, 174, 229, 297, 209, 235, 123, 279, 252, 488, - 491, 486, 487, 535, 536, 583, 584, 585, 561, 482, - 0, 489, 490, 0, 566, 573, 574, 539, 101, 111, - 171, 296, 227, 143, 281, 472, 485, 132, 495, 0, - 0, 508, 513, 514, 526, 528, 529, 530, 531, 538, - 545, 546, 548, 555, 556, 557, 558, 563, 570, 589, - 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, - 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, - 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, - 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, - 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, - 259, 267, 268, 278, 285, 288, 150, 275, 289, 202, - 0, 0, 983, 0, 366, 0, 0, 0, 135, 0, - 365, 0, 0, 0, 169, 0, 984, 213, 0, 245, - 127, 177, 175, 264, 140, 136, 134, 126, 157, 181, - 212, 261, 206, 409, 172, 0, 0, 253, 189, 0, - 0, 0, 0, 0, 400, 401, 0, 0, 0, 0, - 0, 0, 0, 0, 161, 125, 105, 199, 254, 142, - 62, 0, 0, 98, 99, 100, 387, 386, 389, 390, - 391, 392, 0, 0, 121, 388, 393, 394, 395, 0, - 0, 0, 0, 363, 380, 0, 408, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 377, 378, 450, 0, - 0, 0, 423, 0, 379, 0, 0, 372, 373, 375, - 374, 376, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 422, 0, 0, 317, 0, 0, 420, - 0, 224, 0, 258, 151, 168, 117, 165, 102, 113, - 0, 149, 198, 232, 236, 0, 0, 0, 128, 0, - 234, 210, 277, 0, 214, 233, 173, 266, 225, 276, - 286, 287, 262, 284, 295, 250, 106, 260, 274, 122, - 244, 0, 0, 0, 108, 272, 257, 187, 162, 163, - 107, 0, 230, 133, 145, 130, 201, 269, 270, 129, - 298, 114, 283, 110, 115, 282, 194, 265, 273, 188, - 180, 109, 271, 186, 179, 167, 139, 153, 222, 176, - 223, 154, 191, 190, 192, 0, 0, 0, 255, 280, - 299, 119, 0, 263, 291, 294, 0, 226, 120, 146, - 138, 221, 144, 170, 290, 292, 293, 193, 116, 156, - 251, 166, 174, 229, 297, 209, 235, 123, 279, 252, - 410, 421, 416, 417, 414, 415, 413, 412, 411, 424, - 402, 403, 404, 405, 407, 0, 418, 419, 406, 101, - 111, 171, 296, 227, 143, 281, 0, 0, 132, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 103, 104, 112, 118, 124, 131, 137, 141, 148, - 152, 155, 158, 159, 160, 164, 178, 182, 183, 184, - 185, 195, 196, 197, 200, 203, 204, 205, 207, 208, - 211, 215, 216, 217, 218, 219, 220, 228, 231, 237, - 238, 239, 240, 241, 242, 243, 246, 247, 248, 249, - 256, 259, 267, 268, 278, 285, 288, 150, 275, 289, - 202, 0, 0, 0, 0, 366, 0, 0, 0, 135, - 0, 365, 0, 0, 0, 169, 0, 0, 213, 0, - 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, - 181, 212, 261, 206, 409, 172, 0, 0, 253, 189, - 0, 0, 0, 0, 0, 400, 401, 0, 0, 0, - 0, 0, 0, 1090, 0, 161, 125, 105, 199, 254, - 142, 62, 0, 0, 98, 99, 100, 387, 386, 389, - 390, 391, 392, 0, 0, 121, 388, 393, 394, 395, - 1091, 0, 0, 0, 363, 380, 0, 408, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 377, 378, 0, - 0, 0, 0, 423, 0, 379, 0, 0, 372, 373, - 375, 374, 376, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 422, 0, 0, 317, 0, 0, - 420, 0, 224, 0, 258, 151, 168, 117, 165, 102, - 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, - 0, 234, 210, 277, 0, 214, 233, 173, 266, 225, - 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, - 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, - 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, - 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, - 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, - 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, - 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, - 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, - 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, - 252, 410, 421, 416, 417, 414, 415, 413, 412, 411, - 424, 402, 403, 404, 405, 407, 0, 418, 419, 406, - 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, - 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, - 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, - 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, - 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, - 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, - 289, 202, 0, 0, 0, 0, 366, 0, 0, 0, - 135, 0, 365, 0, 0, 0, 169, 0, 0, 213, - 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, - 157, 181, 212, 261, 206, 409, 172, 0, 0, 253, - 189, 0, 0, 0, 0, 0, 400, 401, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, - 254, 142, 62, 0, 438, 98, 99, 100, 387, 386, - 389, 390, 391, 392, 0, 0, 121, 388, 393, 394, - 395, 0, 0, 0, 0, 363, 380, 0, 408, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 377, 378, - 0, 0, 0, 0, 423, 0, 379, 0, 0, 372, - 373, 375, 374, 376, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 147, 422, 0, 0, 317, 0, - 0, 420, 0, 224, 0, 258, 151, 168, 117, 165, - 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, - 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, - 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, - 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, - 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, - 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, - 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, - 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, - 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, - 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, - 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, - 279, 252, 410, 421, 416, 417, 414, 415, 413, 412, - 411, 424, 402, 403, 404, 405, 407, 0, 418, 419, - 406, 101, 111, 171, 296, 227, 143, 281, 0, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, - 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, - 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, - 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, - 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, - 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, - 275, 289, 202, 0, 0, 0, 0, 366, 0, 0, - 0, 135, 0, 365, 0, 0, 0, 169, 0, 0, - 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, - 126, 157, 181, 212, 261, 206, 409, 172, 0, 0, - 253, 189, 0, 0, 0, 0, 0, 400, 401, 0, - 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, - 199, 254, 142, 62, 0, 0, 98, 99, 100, 387, - 386, 389, 390, 391, 392, 0, 0, 121, 388, 393, - 394, 395, 0, 0, 0, 0, 363, 380, 0, 408, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 377, - 378, 450, 0, 0, 0, 423, 0, 379, 0, 0, - 372, 373, 375, 374, 376, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 147, 422, 0, 0, 317, - 0, 0, 420, 0, 224, 0, 258, 151, 168, 117, - 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, - 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, - 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, - 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, - 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, - 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, - 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, - 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, - 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, - 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, - 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, - 123, 279, 252, 410, 421, 416, 417, 414, 415, 413, - 412, 411, 424, 402, 403, 404, 405, 407, 0, 418, - 419, 406, 101, 111, 171, 296, 227, 143, 281, 0, - 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, - 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, - 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, - 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, - 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, - 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, - 150, 275, 289, 202, 0, 0, 0, 0, 366, 0, - 0, 0, 135, 0, 365, 0, 0, 0, 169, 0, - 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 409, 172, 0, - 0, 253, 189, 0, 0, 0, 0, 0, 400, 401, - 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, - 105, 199, 254, 142, 62, 0, 0, 98, 99, 100, - 387, 1001, 389, 390, 391, 392, 0, 0, 121, 388, - 393, 394, 395, 0, 0, 0, 0, 363, 380, 0, - 408, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 377, 378, 450, 0, 0, 0, 423, 0, 379, 0, - 0, 372, 373, 375, 374, 376, 381, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 147, 422, 0, 0, - 317, 0, 0, 420, 0, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, - 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 410, 421, 416, 417, 414, 415, - 413, 412, 411, 424, 402, 403, 404, 405, 407, 0, - 418, 419, 406, 101, 111, 171, 296, 227, 143, 281, - 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 202, 0, 0, 0, 0, 366, - 0, 0, 0, 135, 0, 365, 0, 0, 0, 169, - 0, 0, 213, 0, 245, 127, 177, 175, 264, 140, - 136, 134, 126, 157, 181, 212, 261, 206, 409, 172, - 0, 0, 253, 189, 0, 0, 0, 0, 0, 400, - 401, 0, 0, 0, 0, 0, 0, 0, 0, 161, - 125, 105, 199, 254, 142, 62, 0, 0, 98, 99, - 100, 387, 998, 389, 390, 391, 392, 0, 0, 121, - 388, 393, 394, 395, 0, 0, 0, 0, 363, 380, - 0, 408, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 377, 378, 450, 0, 0, 0, 423, 0, 379, - 0, 0, 372, 373, 375, 374, 376, 381, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 147, 422, 0, - 0, 317, 0, 0, 420, 0, 224, 0, 258, 151, - 168, 117, 165, 102, 113, 0, 149, 198, 232, 236, - 0, 0, 0, 128, 0, 234, 210, 277, 0, 214, - 233, 173, 266, 225, 276, 286, 287, 262, 284, 295, - 250, 106, 260, 274, 122, 244, 0, 0, 0, 108, - 272, 257, 187, 162, 163, 107, 0, 230, 133, 145, - 130, 201, 269, 270, 129, 298, 114, 283, 110, 115, - 282, 194, 265, 273, 188, 180, 109, 271, 186, 179, - 167, 139, 153, 222, 176, 223, 154, 191, 190, 192, - 0, 0, 0, 255, 280, 299, 119, 0, 263, 291, - 294, 0, 226, 120, 146, 138, 221, 144, 170, 290, - 292, 293, 193, 116, 156, 251, 166, 174, 229, 297, - 209, 235, 123, 279, 252, 410, 421, 416, 417, 414, - 415, 413, 412, 411, 424, 402, 403, 404, 405, 407, - 0, 418, 419, 406, 101, 111, 171, 296, 227, 143, - 281, 0, 0, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 104, 112, 118, - 124, 131, 137, 141, 148, 152, 155, 158, 159, 160, - 164, 178, 182, 183, 184, 185, 195, 196, 197, 200, - 203, 204, 205, 207, 208, 211, 215, 216, 217, 218, - 219, 220, 228, 231, 237, 238, 239, 240, 241, 242, - 243, 246, 247, 248, 249, 256, 259, 267, 268, 278, - 285, 288, 150, 275, 289, 431, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, - 0, 0, 0, 366, 0, 0, 0, 135, 0, 365, - 0, 0, 0, 169, 0, 0, 213, 0, 245, 127, - 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, - 261, 206, 409, 172, 0, 0, 253, 189, 0, 0, - 0, 0, 0, 400, 401, 0, 0, 0, 0, 0, - 0, 0, 0, 161, 125, 105, 199, 254, 142, 62, - 0, 0, 98, 99, 100, 387, 386, 389, 390, 391, - 392, 0, 0, 121, 388, 393, 394, 395, 0, 0, - 0, 0, 363, 380, 0, 408, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 377, 378, 0, 0, 0, - 0, 423, 0, 379, 0, 0, 372, 373, 375, 374, - 376, 381, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 147, 422, 0, 0, 317, 0, 0, 420, 0, - 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, - 149, 198, 232, 236, 0, 0, 0, 128, 0, 234, - 210, 277, 0, 214, 233, 173, 266, 225, 276, 286, - 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, - 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, - 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, - 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, - 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, - 154, 191, 190, 192, 0, 0, 0, 255, 280, 299, - 119, 0, 263, 291, 294, 0, 226, 120, 146, 138, - 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, - 166, 174, 229, 297, 209, 235, 123, 279, 252, 410, - 421, 416, 417, 414, 415, 413, 412, 411, 424, 402, - 403, 404, 405, 407, 0, 418, 419, 406, 101, 111, - 171, 296, 227, 143, 281, 0, 0, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, - 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, - 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, - 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, - 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, - 259, 267, 268, 278, 285, 288, 150, 275, 289, 202, - 0, 0, 0, 0, 366, 0, 0, 0, 135, 0, - 365, 0, 0, 0, 169, 0, 0, 213, 0, 245, - 127, 177, 175, 264, 140, 136, 134, 126, 157, 181, - 212, 261, 206, 409, 172, 0, 0, 253, 189, 0, - 0, 0, 0, 0, 400, 401, 0, 0, 0, 0, - 0, 0, 0, 0, 161, 125, 105, 199, 254, 142, - 62, 0, 0, 98, 99, 100, 387, 386, 389, 390, - 391, 392, 0, 0, 121, 388, 393, 394, 395, 0, - 0, 0, 0, 363, 380, 0, 408, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 377, 378, 0, 0, - 0, 0, 423, 0, 379, 0, 0, 372, 373, 375, - 374, 376, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 422, 0, 0, 317, 0, 0, 420, - 0, 224, 0, 258, 151, 168, 117, 165, 102, 113, - 0, 149, 198, 232, 236, 0, 0, 0, 128, 0, - 234, 210, 277, 0, 214, 233, 173, 266, 225, 276, - 286, 287, 262, 284, 295, 250, 106, 260, 274, 122, - 244, 0, 0, 0, 108, 272, 257, 187, 162, 163, - 107, 0, 230, 133, 145, 130, 201, 269, 270, 129, - 298, 114, 283, 110, 115, 282, 194, 265, 273, 188, - 180, 109, 271, 186, 179, 167, 139, 153, 222, 176, - 223, 154, 191, 190, 192, 0, 0, 0, 255, 280, - 299, 119, 0, 263, 291, 294, 0, 226, 120, 146, - 138, 221, 144, 170, 290, 292, 293, 193, 116, 156, - 251, 166, 174, 229, 297, 209, 235, 123, 279, 252, - 410, 421, 416, 417, 414, 415, 413, 412, 411, 424, - 402, 403, 404, 405, 407, 0, 418, 419, 406, 101, - 111, 171, 296, 227, 143, 281, 0, 0, 132, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 103, 104, 112, 118, 124, 131, 137, 141, 148, - 152, 155, 158, 159, 160, 164, 178, 182, 183, 184, - 185, 195, 196, 197, 200, 203, 204, 205, 207, 208, - 211, 215, 216, 217, 218, 219, 220, 228, 231, 237, - 238, 239, 240, 241, 242, 243, 246, 247, 248, 249, - 256, 259, 267, 268, 278, 285, 288, 150, 275, 289, - 202, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 0, 0, 0, 0, 0, 169, 0, 0, 213, 0, - 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, - 181, 212, 261, 206, 409, 172, 0, 0, 253, 189, - 0, 0, 0, 0, 0, 400, 401, 0, 0, 0, - 0, 0, 0, 0, 0, 161, 125, 105, 199, 254, - 142, 62, 0, 0, 98, 99, 100, 387, 386, 389, - 390, 391, 392, 0, 0, 121, 388, 393, 394, 395, - 0, 0, 0, 0, 0, 380, 0, 408, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 377, 378, 0, - 0, 0, 0, 423, 0, 379, 0, 0, 372, 373, - 375, 374, 376, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 422, 0, 0, 317, 0, 0, - 420, 0, 224, 0, 258, 151, 168, 117, 165, 102, - 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, - 0, 234, 210, 277, 1747, 214, 233, 173, 266, 225, - 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, - 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, - 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, - 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, - 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, - 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, - 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, - 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, - 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, - 252, 410, 421, 416, 417, 414, 415, 413, 412, 411, - 424, 402, 403, 404, 405, 407, 0, 418, 419, 406, - 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, - 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, - 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, - 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, - 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, - 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, - 289, 202, 0, 0, 0, 0, 0, 0, 0, 0, - 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, - 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, - 157, 181, 212, 261, 206, 409, 172, 0, 0, 253, - 189, 0, 0, 0, 0, 0, 400, 401, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, - 254, 142, 62, 0, 438, 98, 99, 100, 387, 386, - 389, 390, 391, 392, 0, 0, 121, 388, 393, 394, - 395, 0, 0, 0, 0, 0, 380, 0, 408, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 377, 378, - 0, 0, 0, 0, 423, 0, 379, 0, 0, 372, - 373, 375, 374, 376, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 147, 422, 0, 0, 317, 0, - 0, 420, 0, 224, 0, 258, 151, 168, 117, 165, - 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, - 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, - 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, - 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, - 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, - 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, - 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, - 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, - 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, - 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, - 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, - 279, 252, 410, 421, 416, 417, 414, 415, 413, 412, - 411, 424, 402, 403, 404, 405, 407, 0, 418, 419, - 406, 101, 111, 171, 296, 227, 143, 281, 0, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, - 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, - 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, - 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, - 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, - 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, - 275, 289, 202, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 0, 0, 0, 169, 0, 0, - 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, - 126, 157, 181, 212, 261, 206, 409, 172, 0, 0, - 253, 189, 0, 0, 0, 0, 0, 400, 401, 0, - 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, - 199, 254, 142, 62, 0, 0, 98, 99, 100, 387, - 386, 389, 390, 391, 392, 0, 0, 121, 388, 393, - 394, 395, 0, 0, 0, 0, 0, 380, 0, 408, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 377, - 378, 0, 0, 0, 0, 423, 0, 379, 0, 0, - 372, 373, 375, 374, 376, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 147, 422, 0, 0, 317, - 0, 0, 420, 0, 224, 0, 258, 151, 168, 117, - 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, - 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, - 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, - 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, - 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, - 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, - 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, - 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, - 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, - 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, - 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, - 123, 279, 252, 410, 421, 416, 417, 414, 415, 413, - 412, 411, 424, 402, 403, 404, 405, 407, 0, 418, - 419, 406, 101, 111, 171, 296, 227, 143, 281, 0, - 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, - 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, - 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, - 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, - 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, - 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, - 150, 275, 289, 202, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 0, 0, 0, 0, 0, 169, 0, - 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 0, 172, 0, - 0, 253, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 693, 692, 702, 703, - 695, 696, 697, 698, 699, 700, 701, 694, 0, 0, - 704, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, - 317, 0, 0, 0, 0, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, - 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 111, 171, 296, 227, 143, 281, - 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 202, 0, 0, 0, 789, 0, - 0, 0, 0, 135, 0, 0, 0, 0, 0, 169, - 0, 0, 213, 0, 245, 127, 177, 175, 264, 140, - 136, 134, 126, 157, 181, 212, 261, 206, 0, 172, - 0, 0, 253, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, - 125, 105, 199, 254, 142, 0, 0, 0, 98, 99, - 100, 0, 791, 0, 0, 0, 0, 0, 0, 121, - 0, 0, 0, 0, 0, 682, 683, 681, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, - 0, 317, 0, 0, 0, 0, 224, 0, 258, 151, - 168, 117, 165, 102, 113, 0, 149, 198, 232, 236, - 0, 0, 0, 128, 0, 234, 210, 277, 0, 214, - 233, 173, 266, 225, 276, 286, 287, 262, 284, 295, - 250, 106, 260, 274, 122, 244, 0, 0, 0, 108, - 272, 257, 187, 162, 163, 107, 0, 230, 133, 145, - 130, 201, 269, 270, 129, 298, 114, 283, 110, 115, - 282, 194, 265, 273, 188, 180, 109, 271, 186, 179, - 167, 139, 153, 222, 176, 223, 154, 191, 190, 192, - 0, 0, 0, 255, 280, 299, 119, 0, 263, 291, - 294, 0, 226, 120, 146, 138, 221, 144, 170, 290, - 292, 293, 193, 116, 156, 251, 166, 174, 229, 297, - 209, 235, 123, 279, 252, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 111, 171, 296, 227, 143, - 281, 0, 0, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 104, 112, 118, - 124, 131, 137, 141, 148, 152, 155, 158, 159, 160, - 164, 178, 182, 183, 184, 185, 195, 196, 197, 200, - 203, 204, 205, 207, 208, 211, 215, 216, 217, 218, - 219, 220, 228, 231, 237, 238, 239, 240, 241, 242, - 243, 246, 247, 248, 249, 256, 259, 267, 268, 278, - 285, 288, 150, 275, 289, 202, 0, 0, 0, 0, - 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, - 169, 0, 0, 213, 0, 245, 127, 177, 175, 264, - 140, 136, 134, 126, 157, 181, 212, 261, 206, 0, - 172, 0, 0, 253, 189, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 161, 125, 105, 199, 254, 142, 0, 0, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, - 121, 0, 0, 0, 0, 0, 89, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 91, - 92, 0, 88, 0, 0, 0, 94, 224, 0, 258, - 151, 168, 117, 165, 102, 113, 0, 149, 198, 232, - 236, 0, 0, 0, 128, 0, 234, 210, 277, 0, - 214, 233, 173, 266, 225, 276, 286, 287, 262, 284, - 295, 250, 106, 260, 274, 122, 244, 0, 0, 0, - 108, 272, 257, 187, 162, 163, 107, 0, 230, 133, - 145, 130, 201, 269, 270, 129, 298, 114, 283, 110, - 115, 282, 194, 265, 273, 188, 180, 109, 271, 186, - 179, 167, 139, 153, 222, 176, 223, 154, 191, 190, - 192, 0, 0, 0, 255, 280, 299, 119, 0, 263, - 291, 294, 0, 226, 120, 146, 138, 221, 144, 170, - 290, 292, 293, 193, 116, 156, 251, 166, 174, 229, - 297, 209, 235, 123, 279, 252, 0, 90, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 111, 171, 296, 227, - 143, 281, 0, 0, 132, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 103, 104, 112, - 118, 124, 131, 137, 141, 148, 152, 155, 158, 159, - 160, 164, 178, 182, 183, 184, 185, 195, 196, 197, - 200, 203, 204, 205, 207, 208, 211, 215, 216, 217, - 218, 219, 220, 228, 231, 237, 238, 239, 240, 241, - 242, 243, 246, 247, 248, 249, 256, 259, 267, 268, - 278, 285, 288, 150, 275, 289, 202, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 1114, 0, 0, 0, - 0, 169, 0, 0, 213, 0, 245, 127, 177, 175, - 264, 140, 136, 134, 126, 157, 181, 212, 261, 206, - 0, 172, 0, 0, 253, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 161, 125, 105, 199, 254, 142, 0, 0, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, - 0, 0, 1113, 317, 0, 0, 0, 1109, 1107, 0, - 1108, 151, 168, 598, 165, 102, 113, 1105, 1111, 198, - 232, 236, 0, 0, 0, 128, 0, 234, 210, 277, - 0, 214, 233, 173, 266, 225, 276, 286, 287, 262, - 284, 295, 250, 106, 260, 274, 122, 244, 0, 0, - 0, 108, 272, 257, 187, 162, 163, 107, 0, 230, - 133, 145, 130, 201, 269, 270, 129, 298, 114, 283, - 110, 115, 282, 194, 265, 273, 188, 180, 109, 271, - 186, 179, 167, 139, 153, 222, 176, 223, 154, 191, - 190, 192, 0, 0, 0, 255, 280, 299, 119, 0, - 263, 291, 294, 0, 226, 120, 146, 138, 221, 144, - 170, 290, 292, 293, 193, 116, 156, 251, 166, 174, - 229, 297, 209, 235, 123, 279, 252, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 111, 171, 296, - 227, 143, 281, 0, 0, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, - 112, 118, 124, 131, 137, 141, 148, 152, 155, 158, - 159, 160, 164, 178, 182, 183, 184, 185, 195, 196, - 197, 200, 203, 204, 205, 207, 208, 211, 215, 216, - 217, 218, 219, 220, 228, 231, 237, 238, 239, 240, - 241, 242, 243, 246, 247, 248, 249, 256, 259, 267, - 268, 278, 285, 288, 150, 275, 289, 31, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 0, 0, 0, 0, 0, 169, 0, 0, 213, 0, - 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, - 181, 212, 261, 206, 0, 172, 0, 0, 253, 189, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 161, 125, 105, 199, 254, - 142, 62, 0, 438, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 0, 0, 0, 317, 0, 0, - 0, 0, 224, 0, 258, 151, 168, 117, 165, 102, - 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, - 0, 234, 210, 277, 0, 214, 233, 173, 266, 225, - 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, - 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, - 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, - 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, - 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, - 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, - 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, - 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, - 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, - 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, - 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, - 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, - 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, - 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, - 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, - 289, 202, 0, 0, 0, 1072, 0, 0, 0, 0, - 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, - 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, - 157, 181, 212, 261, 206, 0, 172, 0, 0, 253, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, - 254, 142, 0, 0, 0, 98, 99, 100, 0, 1074, - 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 147, 0, 0, 0, 317, 0, - 0, 0, 0, 224, 0, 258, 151, 168, 117, 165, - 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, - 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, - 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, - 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, - 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, - 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, - 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, - 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, - 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, - 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, - 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, - 279, 252, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 111, 171, 296, 227, 143, 281, 0, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, - 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, - 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, - 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, - 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, - 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, - 275, 289, 31, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, - 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, - 169, 0, 0, 213, 0, 245, 127, 177, 175, 264, - 140, 136, 134, 126, 157, 181, 212, 261, 206, 0, - 172, 0, 0, 253, 189, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 161, 125, 105, 199, 254, 142, 62, 0, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, - 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, - 0, 0, 317, 0, 0, 0, 0, 224, 0, 258, - 151, 168, 117, 165, 102, 113, 0, 149, 198, 232, - 236, 0, 0, 0, 128, 0, 234, 210, 277, 0, - 214, 233, 173, 266, 225, 276, 286, 287, 262, 284, - 295, 250, 106, 260, 274, 122, 244, 0, 0, 0, - 108, 272, 257, 187, 162, 163, 107, 0, 230, 133, - 145, 130, 201, 269, 270, 129, 298, 114, 283, 110, - 115, 282, 194, 265, 273, 188, 180, 109, 271, 186, - 179, 167, 139, 153, 222, 176, 223, 154, 191, 190, - 192, 0, 0, 0, 255, 280, 299, 119, 0, 263, - 291, 294, 0, 226, 120, 146, 138, 221, 144, 170, - 290, 292, 293, 193, 116, 156, 251, 166, 174, 229, - 297, 209, 235, 123, 279, 252, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 111, 171, 296, 227, - 143, 281, 0, 0, 132, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 103, 104, 112, - 118, 124, 131, 137, 141, 148, 152, 155, 158, 159, - 160, 164, 178, 182, 183, 184, 185, 195, 196, 197, - 200, 203, 204, 205, 207, 208, 211, 215, 216, 217, - 218, 219, 220, 228, 231, 237, 238, 239, 240, 241, - 242, 243, 246, 247, 248, 249, 256, 259, 267, 268, - 278, 285, 288, 150, 275, 289, 202, 0, 0, 0, - 1072, 0, 0, 0, 0, 135, 0, 0, 0, 0, - 0, 169, 0, 0, 213, 0, 245, 127, 177, 175, - 264, 140, 136, 134, 126, 157, 181, 212, 261, 206, - 0, 172, 0, 0, 253, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 161, 125, 105, 199, 254, 142, 0, 0, 0, - 98, 99, 100, 0, 1074, 0, 0, 0, 0, 0, - 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, - 0, 0, 0, 317, 0, 0, 0, 0, 224, 0, - 258, 151, 168, 117, 165, 102, 113, 0, 149, 198, - 232, 236, 0, 0, 0, 128, 0, 234, 210, 277, - 0, 1070, 233, 173, 266, 225, 276, 286, 287, 262, - 284, 295, 250, 106, 260, 274, 122, 244, 0, 0, - 0, 108, 272, 257, 187, 162, 163, 107, 0, 230, - 133, 145, 130, 201, 269, 270, 129, 298, 114, 283, - 110, 115, 282, 194, 265, 273, 188, 180, 109, 271, - 186, 179, 167, 139, 153, 222, 176, 223, 154, 191, - 190, 192, 0, 0, 0, 255, 280, 299, 119, 0, - 263, 291, 294, 0, 226, 120, 146, 138, 221, 144, - 170, 290, 292, 293, 193, 116, 156, 251, 166, 174, - 229, 297, 209, 235, 123, 279, 252, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 111, 171, 296, - 227, 143, 281, 0, 0, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, - 112, 118, 124, 131, 137, 141, 148, 152, 155, 158, - 159, 160, 164, 178, 182, 183, 184, 185, 195, 196, - 197, 200, 203, 204, 205, 207, 208, 211, 215, 216, - 217, 218, 219, 220, 228, 231, 237, 238, 239, 240, - 241, 242, 243, 246, 247, 248, 249, 256, 259, 267, - 268, 278, 285, 288, 150, 275, 289, 202, 0, 0, - 0, 0, 0, 0, 0, 0, 135, 0, 0, 0, - 0, 0, 169, 0, 0, 213, 0, 245, 127, 177, - 175, 264, 140, 136, 134, 126, 157, 181, 212, 261, - 206, 0, 172, 0, 0, 253, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 161, 125, 105, 199, 254, 142, 0, 0, - 0, 98, 99, 100, 0, 0, 1037, 0, 0, 1038, - 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 147, 0, 0, 0, 317, 0, 0, 0, 0, 224, - 0, 258, 151, 168, 117, 165, 102, 113, 0, 149, - 198, 232, 236, 0, 0, 0, 128, 0, 234, 210, - 277, 0, 214, 233, 173, 266, 225, 276, 286, 287, - 262, 284, 295, 250, 106, 260, 274, 122, 244, 0, - 0, 0, 108, 272, 257, 187, 162, 163, 107, 0, - 230, 133, 145, 130, 201, 269, 270, 129, 298, 114, - 283, 110, 115, 282, 194, 265, 273, 188, 180, 109, - 271, 186, 179, 167, 139, 153, 222, 176, 223, 154, - 191, 190, 192, 0, 0, 0, 255, 280, 299, 119, - 0, 263, 291, 294, 0, 226, 120, 146, 138, 221, - 144, 170, 290, 292, 293, 193, 116, 156, 251, 166, - 174, 229, 297, 209, 235, 123, 279, 252, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 101, 111, 171, - 296, 227, 143, 281, 0, 0, 132, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, - 104, 112, 118, 124, 131, 137, 141, 148, 152, 155, - 158, 159, 160, 164, 178, 182, 183, 184, 185, 195, - 196, 197, 200, 203, 204, 205, 207, 208, 211, 215, - 216, 217, 218, 219, 220, 228, 231, 237, 238, 239, - 240, 241, 242, 243, 246, 247, 248, 249, 256, 259, - 267, 268, 278, 285, 288, 150, 275, 289, 202, 0, - 0, 0, 0, 0, 0, 0, 0, 135, 0, 823, - 0, 0, 0, 169, 0, 0, 213, 0, 245, 127, - 177, 175, 264, 140, 136, 134, 126, 157, 181, 212, - 261, 206, 0, 172, 0, 0, 253, 189, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 161, 125, 105, 199, 254, 142, 0, - 0, 0, 98, 99, 100, 0, 822, 0, 0, 0, - 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 147, 0, 0, 0, 317, 0, 0, 0, 0, - 224, 0, 258, 151, 168, 117, 165, 102, 113, 0, - 149, 198, 232, 236, 0, 0, 0, 128, 0, 234, - 210, 277, 0, 214, 233, 173, 266, 225, 276, 286, - 287, 262, 284, 295, 250, 106, 260, 274, 122, 244, - 0, 0, 0, 108, 272, 257, 187, 162, 163, 107, - 0, 230, 133, 145, 130, 201, 269, 270, 129, 298, - 114, 283, 110, 115, 282, 194, 265, 273, 188, 180, - 109, 271, 186, 179, 167, 139, 153, 222, 176, 223, - 154, 191, 190, 192, 0, 0, 0, 255, 280, 299, - 119, 0, 263, 291, 294, 0, 226, 120, 146, 138, - 221, 144, 170, 290, 292, 293, 193, 116, 156, 251, - 166, 174, 229, 297, 209, 235, 123, 279, 252, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 111, - 171, 296, 227, 143, 281, 0, 0, 132, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 103, 104, 112, 118, 124, 131, 137, 141, 148, 152, - 155, 158, 159, 160, 164, 178, 182, 183, 184, 185, - 195, 196, 197, 200, 203, 204, 205, 207, 208, 211, - 215, 216, 217, 218, 219, 220, 228, 231, 237, 238, - 239, 240, 241, 242, 243, 246, 247, 248, 249, 256, - 259, 267, 268, 278, 285, 288, 150, 275, 289, 202, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 0, - 0, 0, 0, 0, 169, 0, 0, 213, 0, 245, - 127, 177, 175, 264, 140, 136, 134, 126, 157, 181, - 212, 261, 206, 0, 172, 0, 0, 253, 189, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 161, 125, 105, 199, 254, 142, - 0, 0, 0, 98, 99, 100, 0, 0, 0, 0, - 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 592, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 0, 0, 0, 317, 0, 0, 0, - 0, 224, 0, 258, 151, 168, 598, 165, 102, 113, - 596, 149, 198, 232, 236, 0, 0, 0, 128, 0, - 234, 210, 277, 0, 214, 233, 173, 266, 225, 276, - 286, 287, 262, 284, 295, 250, 106, 260, 274, 122, - 244, 0, 0, 0, 108, 272, 257, 187, 162, 163, - 107, 0, 230, 133, 145, 130, 201, 269, 270, 129, - 298, 114, 283, 110, 115, 282, 194, 265, 273, 188, - 180, 109, 271, 186, 179, 167, 139, 153, 222, 176, - 223, 154, 191, 190, 192, 0, 0, 0, 255, 280, - 299, 119, 0, 263, 291, 294, 0, 226, 120, 146, - 138, 221, 144, 170, 290, 292, 293, 193, 116, 156, - 251, 166, 174, 229, 297, 209, 235, 123, 279, 252, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, - 111, 171, 296, 227, 143, 281, 0, 0, 132, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 103, 104, 112, 118, 124, 131, 137, 141, 148, - 152, 155, 158, 159, 160, 164, 178, 182, 183, 184, - 185, 195, 196, 197, 200, 203, 204, 205, 207, 208, - 211, 215, 216, 217, 218, 219, 220, 228, 231, 237, - 238, 239, 240, 241, 242, 243, 246, 247, 248, 249, - 256, 259, 267, 268, 278, 285, 288, 150, 275, 289, - 202, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 0, 0, 0, 0, 0, 169, 0, 0, 213, 0, - 245, 127, 177, 175, 264, 140, 136, 134, 126, 157, - 181, 212, 261, 206, 0, 172, 0, 0, 253, 189, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 161, 125, 105, 199, 254, - 142, 0, 0, 438, 98, 99, 100, 0, 0, 0, - 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 0, 0, 0, 317, 0, 0, - 0, 0, 224, 0, 258, 151, 168, 117, 165, 102, - 113, 0, 149, 198, 232, 236, 0, 0, 0, 128, - 0, 234, 210, 277, 0, 214, 233, 173, 266, 225, - 276, 286, 287, 262, 284, 295, 250, 106, 260, 274, - 122, 244, 0, 0, 0, 108, 272, 257, 187, 162, - 163, 107, 0, 230, 133, 145, 130, 201, 269, 270, - 129, 298, 114, 283, 110, 115, 282, 194, 265, 273, - 188, 180, 109, 271, 186, 179, 167, 139, 153, 222, - 176, 223, 154, 191, 190, 192, 0, 0, 0, 255, - 280, 299, 119, 0, 263, 291, 294, 0, 226, 120, - 146, 138, 221, 144, 170, 290, 292, 293, 193, 116, - 156, 251, 166, 174, 229, 297, 209, 235, 123, 279, - 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 111, 171, 296, 227, 143, 281, 0, 0, 132, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 103, 104, 112, 118, 124, 131, 137, 141, - 148, 152, 155, 158, 159, 160, 164, 178, 182, 183, - 184, 185, 195, 196, 197, 200, 203, 204, 205, 207, - 208, 211, 215, 216, 217, 218, 219, 220, 228, 231, - 237, 238, 239, 240, 241, 242, 243, 246, 247, 248, - 249, 256, 259, 267, 268, 278, 285, 288, 150, 275, - 289, 202, 0, 0, 0, 0, 0, 0, 0, 0, - 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, - 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, - 157, 181, 212, 261, 206, 0, 172, 0, 0, 253, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, - 254, 142, 62, 0, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 147, 0, 0, 0, 317, 0, - 0, 0, 0, 224, 0, 258, 151, 168, 117, 165, - 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, - 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, - 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, - 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, - 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, - 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, - 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, - 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, - 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, - 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, - 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, - 279, 252, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 111, 171, 296, 227, 143, 281, 0, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, - 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, - 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, - 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, - 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, - 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, - 275, 289, 202, 0, 0, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 0, 0, 0, 169, 0, 0, - 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, - 126, 157, 181, 212, 261, 206, 0, 172, 0, 0, - 253, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, - 199, 254, 142, 0, 0, 0, 98, 99, 100, 0, - 1074, 0, 0, 0, 0, 0, 0, 121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 147, 0, 0, 0, 317, - 0, 0, 0, 0, 224, 0, 258, 151, 168, 117, - 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, - 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, - 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, - 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, - 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, - 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, - 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, - 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, - 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, - 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, - 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, - 123, 279, 252, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 111, 171, 296, 227, 143, 281, 0, - 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, - 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, - 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, - 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, - 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, - 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, - 150, 275, 289, 202, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 0, 0, 0, 0, 0, 169, 0, - 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 0, 172, 0, - 0, 253, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 791, 0, 0, 0, 0, 0, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, - 317, 0, 0, 0, 0, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, - 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 111, 171, 296, 227, 143, 281, - 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 805, 0, 0, 0, 0, 0, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, - 135, 0, 0, 0, 0, 0, 169, 0, 0, 213, - 0, 245, 127, 177, 175, 264, 140, 136, 134, 126, - 157, 181, 212, 261, 206, 0, 172, 0, 0, 253, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 125, 105, 199, - 254, 142, 0, 0, 0, 98, 99, 100, 0, 0, - 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 147, 0, 0, 0, 317, 0, - 0, 0, 0, 224, 0, 258, 151, 168, 117, 165, - 102, 113, 0, 149, 198, 232, 236, 0, 0, 0, - 128, 0, 234, 210, 277, 0, 214, 233, 173, 266, - 225, 276, 286, 287, 262, 284, 295, 250, 106, 260, - 274, 122, 244, 0, 0, 0, 108, 272, 257, 187, - 162, 163, 107, 0, 230, 133, 145, 130, 201, 269, - 270, 129, 298, 114, 283, 110, 115, 282, 194, 265, - 273, 188, 180, 109, 271, 186, 179, 167, 139, 153, - 222, 176, 223, 154, 191, 190, 192, 0, 0, 0, - 255, 280, 299, 119, 0, 263, 291, 294, 0, 226, - 120, 146, 138, 221, 144, 170, 290, 292, 293, 193, - 116, 156, 251, 166, 174, 229, 297, 209, 235, 123, - 279, 252, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 111, 171, 296, 227, 143, 281, 0, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 104, 112, 118, 124, 131, 137, - 141, 148, 152, 155, 158, 159, 160, 164, 178, 182, - 183, 184, 185, 195, 196, 197, 200, 203, 204, 205, - 207, 208, 211, 215, 216, 217, 218, 219, 220, 228, - 231, 237, 238, 239, 240, 241, 242, 243, 246, 247, - 248, 249, 256, 259, 267, 268, 278, 285, 288, 150, - 275, 289, 202, 0, 0, 0, 0, 0, 0, 0, - 795, 135, 0, 0, 0, 0, 0, 169, 0, 0, - 213, 0, 245, 127, 177, 175, 264, 140, 136, 134, - 126, 157, 181, 212, 261, 206, 0, 172, 0, 0, - 253, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 161, 125, 105, - 199, 254, 142, 0, 0, 0, 98, 99, 100, 0, - 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 147, 0, 0, 0, 317, - 0, 0, 0, 0, 224, 0, 258, 151, 168, 117, - 165, 102, 113, 0, 149, 198, 232, 236, 0, 0, - 0, 128, 0, 234, 210, 277, 0, 214, 233, 173, - 266, 225, 276, 286, 287, 262, 284, 295, 250, 106, - 260, 274, 122, 244, 0, 0, 0, 108, 272, 257, - 187, 162, 163, 107, 0, 230, 133, 145, 130, 201, - 269, 270, 129, 298, 114, 283, 110, 115, 282, 194, - 265, 273, 188, 180, 109, 271, 186, 179, 167, 139, - 153, 222, 176, 223, 154, 191, 190, 192, 0, 0, - 0, 255, 280, 299, 119, 0, 263, 291, 294, 0, - 226, 120, 146, 138, 221, 144, 170, 290, 292, 293, - 193, 116, 156, 251, 166, 174, 229, 297, 209, 235, - 123, 279, 252, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 111, 171, 296, 227, 143, 281, 0, - 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 103, 104, 112, 118, 124, 131, - 137, 141, 148, 152, 155, 158, 159, 160, 164, 178, - 182, 183, 184, 185, 195, 196, 197, 200, 203, 204, - 205, 207, 208, 211, 215, 216, 217, 218, 219, 220, - 228, 231, 237, 238, 239, 240, 241, 242, 243, 246, - 247, 248, 249, 256, 259, 267, 268, 278, 285, 288, - 150, 275, 289, 202, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 0, 0, 0, 0, 0, 169, 0, - 0, 213, 0, 245, 127, 177, 175, 264, 140, 136, - 134, 126, 157, 181, 212, 261, 206, 0, 172, 0, - 0, 253, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 161, 125, - 105, 199, 254, 142, 0, 0, 0, 98, 99, 100, - 0, 671, 0, 0, 0, 0, 0, 0, 121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, - 317, 0, 0, 0, 0, 224, 0, 258, 151, 168, - 117, 165, 102, 113, 0, 149, 198, 232, 236, 0, - 0, 0, 128, 0, 234, 210, 277, 0, 214, 233, - 173, 266, 225, 276, 286, 287, 262, 284, 295, 250, - 106, 260, 274, 122, 244, 0, 0, 0, 108, 272, - 257, 187, 162, 163, 107, 0, 230, 133, 145, 130, - 201, 269, 270, 129, 298, 114, 283, 110, 115, 282, - 194, 265, 273, 188, 180, 109, 271, 186, 179, 167, - 139, 153, 222, 176, 223, 154, 191, 190, 192, 0, - 0, 0, 255, 280, 299, 119, 0, 263, 291, 294, - 0, 226, 120, 146, 138, 221, 144, 170, 290, 292, - 293, 193, 116, 156, 251, 166, 174, 229, 297, 209, - 235, 123, 279, 252, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 101, 111, 171, 296, 227, 143, 281, - 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 104, 112, 118, 124, - 131, 137, 141, 148, 152, 155, 158, 159, 160, 164, - 178, 182, 183, 184, 185, 195, 196, 197, 200, 203, - 204, 205, 207, 208, 211, 215, 216, 217, 218, 219, - 220, 228, 231, 237, 238, 239, 240, 241, 242, 243, - 246, 247, 248, 249, 256, 259, 267, 268, 278, 285, - 288, 150, 275, 289, 202, 0, 0, 0, 0, 0, - 0, 0, 0, 135, 0, 0, 0, 0, 0, 169, - 0, 0, 213, 0, 245, 127, 177, 175, 264, 140, - 136, 134, 126, 157, 181, 212, 261, 206, 0, 172, - 0, 0, 253, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, - 125, 105, 199, 254, 142, 0, 0, 0, 98, 99, - 100, 0, 0, 0, 0, 0, 0, 0, 0, 121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 354, 0, 147, 0, 0, - 0, 317, 0, 0, 0, 0, 224, 0, 258, 151, - 168, 117, 165, 102, 113, 0, 149, 198, 232, 236, - 0, 0, 0, 128, 0, 234, 210, 277, 0, 214, - 233, 173, 266, 225, 276, 286, 287, 262, 284, 295, - 250, 106, 260, 274, 122, 244, 0, 0, 0, 108, - 272, 257, 187, 162, 163, 107, 0, 230, 133, 145, - 130, 201, 269, 270, 129, 298, 114, 283, 110, 115, - 282, 194, 265, 273, 188, 180, 109, 271, 186, 179, - 167, 139, 153, 222, 176, 223, 154, 191, 190, 192, - 0, 0, 0, 255, 280, 299, 119, 0, 263, 291, - 294, 0, 226, 120, 146, 138, 221, 144, 170, 290, - 292, 293, 193, 116, 156, 251, 166, 174, 229, 297, - 209, 235, 123, 279, 252, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 111, 171, 296, 227, 143, - 281, 0, 0, 132, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 103, 104, 112, 118, - 124, 131, 137, 141, 148, 152, 155, 158, 159, 160, - 164, 178, 182, 183, 184, 185, 195, 196, 197, 200, - 203, 204, 205, 207, 208, 211, 215, 216, 217, 218, - 219, 220, 228, 231, 237, 238, 239, 240, 241, 242, - 243, 246, 247, 248, 249, 256, 259, 267, 268, 278, - 285, 288, 353, 275, 289, 202, 0, 0, 0, 0, - 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, - 169, 0, 0, 213, 0, 245, 127, 177, 175, 264, - 140, 136, 134, 126, 157, 181, 212, 261, 206, 0, - 172, 0, 0, 253, 189, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 161, 125, 105, 199, 254, 142, 0, 0, 0, 98, - 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, - 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, - 312, 0, 317, 0, 0, 0, 0, 224, 0, 258, - 151, 168, 117, 165, 102, 113, 0, 149, 198, 232, - 236, 0, 0, 0, 128, 0, 234, 210, 277, 0, - 214, 233, 173, 266, 225, 276, 286, 287, 262, 284, - 295, 250, 106, 260, 274, 122, 244, 0, 0, 0, - 108, 272, 257, 187, 162, 163, 107, 0, 230, 133, - 145, 130, 201, 269, 270, 129, 298, 114, 283, 110, - 115, 282, 194, 265, 273, 188, 180, 109, 271, 186, - 179, 167, 139, 153, 222, 176, 223, 154, 191, 190, - 192, 0, 0, 0, 255, 280, 299, 119, 0, 263, - 291, 294, 0, 226, 120, 146, 138, 221, 144, 170, - 290, 292, 293, 193, 116, 156, 251, 166, 174, 229, - 297, 209, 235, 123, 279, 252, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 111, 171, 296, 227, - 143, 281, 0, 0, 132, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 103, 104, 112, - 118, 124, 131, 137, 141, 148, 152, 155, 158, 159, - 160, 164, 178, 182, 183, 184, 185, 195, 196, 197, - 200, 203, 204, 205, 207, 208, 211, 215, 216, 217, - 218, 219, 220, 228, 231, 237, 238, 239, 240, 241, - 242, 243, 246, 247, 248, 249, 256, 259, 267, 268, - 278, 285, 288, 150, 275, 289, 202, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, - 0, 169, 0, 0, 213, 0, 245, 127, 177, 175, - 264, 140, 136, 134, 126, 157, 181, 212, 261, 206, - 0, 172, 0, 0, 253, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 161, 125, 105, 199, 254, 142, 0, 0, 0, - 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, - 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, - 0, 0, 0, 317, 0, 0, 0, 0, 224, 0, - 258, 151, 168, 117, 165, 102, 113, 0, 149, 198, - 232, 236, 0, 0, 0, 128, 0, 234, 210, 277, - 0, 214, 233, 173, 266, 225, 276, 286, 287, 262, - 284, 295, 250, 106, 260, 274, 122, 244, 0, 0, - 0, 108, 272, 257, 187, 162, 163, 107, 0, 230, - 133, 145, 130, 201, 269, 270, 129, 298, 114, 283, - 110, 115, 282, 194, 265, 273, 188, 180, 109, 271, - 186, 179, 167, 139, 153, 222, 176, 223, 154, 191, - 190, 192, 0, 0, 0, 255, 280, 299, 119, 0, - 263, 291, 294, 0, 226, 120, 146, 138, 221, 144, - 170, 290, 292, 293, 193, 116, 156, 251, 166, 174, - 229, 297, 209, 235, 123, 279, 252, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 111, 171, 296, - 227, 143, 281, 0, 0, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, - 112, 118, 124, 131, 137, 141, 148, 152, 155, 158, - 159, 160, 164, 178, 182, 183, 184, 185, 195, 196, - 197, 200, 203, 204, 205, 207, 208, 211, 215, 216, - 217, 218, 219, 220, 228, 231, 237, 238, 239, 240, - 241, 242, 243, 246, 247, 248, 249, 256, 259, 267, - 268, 278, 285, 288, 150, 275, 289, + 0, 0, 1588, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 575, 563, 0, 0, 519, 578, + 492, 509, 586, 510, 513, 550, 477, 532, 215, 507, + 0, 496, 472, 503, 473, 494, 521, 148, 525, 491, + 565, 535, 577, 182, 0, 497, 226, 552, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 584, 185, 541, 0, 266, 202, 0, 0, + 0, 523, 567, 530, 560, 518, 551, 482, 540, 579, + 508, 548, 580, 174, 138, 118, 212, 267, 155, 0, + 0, 0, 111, 112, 113, 1645, 1100, 1101, 0, 0, + 0, 0, 0, 134, 0, 545, 574, 505, 547, 549, + 588, 471, 542, 0, 475, 478, 585, 570, 500, 501, + 1312, 0, 0, 0, 0, 0, 0, 522, 531, 557, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 498, + 0, 539, 0, 0, 0, 479, 476, 0, 0, 0, + 0, 520, 0, 0, 0, 481, 0, 499, 558, 0, + 469, 160, 562, 569, 517, 299, 573, 515, 514, 576, + 237, 1697, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 566, 495, 504, 141, 502, 247, + 223, 290, 538, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 287, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 128, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 474, 0, 268, 293, 313, + 132, 490, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 206, 129, 169, 264, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 486, + 489, 484, 485, 533, 534, 581, 582, 583, 559, 480, + 0, 487, 488, 0, 564, 571, 572, 537, 114, 124, + 184, 310, 240, 156, 294, 470, 483, 145, 493, 0, + 0, 506, 511, 512, 524, 526, 527, 528, 529, 536, + 543, 544, 546, 553, 554, 555, 556, 561, 568, 587, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 163, 288, 303, 575, + 563, 0, 0, 519, 578, 492, 509, 586, 510, 513, + 550, 477, 532, 215, 507, 0, 496, 472, 503, 473, + 494, 521, 148, 525, 491, 565, 535, 577, 182, 0, + 497, 226, 552, 258, 140, 190, 188, 277, 153, 149, + 147, 139, 170, 194, 225, 274, 219, 584, 185, 541, + 0, 266, 202, 0, 0, 0, 523, 567, 530, 560, + 518, 551, 482, 540, 579, 508, 548, 580, 174, 138, + 118, 212, 267, 155, 0, 0, 0, 111, 112, 113, + 0, 1100, 1101, 0, 0, 0, 0, 0, 134, 0, + 545, 574, 505, 547, 549, 588, 471, 542, 0, 475, + 478, 585, 570, 500, 501, 0, 0, 0, 0, 0, + 0, 0, 522, 531, 557, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 498, 0, 539, 0, 0, 0, + 479, 476, 0, 0, 0, 0, 520, 0, 0, 0, + 481, 0, 499, 558, 0, 469, 160, 562, 569, 517, + 299, 573, 515, 514, 576, 237, 0, 271, 164, 181, + 130, 178, 115, 126, 0, 162, 211, 245, 249, 566, + 495, 504, 141, 502, 247, 223, 290, 538, 227, 246, + 186, 279, 238, 289, 300, 301, 275, 297, 309, 263, + 119, 273, 287, 135, 257, 0, 0, 0, 121, 285, + 270, 200, 175, 176, 120, 0, 243, 146, 158, 143, + 214, 282, 283, 142, 312, 127, 296, 123, 128, 295, + 207, 278, 286, 201, 193, 122, 284, 199, 192, 180, + 152, 166, 235, 189, 236, 167, 204, 203, 205, 0, + 474, 0, 268, 293, 313, 132, 490, 276, 305, 308, + 0, 239, 133, 159, 151, 234, 157, 183, 304, 306, + 307, 206, 129, 169, 264, 179, 187, 242, 311, 222, + 248, 136, 292, 265, 486, 489, 484, 485, 533, 534, + 581, 582, 583, 559, 480, 0, 487, 488, 0, 564, + 571, 572, 537, 114, 124, 184, 310, 240, 156, 294, + 470, 483, 145, 493, 0, 0, 506, 511, 512, 524, + 526, 527, 528, 529, 536, 543, 544, 546, 553, 554, + 555, 556, 561, 568, 587, 116, 117, 125, 131, 137, + 144, 150, 154, 161, 165, 168, 171, 172, 173, 177, + 191, 195, 196, 197, 198, 208, 209, 210, 213, 216, + 217, 218, 220, 221, 224, 228, 229, 230, 231, 232, + 233, 241, 244, 250, 251, 252, 253, 254, 255, 256, + 259, 260, 261, 262, 269, 272, 280, 281, 291, 298, + 302, 163, 288, 303, 575, 563, 0, 0, 519, 578, + 492, 509, 586, 510, 513, 550, 477, 532, 215, 507, + 0, 496, 472, 503, 473, 494, 521, 148, 525, 491, + 565, 535, 577, 182, 0, 497, 226, 552, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 584, 185, 541, 0, 266, 202, 0, 0, + 0, 523, 567, 530, 560, 518, 551, 482, 540, 579, + 508, 548, 580, 174, 138, 118, 212, 267, 155, 0, + 0, 0, 111, 112, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 545, 574, 505, 547, 549, + 588, 471, 542, 0, 475, 478, 585, 570, 500, 501, + 0, 0, 0, 0, 0, 0, 0, 522, 531, 557, + 516, 0, 0, 0, 0, 0, 0, 1432, 0, 498, + 0, 539, 0, 0, 0, 479, 476, 0, 0, 0, + 0, 520, 0, 0, 0, 481, 0, 499, 558, 0, + 469, 160, 562, 569, 517, 299, 573, 515, 514, 576, + 237, 0, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 566, 495, 504, 141, 502, 247, + 223, 290, 538, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 287, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 128, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 474, 0, 268, 293, 313, + 132, 490, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 206, 129, 169, 264, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 486, + 489, 484, 485, 533, 534, 581, 582, 583, 559, 480, + 0, 487, 488, 0, 564, 571, 572, 537, 114, 124, + 184, 310, 240, 156, 294, 470, 483, 145, 493, 0, + 0, 506, 511, 512, 524, 526, 527, 528, 529, 536, + 543, 544, 546, 553, 554, 555, 556, 561, 568, 587, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 163, 288, 303, 575, + 563, 0, 0, 519, 578, 492, 509, 586, 510, 513, + 550, 477, 532, 215, 507, 0, 496, 472, 503, 473, + 494, 521, 148, 525, 491, 565, 535, 577, 182, 0, + 497, 226, 552, 258, 140, 190, 188, 277, 153, 149, + 147, 139, 170, 194, 225, 274, 219, 584, 185, 541, + 0, 266, 202, 0, 0, 0, 523, 567, 530, 560, + 518, 551, 482, 540, 579, 508, 548, 580, 174, 138, + 118, 212, 267, 155, 62, 0, 0, 111, 112, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 545, 574, 505, 547, 549, 588, 471, 542, 0, 475, + 478, 585, 570, 500, 501, 0, 0, 0, 0, 0, + 0, 0, 522, 531, 557, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 498, 0, 539, 0, 0, 0, + 479, 476, 0, 0, 0, 0, 520, 0, 0, 0, + 481, 0, 499, 558, 0, 469, 160, 562, 569, 517, + 299, 573, 515, 514, 576, 237, 0, 271, 164, 181, + 130, 178, 115, 126, 0, 162, 211, 245, 249, 566, + 495, 504, 141, 502, 247, 223, 290, 538, 227, 246, + 186, 279, 238, 289, 300, 301, 275, 297, 309, 263, + 119, 273, 287, 135, 257, 0, 0, 0, 121, 285, + 270, 200, 175, 176, 120, 0, 243, 146, 158, 143, + 214, 282, 283, 142, 312, 127, 296, 123, 128, 295, + 207, 278, 286, 201, 193, 122, 284, 199, 192, 180, + 152, 166, 235, 189, 236, 167, 204, 203, 205, 0, + 474, 0, 268, 293, 313, 132, 490, 276, 305, 308, + 0, 239, 133, 159, 151, 234, 157, 183, 304, 306, + 307, 206, 129, 169, 264, 179, 187, 242, 311, 222, + 248, 136, 292, 265, 486, 489, 484, 485, 533, 534, + 581, 582, 583, 559, 480, 0, 487, 488, 0, 564, + 571, 572, 537, 114, 124, 184, 310, 240, 156, 294, + 470, 483, 145, 493, 0, 0, 506, 511, 512, 524, + 526, 527, 528, 529, 536, 543, 544, 546, 553, 554, + 555, 556, 561, 568, 587, 116, 117, 125, 131, 137, + 144, 150, 154, 161, 165, 168, 171, 172, 173, 177, + 191, 195, 196, 197, 198, 208, 209, 210, 213, 216, + 217, 218, 220, 221, 224, 228, 229, 230, 231, 232, + 233, 241, 244, 250, 251, 252, 253, 254, 255, 256, + 259, 260, 261, 262, 269, 272, 280, 281, 291, 298, + 302, 163, 288, 303, 575, 563, 0, 0, 519, 578, + 492, 509, 586, 510, 513, 550, 477, 532, 215, 507, + 0, 496, 472, 503, 473, 494, 521, 148, 525, 491, + 565, 535, 577, 182, 0, 497, 226, 552, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 584, 185, 541, 0, 266, 202, 0, 0, + 0, 523, 567, 530, 560, 518, 551, 482, 540, 579, + 508, 548, 580, 174, 138, 118, 212, 267, 155, 0, + 0, 0, 111, 112, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 545, 574, 505, 547, 549, + 588, 471, 542, 0, 475, 478, 585, 570, 500, 501, + 0, 0, 0, 0, 0, 0, 0, 522, 531, 557, + 516, 0, 0, 0, 0, 0, 0, 1302, 0, 498, + 0, 539, 0, 0, 0, 479, 476, 0, 0, 0, + 0, 520, 0, 0, 0, 481, 0, 499, 558, 0, + 469, 160, 562, 569, 517, 299, 573, 515, 514, 576, + 237, 0, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 566, 495, 504, 141, 502, 247, + 223, 290, 538, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 287, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 128, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 474, 0, 268, 293, 313, + 132, 490, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 206, 129, 169, 264, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 486, + 489, 484, 485, 533, 534, 581, 582, 583, 559, 480, + 0, 487, 488, 0, 564, 571, 572, 537, 114, 124, + 184, 310, 240, 156, 294, 470, 483, 145, 493, 0, + 0, 506, 511, 512, 524, 526, 527, 528, 529, 536, + 543, 544, 546, 553, 554, 555, 556, 561, 568, 587, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 163, 288, 303, 575, + 563, 0, 0, 519, 578, 492, 509, 586, 510, 513, + 550, 477, 532, 215, 507, 0, 496, 472, 503, 473, + 494, 521, 148, 525, 491, 565, 535, 577, 182, 0, + 497, 226, 552, 258, 140, 190, 188, 277, 153, 149, + 147, 139, 170, 194, 225, 274, 219, 584, 185, 541, + 0, 266, 202, 0, 0, 0, 523, 567, 530, 560, + 518, 551, 482, 540, 579, 508, 548, 580, 174, 138, + 118, 212, 267, 155, 0, 0, 0, 111, 112, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 545, 574, 505, 547, 549, 588, 471, 542, 0, 475, + 478, 585, 570, 500, 501, 0, 0, 0, 0, 0, + 0, 0, 522, 531, 557, 516, 0, 0, 0, 0, + 0, 0, 1046, 0, 498, 0, 539, 0, 0, 0, + 479, 476, 0, 0, 0, 0, 520, 0, 0, 0, + 481, 0, 499, 558, 0, 469, 160, 562, 569, 517, + 299, 573, 515, 514, 576, 237, 0, 271, 164, 181, + 130, 178, 115, 126, 0, 162, 211, 245, 249, 566, + 495, 504, 141, 502, 247, 223, 290, 538, 227, 246, + 186, 279, 238, 289, 300, 301, 275, 297, 309, 263, + 119, 273, 287, 135, 257, 0, 0, 0, 121, 285, + 270, 200, 175, 176, 120, 0, 243, 146, 158, 143, + 214, 282, 283, 142, 312, 127, 296, 123, 128, 295, + 207, 278, 286, 201, 193, 122, 284, 199, 192, 180, + 152, 166, 235, 189, 236, 167, 204, 203, 205, 0, + 474, 0, 268, 293, 313, 132, 490, 276, 305, 308, + 0, 239, 133, 159, 151, 234, 157, 183, 304, 306, + 307, 206, 129, 169, 264, 179, 187, 242, 311, 222, + 248, 136, 292, 265, 486, 489, 484, 485, 533, 534, + 581, 582, 583, 559, 480, 0, 487, 488, 0, 564, + 571, 572, 537, 114, 124, 184, 310, 240, 156, 294, + 470, 483, 145, 493, 0, 0, 506, 511, 512, 524, + 526, 527, 528, 529, 536, 543, 544, 546, 553, 554, + 555, 556, 561, 568, 587, 116, 117, 125, 131, 137, + 144, 150, 154, 161, 165, 168, 171, 172, 173, 177, + 191, 195, 196, 197, 198, 208, 209, 210, 213, 216, + 217, 218, 220, 221, 224, 228, 229, 230, 231, 232, + 233, 241, 244, 250, 251, 252, 253, 254, 255, 256, + 259, 260, 261, 262, 269, 272, 280, 281, 291, 298, + 302, 163, 288, 303, 575, 563, 0, 0, 519, 578, + 492, 509, 586, 510, 513, 550, 477, 532, 215, 507, + 0, 496, 472, 503, 473, 494, 521, 148, 525, 491, + 565, 535, 577, 182, 0, 497, 226, 552, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 584, 185, 541, 0, 266, 202, 0, 0, + 0, 523, 567, 530, 560, 518, 551, 482, 540, 579, + 508, 548, 580, 174, 138, 118, 212, 267, 155, 0, + 0, 0, 111, 112, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 545, 574, 505, 547, 549, + 588, 471, 542, 0, 475, 478, 585, 570, 500, 501, + 0, 0, 0, 0, 0, 0, 0, 522, 531, 557, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 498, + 0, 539, 0, 0, 0, 479, 476, 0, 0, 0, + 0, 520, 0, 0, 0, 481, 0, 499, 558, 0, + 469, 160, 562, 569, 517, 299, 573, 515, 514, 576, + 237, 0, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 566, 495, 504, 141, 502, 247, + 223, 290, 538, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 287, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 128, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 474, 0, 268, 293, 313, + 132, 490, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 206, 129, 169, 264, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 486, + 489, 484, 485, 533, 534, 581, 582, 583, 559, 480, + 0, 487, 488, 0, 564, 571, 572, 537, 114, 124, + 184, 310, 240, 156, 294, 470, 483, 145, 493, 0, + 0, 506, 511, 512, 524, 526, 527, 528, 529, 536, + 543, 544, 546, 553, 554, 555, 556, 561, 568, 587, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 163, 288, 303, 575, + 563, 0, 0, 519, 578, 492, 509, 586, 510, 513, + 550, 477, 532, 215, 507, 0, 496, 472, 503, 473, + 494, 521, 148, 525, 491, 565, 535, 577, 182, 0, + 497, 226, 552, 258, 140, 190, 188, 277, 153, 149, + 147, 139, 170, 194, 225, 274, 219, 584, 185, 541, + 0, 266, 202, 0, 0, 0, 523, 567, 530, 560, + 518, 551, 482, 540, 579, 508, 548, 580, 174, 138, + 118, 212, 267, 155, 0, 0, 0, 111, 112, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 545, 574, 505, 547, 549, 588, 471, 542, 0, 475, + 478, 585, 570, 500, 501, 0, 0, 0, 0, 0, + 0, 0, 522, 531, 557, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 498, 0, 539, 0, 0, 0, + 479, 476, 0, 0, 0, 0, 520, 0, 0, 0, + 481, 0, 499, 558, 0, 469, 160, 562, 569, 517, + 299, 573, 515, 514, 576, 237, 0, 271, 164, 181, + 130, 178, 115, 126, 0, 162, 211, 245, 249, 566, + 495, 504, 141, 502, 247, 223, 290, 538, 227, 246, + 186, 279, 238, 289, 300, 301, 275, 297, 309, 263, + 119, 273, 287, 135, 257, 0, 0, 0, 121, 285, + 270, 200, 175, 176, 120, 0, 243, 146, 158, 143, + 214, 282, 283, 142, 312, 127, 296, 123, 467, 295, + 207, 278, 286, 201, 193, 122, 284, 199, 192, 180, + 152, 166, 235, 189, 236, 167, 204, 203, 205, 0, + 474, 0, 268, 293, 313, 132, 490, 276, 305, 308, + 0, 239, 133, 159, 151, 234, 157, 183, 304, 306, + 307, 468, 466, 461, 460, 179, 187, 242, 311, 222, + 248, 136, 292, 265, 486, 489, 484, 485, 533, 534, + 581, 582, 583, 559, 480, 0, 487, 488, 0, 564, + 571, 572, 537, 114, 124, 184, 310, 240, 156, 294, + 470, 483, 145, 493, 0, 0, 506, 511, 512, 524, + 526, 527, 528, 529, 536, 543, 544, 546, 553, 554, + 555, 556, 561, 568, 587, 116, 117, 125, 131, 137, + 144, 150, 154, 161, 165, 168, 171, 172, 173, 177, + 191, 195, 196, 197, 198, 208, 209, 210, 213, 216, + 217, 218, 220, 221, 224, 228, 229, 230, 231, 232, + 233, 241, 244, 250, 251, 252, 253, 254, 255, 256, + 259, 260, 261, 262, 269, 272, 280, 281, 291, 298, + 302, 163, 288, 303, 575, 563, 0, 0, 519, 578, + 492, 509, 586, 510, 513, 550, 477, 532, 215, 507, + 0, 496, 472, 503, 473, 494, 521, 148, 525, 491, + 565, 535, 577, 182, 0, 497, 226, 552, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 584, 185, 541, 0, 266, 202, 0, 0, + 0, 523, 567, 530, 560, 518, 551, 482, 540, 579, + 508, 548, 580, 174, 138, 118, 212, 267, 155, 0, + 0, 0, 111, 112, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 545, 574, 505, 547, 549, + 588, 471, 542, 0, 475, 478, 585, 570, 500, 501, + 0, 0, 0, 0, 0, 0, 0, 522, 531, 557, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 498, + 0, 539, 0, 0, 0, 479, 476, 0, 0, 0, + 0, 520, 0, 0, 0, 481, 0, 499, 558, 0, + 469, 160, 562, 569, 517, 299, 573, 515, 514, 576, + 237, 0, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 566, 495, 504, 141, 502, 247, + 223, 290, 538, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 813, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 467, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 474, 0, 268, 293, 313, + 132, 490, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 468, 466, 461, 460, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 486, + 489, 484, 485, 533, 534, 581, 582, 583, 559, 480, + 0, 487, 488, 0, 564, 571, 572, 537, 114, 124, + 184, 310, 240, 156, 294, 470, 483, 145, 493, 0, + 0, 506, 511, 512, 524, 526, 527, 528, 529, 536, + 543, 544, 546, 553, 554, 555, 556, 561, 568, 587, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 163, 288, 303, 575, + 563, 0, 0, 519, 578, 492, 509, 586, 510, 513, + 550, 477, 532, 215, 507, 0, 496, 472, 503, 473, + 494, 521, 148, 525, 491, 565, 535, 577, 182, 0, + 497, 226, 552, 258, 140, 190, 188, 277, 153, 149, + 147, 139, 170, 194, 225, 274, 219, 584, 185, 541, + 0, 266, 202, 0, 0, 0, 523, 567, 530, 560, + 518, 551, 482, 540, 579, 508, 548, 580, 174, 138, + 118, 212, 267, 155, 0, 0, 0, 111, 112, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 545, 574, 505, 547, 549, 588, 471, 542, 0, 475, + 478, 585, 570, 500, 501, 0, 0, 0, 0, 0, + 0, 0, 522, 531, 557, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 498, 0, 539, 0, 0, 0, + 479, 476, 0, 0, 0, 0, 520, 0, 0, 0, + 481, 0, 499, 558, 0, 469, 160, 562, 569, 517, + 299, 573, 515, 514, 576, 237, 0, 271, 164, 181, + 130, 178, 115, 126, 0, 162, 211, 245, 249, 566, + 495, 504, 141, 502, 247, 223, 290, 538, 227, 246, + 186, 279, 238, 289, 300, 301, 275, 297, 309, 263, + 119, 273, 458, 135, 257, 0, 0, 0, 121, 285, + 270, 200, 175, 176, 120, 0, 243, 146, 158, 143, + 214, 282, 283, 142, 312, 127, 296, 123, 467, 295, + 207, 278, 286, 201, 193, 122, 284, 199, 192, 180, + 152, 166, 235, 189, 236, 167, 204, 203, 205, 0, + 474, 0, 268, 293, 313, 132, 490, 276, 305, 308, + 0, 239, 133, 159, 151, 234, 157, 183, 304, 306, + 307, 468, 466, 461, 460, 179, 187, 242, 311, 222, + 248, 136, 292, 265, 486, 489, 484, 485, 533, 534, + 581, 582, 583, 559, 480, 0, 487, 488, 0, 564, + 571, 572, 537, 114, 124, 184, 310, 240, 156, 294, + 470, 483, 145, 493, 0, 0, 506, 511, 512, 524, + 526, 527, 528, 529, 536, 543, 544, 546, 553, 554, + 555, 556, 561, 568, 587, 116, 117, 125, 131, 137, + 144, 150, 154, 161, 165, 168, 171, 172, 173, 177, + 191, 195, 196, 197, 198, 208, 209, 210, 213, 216, + 217, 218, 220, 221, 224, 228, 229, 230, 231, 232, + 233, 241, 244, 250, 251, 252, 253, 254, 255, 256, + 259, 260, 261, 262, 269, 272, 280, 281, 291, 298, + 302, 163, 288, 303, 215, 0, 0, 984, 0, 364, + 0, 0, 0, 148, 0, 363, 0, 0, 0, 182, + 0, 985, 226, 0, 258, 140, 190, 188, 277, 153, + 149, 147, 139, 170, 194, 225, 274, 219, 407, 185, + 0, 0, 266, 202, 0, 0, 0, 0, 0, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 138, 118, 212, 267, 155, 62, 0, 0, 111, 112, + 113, 385, 384, 387, 388, 389, 390, 0, 0, 134, + 386, 391, 392, 393, 0, 0, 0, 0, 361, 378, + 0, 406, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 375, 376, 448, 0, 0, 0, 421, 0, 377, + 0, 0, 370, 371, 373, 372, 374, 379, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 160, 420, 0, + 0, 299, 0, 0, 418, 0, 237, 0, 271, 164, + 181, 130, 178, 115, 126, 0, 162, 211, 245, 249, + 0, 0, 0, 141, 0, 247, 223, 290, 0, 227, + 246, 186, 279, 238, 289, 300, 301, 275, 297, 309, + 263, 119, 273, 287, 135, 257, 0, 0, 0, 121, + 285, 270, 200, 175, 176, 120, 0, 243, 146, 158, + 143, 214, 282, 283, 142, 312, 127, 296, 123, 128, + 295, 207, 278, 286, 201, 193, 122, 284, 199, 192, + 180, 152, 166, 235, 189, 236, 167, 204, 203, 205, + 0, 0, 0, 268, 293, 313, 132, 0, 276, 305, + 308, 0, 239, 133, 159, 151, 234, 157, 183, 304, + 306, 307, 206, 129, 169, 264, 179, 187, 242, 311, + 222, 248, 136, 292, 265, 408, 419, 414, 415, 412, + 413, 411, 410, 409, 422, 400, 401, 402, 403, 405, + 0, 416, 417, 404, 114, 124, 184, 310, 240, 156, + 294, 0, 0, 145, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 125, 131, + 137, 144, 150, 154, 161, 165, 168, 171, 172, 173, + 177, 191, 195, 196, 197, 198, 208, 209, 210, 213, + 216, 217, 218, 220, 221, 224, 228, 229, 230, 231, + 232, 233, 241, 244, 250, 251, 252, 253, 254, 255, + 256, 259, 260, 261, 262, 269, 272, 280, 281, 291, + 298, 302, 163, 288, 303, 215, 0, 0, 0, 0, + 364, 0, 0, 0, 148, 0, 363, 0, 0, 0, + 182, 0, 0, 226, 0, 258, 140, 190, 188, 277, + 153, 149, 147, 139, 170, 194, 225, 274, 219, 407, + 185, 0, 0, 266, 202, 0, 0, 0, 0, 0, + 398, 399, 0, 0, 0, 0, 0, 0, 1091, 0, + 174, 138, 118, 212, 267, 155, 62, 0, 0, 111, + 112, 113, 385, 384, 387, 388, 389, 390, 0, 0, + 134, 386, 391, 392, 393, 1092, 0, 0, 0, 361, + 378, 0, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 375, 376, 0, 0, 0, 0, 421, 0, + 377, 0, 0, 370, 371, 373, 372, 374, 379, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 160, 420, + 0, 0, 299, 0, 0, 418, 0, 237, 0, 271, + 164, 181, 130, 178, 115, 126, 0, 162, 211, 245, + 249, 0, 0, 0, 141, 0, 247, 223, 290, 0, + 227, 246, 186, 279, 238, 289, 300, 301, 275, 297, + 309, 263, 119, 273, 287, 135, 257, 0, 0, 0, + 121, 285, 270, 200, 175, 176, 120, 0, 243, 146, + 158, 143, 214, 282, 283, 142, 312, 127, 296, 123, + 128, 295, 207, 278, 286, 201, 193, 122, 284, 199, + 192, 180, 152, 166, 235, 189, 236, 167, 204, 203, + 205, 0, 0, 0, 268, 293, 313, 132, 0, 276, + 305, 308, 0, 239, 133, 159, 151, 234, 157, 183, + 304, 306, 307, 206, 129, 169, 264, 179, 187, 242, + 311, 222, 248, 136, 292, 265, 408, 419, 414, 415, + 412, 413, 411, 410, 409, 422, 400, 401, 402, 403, + 405, 0, 416, 417, 404, 114, 124, 184, 310, 240, + 156, 294, 0, 0, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 125, + 131, 137, 144, 150, 154, 161, 165, 168, 171, 172, + 173, 177, 191, 195, 196, 197, 198, 208, 209, 210, + 213, 216, 217, 218, 220, 221, 224, 228, 229, 230, + 231, 232, 233, 241, 244, 250, 251, 252, 253, 254, + 255, 256, 259, 260, 261, 262, 269, 272, 280, 281, + 291, 298, 302, 163, 288, 303, 215, 0, 0, 0, + 0, 364, 0, 0, 0, 148, 0, 363, 0, 0, + 0, 182, 0, 0, 226, 0, 258, 140, 190, 188, + 277, 153, 149, 147, 139, 170, 194, 225, 274, 219, + 407, 185, 0, 0, 266, 202, 0, 0, 0, 0, + 0, 398, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 138, 118, 212, 267, 155, 62, 0, 436, + 111, 112, 113, 385, 384, 387, 388, 389, 390, 0, + 0, 134, 386, 391, 392, 393, 0, 0, 0, 0, + 361, 378, 0, 406, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 375, 376, 0, 0, 0, 0, 421, + 0, 377, 0, 0, 370, 371, 373, 372, 374, 379, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, + 420, 0, 0, 299, 0, 0, 418, 0, 237, 0, + 271, 164, 181, 130, 178, 115, 126, 0, 162, 211, + 245, 249, 0, 0, 0, 141, 0, 247, 223, 290, + 0, 227, 246, 186, 279, 238, 289, 300, 301, 275, + 297, 309, 263, 119, 273, 287, 135, 257, 0, 0, + 0, 121, 285, 270, 200, 175, 176, 120, 0, 243, + 146, 158, 143, 214, 282, 283, 142, 312, 127, 296, + 123, 128, 295, 207, 278, 286, 201, 193, 122, 284, + 199, 192, 180, 152, 166, 235, 189, 236, 167, 204, + 203, 205, 0, 0, 0, 268, 293, 313, 132, 0, + 276, 305, 308, 0, 239, 133, 159, 151, 234, 157, + 183, 304, 306, 307, 206, 129, 169, 264, 179, 187, + 242, 311, 222, 248, 136, 292, 265, 408, 419, 414, + 415, 412, 413, 411, 410, 409, 422, 400, 401, 402, + 403, 405, 0, 416, 417, 404, 114, 124, 184, 310, + 240, 156, 294, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 125, 131, 137, 144, 150, 154, 161, 165, 168, 171, + 172, 173, 177, 191, 195, 196, 197, 198, 208, 209, + 210, 213, 216, 217, 218, 220, 221, 224, 228, 229, + 230, 231, 232, 233, 241, 244, 250, 251, 252, 253, + 254, 255, 256, 259, 260, 261, 262, 269, 272, 280, + 281, 291, 298, 302, 163, 288, 303, 215, 0, 0, + 0, 0, 364, 0, 0, 0, 148, 0, 363, 0, + 0, 0, 182, 0, 0, 226, 0, 258, 140, 190, + 188, 277, 153, 149, 147, 139, 170, 194, 225, 274, + 219, 407, 185, 0, 0, 266, 202, 0, 0, 0, + 0, 0, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 138, 118, 212, 267, 155, 62, 0, + 0, 111, 112, 113, 385, 384, 387, 388, 389, 390, + 0, 0, 134, 386, 391, 392, 393, 0, 0, 0, + 0, 361, 378, 0, 406, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 375, 376, 448, 0, 0, 0, + 421, 0, 377, 0, 0, 370, 371, 373, 372, 374, + 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 420, 0, 0, 299, 0, 0, 418, 0, 237, + 0, 271, 164, 181, 130, 178, 115, 126, 0, 162, + 211, 245, 249, 0, 0, 0, 141, 0, 247, 223, + 290, 0, 227, 246, 186, 279, 238, 289, 300, 301, + 275, 297, 309, 263, 119, 273, 287, 135, 257, 0, + 0, 0, 121, 285, 270, 200, 175, 176, 120, 0, + 243, 146, 158, 143, 214, 282, 283, 142, 312, 127, + 296, 123, 128, 295, 207, 278, 286, 201, 193, 122, + 284, 199, 192, 180, 152, 166, 235, 189, 236, 167, + 204, 203, 205, 0, 0, 0, 268, 293, 313, 132, + 0, 276, 305, 308, 0, 239, 133, 159, 151, 234, + 157, 183, 304, 306, 307, 206, 129, 169, 264, 179, + 187, 242, 311, 222, 248, 136, 292, 265, 408, 419, + 414, 415, 412, 413, 411, 410, 409, 422, 400, 401, + 402, 403, 405, 0, 416, 417, 404, 114, 124, 184, + 310, 240, 156, 294, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 117, 125, 131, 137, 144, 150, 154, 161, 165, 168, + 171, 172, 173, 177, 191, 195, 196, 197, 198, 208, + 209, 210, 213, 216, 217, 218, 220, 221, 224, 228, + 229, 230, 231, 232, 233, 241, 244, 250, 251, 252, + 253, 254, 255, 256, 259, 260, 261, 262, 269, 272, + 280, 281, 291, 298, 302, 163, 288, 303, 215, 0, + 0, 0, 0, 364, 0, 0, 0, 148, 0, 363, + 0, 0, 0, 182, 0, 0, 226, 0, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 407, 185, 0, 0, 266, 202, 0, 0, + 0, 0, 0, 398, 399, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 138, 118, 212, 267, 155, 62, + 0, 0, 111, 112, 113, 385, 1002, 387, 388, 389, + 390, 0, 0, 134, 386, 391, 392, 393, 0, 0, + 0, 0, 361, 378, 0, 406, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 375, 376, 448, 0, 0, + 0, 421, 0, 377, 0, 0, 370, 371, 373, 372, + 374, 379, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 160, 420, 0, 0, 299, 0, 0, 418, 0, + 237, 0, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 0, 0, 0, 141, 0, 247, + 223, 290, 0, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 287, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 128, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 0, 0, 268, 293, 313, + 132, 0, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 206, 129, 169, 264, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 408, + 419, 414, 415, 412, 413, 411, 410, 409, 422, 400, + 401, 402, 403, 405, 0, 416, 417, 404, 114, 124, + 184, 310, 240, 156, 294, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 163, 288, 303, 215, + 0, 0, 0, 0, 364, 0, 0, 0, 148, 0, + 363, 0, 0, 0, 182, 0, 0, 226, 0, 258, + 140, 190, 188, 277, 153, 149, 147, 139, 170, 194, + 225, 274, 219, 407, 185, 0, 0, 266, 202, 0, + 0, 0, 0, 0, 398, 399, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 138, 118, 212, 267, 155, + 62, 0, 0, 111, 112, 113, 385, 999, 387, 388, + 389, 390, 0, 0, 134, 386, 391, 392, 393, 0, + 0, 0, 0, 361, 378, 0, 406, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 375, 376, 448, 0, + 0, 0, 421, 0, 377, 0, 0, 370, 371, 373, + 372, 374, 379, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 160, 420, 0, 0, 299, 0, 0, 418, + 0, 237, 0, 271, 164, 181, 130, 178, 115, 126, + 0, 162, 211, 245, 249, 0, 0, 0, 141, 0, + 247, 223, 290, 0, 227, 246, 186, 279, 238, 289, + 300, 301, 275, 297, 309, 263, 119, 273, 287, 135, + 257, 0, 0, 0, 121, 285, 270, 200, 175, 176, + 120, 0, 243, 146, 158, 143, 214, 282, 283, 142, + 312, 127, 296, 123, 128, 295, 207, 278, 286, 201, + 193, 122, 284, 199, 192, 180, 152, 166, 235, 189, + 236, 167, 204, 203, 205, 0, 0, 0, 268, 293, + 313, 132, 0, 276, 305, 308, 0, 239, 133, 159, + 151, 234, 157, 183, 304, 306, 307, 206, 129, 169, + 264, 179, 187, 242, 311, 222, 248, 136, 292, 265, + 408, 419, 414, 415, 412, 413, 411, 410, 409, 422, + 400, 401, 402, 403, 405, 0, 416, 417, 404, 114, + 124, 184, 310, 240, 156, 294, 0, 0, 145, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 116, 117, 125, 131, 137, 144, 150, 154, 161, + 165, 168, 171, 172, 173, 177, 191, 195, 196, 197, + 198, 208, 209, 210, 213, 216, 217, 218, 220, 221, + 224, 228, 229, 230, 231, 232, 233, 241, 244, 250, + 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, + 269, 272, 280, 281, 291, 298, 302, 163, 288, 303, + 429, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 215, 0, 0, 0, 0, 364, 0, + 0, 0, 148, 0, 363, 0, 0, 0, 182, 0, + 0, 226, 0, 258, 140, 190, 188, 277, 153, 149, + 147, 139, 170, 194, 225, 274, 219, 407, 185, 0, + 0, 266, 202, 0, 0, 0, 0, 0, 398, 399, + 0, 0, 0, 0, 0, 0, 0, 0, 174, 138, + 118, 212, 267, 155, 62, 0, 0, 111, 112, 113, + 385, 384, 387, 388, 389, 390, 0, 0, 134, 386, + 391, 392, 393, 0, 0, 0, 0, 361, 378, 0, + 406, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 375, 376, 0, 0, 0, 0, 421, 0, 377, 0, + 0, 370, 371, 373, 372, 374, 379, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 160, 420, 0, 0, + 299, 0, 0, 418, 0, 237, 0, 271, 164, 181, + 130, 178, 115, 126, 0, 162, 211, 245, 249, 0, + 0, 0, 141, 0, 247, 223, 290, 0, 227, 246, + 186, 279, 238, 289, 300, 301, 275, 297, 309, 263, + 119, 273, 287, 135, 257, 0, 0, 0, 121, 285, + 270, 200, 175, 176, 120, 0, 243, 146, 158, 143, + 214, 282, 283, 142, 312, 127, 296, 123, 128, 295, + 207, 278, 286, 201, 193, 122, 284, 199, 192, 180, + 152, 166, 235, 189, 236, 167, 204, 203, 205, 0, + 0, 0, 268, 293, 313, 132, 0, 276, 305, 308, + 0, 239, 133, 159, 151, 234, 157, 183, 304, 306, + 307, 206, 129, 169, 264, 179, 187, 242, 311, 222, + 248, 136, 292, 265, 408, 419, 414, 415, 412, 413, + 411, 410, 409, 422, 400, 401, 402, 403, 405, 0, + 416, 417, 404, 114, 124, 184, 310, 240, 156, 294, + 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 117, 125, 131, 137, + 144, 150, 154, 161, 165, 168, 171, 172, 173, 177, + 191, 195, 196, 197, 198, 208, 209, 210, 213, 216, + 217, 218, 220, 221, 224, 228, 229, 230, 231, 232, + 233, 241, 244, 250, 251, 252, 253, 254, 255, 256, + 259, 260, 261, 262, 269, 272, 280, 281, 291, 298, + 302, 163, 288, 303, 215, 0, 0, 0, 0, 364, + 0, 0, 0, 148, 0, 363, 0, 0, 0, 182, + 0, 0, 226, 0, 258, 140, 190, 188, 277, 153, + 149, 147, 139, 170, 194, 225, 274, 219, 407, 185, + 0, 0, 266, 202, 0, 0, 0, 0, 0, 398, + 399, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 138, 118, 212, 267, 155, 62, 0, 0, 111, 112, + 113, 385, 384, 387, 388, 389, 390, 0, 0, 134, + 386, 391, 392, 393, 0, 0, 0, 0, 361, 378, + 0, 406, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 375, 376, 0, 0, 0, 0, 421, 0, 377, + 0, 0, 370, 371, 373, 372, 374, 379, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 160, 420, 0, + 0, 299, 0, 0, 418, 0, 237, 0, 271, 164, + 181, 130, 178, 115, 126, 0, 162, 211, 245, 249, + 0, 0, 0, 141, 0, 247, 223, 290, 0, 227, + 246, 186, 279, 238, 289, 300, 301, 275, 297, 309, + 263, 119, 273, 287, 135, 257, 0, 0, 0, 121, + 285, 270, 200, 175, 176, 120, 0, 243, 146, 158, + 143, 214, 282, 283, 142, 312, 127, 296, 123, 128, + 295, 207, 278, 286, 201, 193, 122, 284, 199, 192, + 180, 152, 166, 235, 189, 236, 167, 204, 203, 205, + 0, 0, 0, 268, 293, 313, 132, 0, 276, 305, + 308, 0, 239, 133, 159, 151, 234, 157, 183, 304, + 306, 307, 206, 129, 169, 264, 179, 187, 242, 311, + 222, 248, 136, 292, 265, 408, 419, 414, 415, 412, + 413, 411, 410, 409, 422, 400, 401, 402, 403, 405, + 0, 416, 417, 404, 114, 124, 184, 310, 240, 156, + 294, 0, 0, 145, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 125, 131, + 137, 144, 150, 154, 161, 165, 168, 171, 172, 173, + 177, 191, 195, 196, 197, 198, 208, 209, 210, 213, + 216, 217, 218, 220, 221, 224, 228, 229, 230, 231, + 232, 233, 241, 244, 250, 251, 252, 253, 254, 255, + 256, 259, 260, 261, 262, 269, 272, 280, 281, 291, + 298, 302, 163, 288, 303, 215, 0, 0, 0, 0, + 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, + 182, 0, 0, 226, 0, 258, 140, 190, 188, 277, + 153, 149, 147, 139, 170, 194, 225, 274, 219, 407, + 185, 0, 0, 266, 202, 0, 0, 0, 0, 0, + 398, 399, 0, 0, 0, 0, 0, 0, 0, 0, + 174, 138, 118, 212, 267, 155, 62, 0, 0, 111, + 112, 113, 385, 384, 387, 388, 389, 390, 0, 0, + 134, 386, 391, 392, 393, 0, 0, 0, 0, 0, + 378, 0, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 375, 376, 0, 0, 0, 0, 421, 0, + 377, 0, 0, 370, 371, 373, 372, 374, 379, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 160, 420, + 0, 0, 299, 0, 0, 418, 0, 237, 0, 271, + 164, 181, 130, 178, 115, 126, 0, 162, 211, 245, + 249, 0, 0, 0, 141, 0, 247, 223, 290, 1749, + 227, 246, 186, 279, 238, 289, 300, 301, 275, 297, + 309, 263, 119, 273, 287, 135, 257, 0, 0, 0, + 121, 285, 270, 200, 175, 176, 120, 0, 243, 146, + 158, 143, 214, 282, 283, 142, 312, 127, 296, 123, + 128, 295, 207, 278, 286, 201, 193, 122, 284, 199, + 192, 180, 152, 166, 235, 189, 236, 167, 204, 203, + 205, 0, 0, 0, 268, 293, 313, 132, 0, 276, + 305, 308, 0, 239, 133, 159, 151, 234, 157, 183, + 304, 306, 307, 206, 129, 169, 264, 179, 187, 242, + 311, 222, 248, 136, 292, 265, 408, 419, 414, 415, + 412, 413, 411, 410, 409, 422, 400, 401, 402, 403, + 405, 0, 416, 417, 404, 114, 124, 184, 310, 240, + 156, 294, 0, 0, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 125, + 131, 137, 144, 150, 154, 161, 165, 168, 171, 172, + 173, 177, 191, 195, 196, 197, 198, 208, 209, 210, + 213, 216, 217, 218, 220, 221, 224, 228, 229, 230, + 231, 232, 233, 241, 244, 250, 251, 252, 253, 254, + 255, 256, 259, 260, 261, 262, 269, 272, 280, 281, + 291, 298, 302, 163, 288, 303, 215, 0, 0, 0, + 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, + 0, 182, 0, 0, 226, 0, 258, 140, 190, 188, + 277, 153, 149, 147, 139, 170, 194, 225, 274, 219, + 407, 185, 0, 0, 266, 202, 0, 0, 0, 0, + 0, 398, 399, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 138, 118, 212, 267, 155, 62, 0, 436, + 111, 112, 113, 385, 384, 387, 388, 389, 390, 0, + 0, 134, 386, 391, 392, 393, 0, 0, 0, 0, + 0, 378, 0, 406, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 375, 376, 0, 0, 0, 0, 421, + 0, 377, 0, 0, 370, 371, 373, 372, 374, 379, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, + 420, 0, 0, 299, 0, 0, 418, 0, 237, 0, + 271, 164, 181, 130, 178, 115, 126, 0, 162, 211, + 245, 249, 0, 0, 0, 141, 0, 247, 223, 290, + 0, 227, 246, 186, 279, 238, 289, 300, 301, 275, + 297, 309, 263, 119, 273, 287, 135, 257, 0, 0, + 0, 121, 285, 270, 200, 175, 176, 120, 0, 243, + 146, 158, 143, 214, 282, 283, 142, 312, 127, 296, + 123, 128, 295, 207, 278, 286, 201, 193, 122, 284, + 199, 192, 180, 152, 166, 235, 189, 236, 167, 204, + 203, 205, 0, 0, 0, 268, 293, 313, 132, 0, + 276, 305, 308, 0, 239, 133, 159, 151, 234, 157, + 183, 304, 306, 307, 206, 129, 169, 264, 179, 187, + 242, 311, 222, 248, 136, 292, 265, 408, 419, 414, + 415, 412, 413, 411, 410, 409, 422, 400, 401, 402, + 403, 405, 0, 416, 417, 404, 114, 124, 184, 310, + 240, 156, 294, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 125, 131, 137, 144, 150, 154, 161, 165, 168, 171, + 172, 173, 177, 191, 195, 196, 197, 198, 208, 209, + 210, 213, 216, 217, 218, 220, 221, 224, 228, 229, + 230, 231, 232, 233, 241, 244, 250, 251, 252, 253, + 254, 255, 256, 259, 260, 261, 262, 269, 272, 280, + 281, 291, 298, 302, 163, 288, 303, 215, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, + 0, 0, 182, 0, 0, 226, 0, 258, 140, 190, + 188, 277, 153, 149, 147, 139, 170, 194, 225, 274, + 219, 407, 185, 0, 0, 266, 202, 0, 0, 0, + 0, 0, 398, 399, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 138, 118, 212, 267, 155, 62, 0, + 0, 111, 112, 113, 385, 384, 387, 388, 389, 390, + 0, 0, 134, 386, 391, 392, 393, 0, 0, 0, + 0, 0, 378, 0, 406, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 375, 376, 0, 0, 0, 0, + 421, 0, 377, 0, 0, 370, 371, 373, 372, 374, + 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 420, 0, 0, 299, 0, 0, 418, 0, 237, + 0, 271, 164, 181, 130, 178, 115, 126, 0, 162, + 211, 245, 249, 0, 0, 0, 141, 0, 247, 223, + 290, 0, 227, 246, 186, 279, 238, 289, 300, 301, + 275, 297, 309, 263, 119, 273, 287, 135, 257, 0, + 0, 0, 121, 285, 270, 200, 175, 176, 120, 0, + 243, 146, 158, 143, 214, 282, 283, 142, 312, 127, + 296, 123, 128, 295, 207, 278, 286, 201, 193, 122, + 284, 199, 192, 180, 152, 166, 235, 189, 236, 167, + 204, 203, 205, 0, 0, 0, 268, 293, 313, 132, + 0, 276, 305, 308, 0, 239, 133, 159, 151, 234, + 157, 183, 304, 306, 307, 206, 129, 169, 264, 179, + 187, 242, 311, 222, 248, 136, 292, 265, 408, 419, + 414, 415, 412, 413, 411, 410, 409, 422, 400, 401, + 402, 403, 405, 0, 416, 417, 404, 114, 124, 184, + 310, 240, 156, 294, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 117, 125, 131, 137, 144, 150, 154, 161, 165, 168, + 171, 172, 173, 177, 191, 195, 196, 197, 198, 208, + 209, 210, 213, 216, 217, 218, 220, 221, 224, 228, + 229, 230, 231, 232, 233, 241, 244, 250, 251, 252, + 253, 254, 255, 256, 259, 260, 261, 262, 269, 272, + 280, 281, 291, 298, 302, 163, 288, 303, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, + 0, 0, 0, 182, 0, 0, 226, 0, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 0, 185, 0, 0, 266, 202, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 138, 118, 212, 267, 155, 0, + 0, 0, 111, 112, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 694, 693, 703, 704, 696, 697, 698, 699, 700, + 701, 702, 695, 0, 0, 705, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 160, 0, 0, 0, 299, 0, 0, 0, 0, + 237, 0, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 0, 0, 0, 141, 0, 247, + 223, 290, 0, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 287, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 128, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 0, 0, 268, 293, 313, + 132, 0, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 206, 129, 169, 264, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 124, + 184, 310, 240, 156, 294, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 163, 288, 303, 215, + 0, 0, 0, 790, 0, 0, 0, 0, 148, 0, + 0, 0, 0, 0, 182, 0, 0, 226, 0, 258, + 140, 190, 188, 277, 153, 149, 147, 139, 170, 194, + 225, 274, 219, 0, 185, 0, 0, 266, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 138, 118, 212, 267, 155, + 0, 0, 0, 111, 112, 113, 0, 792, 0, 0, + 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, + 683, 684, 682, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 685, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 160, 0, 0, 0, 299, 0, 0, 0, + 0, 237, 0, 271, 164, 181, 130, 178, 115, 126, + 0, 162, 211, 245, 249, 0, 0, 0, 141, 0, + 247, 223, 290, 0, 227, 246, 186, 279, 238, 289, + 300, 301, 275, 297, 309, 263, 119, 273, 287, 135, + 257, 0, 0, 0, 121, 285, 270, 200, 175, 176, + 120, 0, 243, 146, 158, 143, 214, 282, 283, 142, + 312, 127, 296, 123, 128, 295, 207, 278, 286, 201, + 193, 122, 284, 199, 192, 180, 152, 166, 235, 189, + 236, 167, 204, 203, 205, 0, 0, 0, 268, 293, + 313, 132, 0, 276, 305, 308, 0, 239, 133, 159, + 151, 234, 157, 183, 304, 306, 307, 206, 129, 169, + 264, 179, 187, 242, 311, 222, 248, 136, 292, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, + 124, 184, 310, 240, 156, 294, 0, 0, 145, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 116, 117, 125, 131, 137, 144, 150, 154, 161, + 165, 168, 171, 172, 173, 177, 191, 195, 196, 197, + 198, 208, 209, 210, 213, 216, 217, 218, 220, 221, + 224, 228, 229, 230, 231, 232, 233, 241, 244, 250, + 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, + 269, 272, 280, 281, 291, 298, 302, 163, 288, 303, + 215, 0, 0, 0, 0, 0, 0, 0, 0, 148, + 1115, 0, 0, 0, 0, 182, 0, 0, 226, 0, + 258, 140, 190, 188, 277, 153, 149, 147, 139, 170, + 194, 225, 274, 219, 0, 185, 0, 0, 266, 202, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 138, 118, 212, 267, + 155, 0, 0, 0, 111, 112, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 160, 0, 0, 1114, 299, 0, 0, + 0, 1110, 1108, 0, 1109, 164, 181, 596, 178, 115, + 126, 1106, 1112, 211, 245, 249, 0, 0, 0, 141, + 0, 247, 223, 290, 0, 227, 246, 186, 279, 238, + 289, 300, 301, 275, 297, 309, 263, 119, 273, 287, + 135, 257, 0, 0, 0, 121, 285, 270, 200, 175, + 176, 120, 0, 243, 146, 158, 143, 214, 282, 283, + 142, 312, 127, 296, 123, 128, 295, 207, 278, 286, + 201, 193, 122, 284, 199, 192, 180, 152, 166, 235, + 189, 236, 167, 204, 203, 205, 0, 0, 0, 268, + 293, 313, 132, 0, 276, 305, 308, 0, 239, 133, + 159, 151, 234, 157, 183, 304, 306, 307, 206, 129, + 169, 264, 179, 187, 242, 311, 222, 248, 136, 292, + 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 114, 124, 184, 310, 240, 156, 294, 0, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 125, 131, 137, 144, 150, 154, + 161, 165, 168, 171, 172, 173, 177, 191, 195, 196, + 197, 198, 208, 209, 210, 213, 216, 217, 218, 220, + 221, 224, 228, 229, 230, 231, 232, 233, 241, 244, + 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, + 262, 269, 272, 280, 281, 291, 298, 302, 163, 288, + 303, 31, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, + 0, 0, 0, 148, 0, 0, 0, 0, 0, 182, + 0, 0, 226, 0, 258, 140, 190, 188, 277, 153, + 149, 147, 139, 170, 194, 225, 274, 219, 0, 185, + 0, 0, 266, 202, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 138, 118, 212, 267, 155, 62, 0, 436, 111, 112, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 134, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, + 0, 299, 0, 0, 0, 0, 237, 0, 271, 164, + 181, 130, 178, 115, 126, 0, 162, 211, 245, 249, + 0, 0, 0, 141, 0, 247, 223, 290, 0, 227, + 246, 186, 279, 238, 289, 300, 301, 275, 297, 309, + 263, 119, 273, 287, 135, 257, 0, 0, 0, 121, + 285, 270, 200, 175, 176, 120, 0, 243, 146, 158, + 143, 214, 282, 283, 142, 312, 127, 296, 123, 128, + 295, 207, 278, 286, 201, 193, 122, 284, 199, 192, + 180, 152, 166, 235, 189, 236, 167, 204, 203, 205, + 0, 0, 0, 268, 293, 313, 132, 0, 276, 305, + 308, 0, 239, 133, 159, 151, 234, 157, 183, 304, + 306, 307, 206, 129, 169, 264, 179, 187, 242, 311, + 222, 248, 136, 292, 265, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 114, 124, 184, 310, 240, 156, + 294, 0, 0, 145, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 125, 131, + 137, 144, 150, 154, 161, 165, 168, 171, 172, 173, + 177, 191, 195, 196, 197, 198, 208, 209, 210, 213, + 216, 217, 218, 220, 221, 224, 228, 229, 230, 231, + 232, 233, 241, 244, 250, 251, 252, 253, 254, 255, + 256, 259, 260, 261, 262, 269, 272, 280, 281, 291, + 298, 302, 163, 288, 303, 215, 0, 0, 0, 1073, + 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, + 182, 0, 0, 226, 0, 258, 140, 190, 188, 277, + 153, 149, 147, 139, 170, 194, 225, 274, 219, 0, + 185, 0, 0, 266, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 174, 138, 118, 212, 267, 155, 0, 0, 0, 111, + 112, 113, 0, 1075, 0, 0, 0, 0, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, + 0, 0, 299, 0, 0, 0, 0, 237, 0, 271, + 164, 181, 130, 178, 115, 126, 0, 162, 211, 245, + 249, 0, 0, 0, 141, 0, 247, 223, 290, 0, + 227, 246, 186, 279, 238, 289, 300, 301, 275, 297, + 309, 263, 119, 273, 287, 135, 257, 0, 0, 0, + 121, 285, 270, 200, 175, 176, 120, 0, 243, 146, + 158, 143, 214, 282, 283, 142, 312, 127, 296, 123, + 128, 295, 207, 278, 286, 201, 193, 122, 284, 199, + 192, 180, 152, 166, 235, 189, 236, 167, 204, 203, + 205, 0, 0, 0, 268, 293, 313, 132, 0, 276, + 305, 308, 0, 239, 133, 159, 151, 234, 157, 183, + 304, 306, 307, 206, 129, 169, 264, 179, 187, 242, + 311, 222, 248, 136, 292, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 114, 124, 184, 310, 240, + 156, 294, 0, 0, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 125, + 131, 137, 144, 150, 154, 161, 165, 168, 171, 172, + 173, 177, 191, 195, 196, 197, 198, 208, 209, 210, + 213, 216, 217, 218, 220, 221, 224, 228, 229, 230, + 231, 232, 233, 241, 244, 250, 251, 252, 253, 254, + 255, 256, 259, 260, 261, 262, 269, 272, 280, 281, + 291, 298, 302, 163, 288, 303, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, + 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, + 0, 0, 0, 0, 182, 0, 0, 226, 0, 258, + 140, 190, 188, 277, 153, 149, 147, 139, 170, 194, + 225, 274, 219, 0, 185, 0, 0, 266, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 138, 118, 212, 267, 155, + 62, 0, 0, 111, 112, 113, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 160, 0, 0, 0, 299, 0, 0, 0, + 0, 237, 0, 271, 164, 181, 130, 178, 115, 126, + 0, 162, 211, 245, 249, 0, 0, 0, 141, 0, + 247, 223, 290, 0, 227, 246, 186, 279, 238, 289, + 300, 301, 275, 297, 309, 263, 119, 273, 287, 135, + 257, 0, 0, 0, 121, 285, 270, 200, 175, 176, + 120, 0, 243, 146, 158, 143, 214, 282, 283, 142, + 312, 127, 296, 123, 128, 295, 207, 278, 286, 201, + 193, 122, 284, 199, 192, 180, 152, 166, 235, 189, + 236, 167, 204, 203, 205, 0, 0, 0, 268, 293, + 313, 132, 0, 276, 305, 308, 0, 239, 133, 159, + 151, 234, 157, 183, 304, 306, 307, 206, 129, 169, + 264, 179, 187, 242, 311, 222, 248, 136, 292, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, + 124, 184, 310, 240, 156, 294, 0, 0, 145, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 116, 117, 125, 131, 137, 144, 150, 154, 161, + 165, 168, 171, 172, 173, 177, 191, 195, 196, 197, + 198, 208, 209, 210, 213, 216, 217, 218, 220, 221, + 224, 228, 229, 230, 231, 232, 233, 241, 244, 250, + 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, + 269, 272, 280, 281, 291, 298, 302, 163, 288, 303, + 215, 0, 0, 0, 1073, 0, 0, 0, 0, 148, + 0, 0, 0, 0, 0, 182, 0, 0, 226, 0, + 258, 140, 190, 188, 277, 153, 149, 147, 139, 170, + 194, 225, 274, 219, 0, 185, 0, 0, 266, 202, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 138, 118, 212, 267, + 155, 0, 0, 0, 111, 112, 113, 0, 1075, 0, + 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 160, 0, 0, 0, 299, 0, 0, + 0, 0, 237, 0, 271, 164, 181, 130, 178, 115, + 126, 0, 162, 211, 245, 249, 0, 0, 0, 141, + 0, 247, 223, 290, 0, 1071, 246, 186, 279, 238, + 289, 300, 301, 275, 297, 309, 263, 119, 273, 287, + 135, 257, 0, 0, 0, 121, 285, 270, 200, 175, + 176, 120, 0, 243, 146, 158, 143, 214, 282, 283, + 142, 312, 127, 296, 123, 128, 295, 207, 278, 286, + 201, 193, 122, 284, 199, 192, 180, 152, 166, 235, + 189, 236, 167, 204, 203, 205, 0, 0, 0, 268, + 293, 313, 132, 0, 276, 305, 308, 0, 239, 133, + 159, 151, 234, 157, 183, 304, 306, 307, 206, 129, + 169, 264, 179, 187, 242, 311, 222, 248, 136, 292, + 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 114, 124, 184, 310, 240, 156, 294, 0, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 125, 131, 137, 144, 150, 154, + 161, 165, 168, 171, 172, 173, 177, 191, 195, 196, + 197, 198, 208, 209, 210, 213, 216, 217, 218, 220, + 221, 224, 228, 229, 230, 231, 232, 233, 241, 244, + 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, + 262, 269, 272, 280, 281, 291, 298, 302, 163, 288, + 303, 215, 0, 0, 0, 0, 0, 0, 0, 0, + 148, 0, 0, 0, 0, 0, 182, 0, 0, 226, + 0, 258, 140, 190, 188, 277, 153, 149, 147, 139, + 170, 194, 225, 274, 219, 0, 185, 0, 0, 266, + 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 174, 138, 118, 212, + 267, 155, 0, 0, 0, 111, 112, 113, 0, 0, + 1038, 0, 0, 1039, 0, 0, 134, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 160, 0, 0, 0, 299, 0, + 0, 0, 0, 237, 0, 271, 164, 181, 130, 178, + 115, 126, 0, 162, 211, 245, 249, 0, 0, 0, + 141, 0, 247, 223, 290, 0, 227, 246, 186, 279, + 238, 289, 300, 301, 275, 297, 309, 263, 119, 273, + 287, 135, 257, 0, 0, 0, 121, 285, 270, 200, + 175, 176, 120, 0, 243, 146, 158, 143, 214, 282, + 283, 142, 312, 127, 296, 123, 128, 295, 207, 278, + 286, 201, 193, 122, 284, 199, 192, 180, 152, 166, + 235, 189, 236, 167, 204, 203, 205, 0, 0, 0, + 268, 293, 313, 132, 0, 276, 305, 308, 0, 239, + 133, 159, 151, 234, 157, 183, 304, 306, 307, 206, + 129, 169, 264, 179, 187, 242, 311, 222, 248, 136, + 292, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 114, 124, 184, 310, 240, 156, 294, 0, 0, + 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 116, 117, 125, 131, 137, 144, 150, + 154, 161, 165, 168, 171, 172, 173, 177, 191, 195, + 196, 197, 198, 208, 209, 210, 213, 216, 217, 218, + 220, 221, 224, 228, 229, 230, 231, 232, 233, 241, + 244, 250, 251, 252, 253, 254, 255, 256, 259, 260, + 261, 262, 269, 272, 280, 281, 291, 298, 302, 163, + 288, 303, 215, 0, 0, 0, 0, 0, 0, 0, + 0, 148, 0, 824, 0, 0, 0, 182, 0, 0, + 226, 0, 258, 140, 190, 188, 277, 153, 149, 147, + 139, 170, 194, 225, 274, 219, 0, 185, 0, 0, + 266, 202, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 138, 118, + 212, 267, 155, 0, 0, 0, 111, 112, 113, 0, + 823, 0, 0, 0, 0, 0, 0, 134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 160, 0, 0, 0, 299, + 0, 0, 0, 0, 237, 0, 271, 164, 181, 130, + 178, 115, 126, 0, 162, 211, 245, 249, 0, 0, + 0, 141, 0, 247, 223, 290, 0, 227, 246, 186, + 279, 238, 289, 300, 301, 275, 297, 309, 263, 119, + 273, 287, 135, 257, 0, 0, 0, 121, 285, 270, + 200, 175, 176, 120, 0, 243, 146, 158, 143, 214, + 282, 283, 142, 312, 127, 296, 123, 128, 295, 207, + 278, 286, 201, 193, 122, 284, 199, 192, 180, 152, + 166, 235, 189, 236, 167, 204, 203, 205, 0, 0, + 0, 268, 293, 313, 132, 0, 276, 305, 308, 0, + 239, 133, 159, 151, 234, 157, 183, 304, 306, 307, + 206, 129, 169, 264, 179, 187, 242, 311, 222, 248, + 136, 292, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 114, 124, 184, 310, 240, 156, 294, 0, + 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 125, 131, 137, 144, + 150, 154, 161, 165, 168, 171, 172, 173, 177, 191, + 195, 196, 197, 198, 208, 209, 210, 213, 216, 217, + 218, 220, 221, 224, 228, 229, 230, 231, 232, 233, + 241, 244, 250, 251, 252, 253, 254, 255, 256, 259, + 260, 261, 262, 269, 272, 280, 281, 291, 298, 302, + 163, 288, 303, 215, 0, 0, 0, 0, 0, 0, + 0, 0, 148, 0, 0, 0, 0, 0, 182, 0, + 0, 226, 0, 258, 140, 190, 188, 277, 153, 149, + 147, 139, 170, 194, 225, 274, 219, 0, 185, 0, + 0, 266, 202, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 174, 138, + 118, 212, 267, 155, 0, 0, 0, 111, 112, 113, + 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 590, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, + 299, 0, 0, 0, 0, 237, 0, 271, 164, 181, + 596, 178, 115, 126, 594, 162, 211, 245, 249, 0, + 0, 0, 141, 0, 247, 223, 290, 0, 227, 246, + 186, 279, 238, 289, 300, 301, 275, 297, 309, 263, + 119, 273, 287, 135, 257, 0, 0, 0, 121, 285, + 270, 200, 175, 176, 120, 0, 243, 146, 158, 143, + 214, 282, 283, 142, 312, 127, 296, 123, 128, 295, + 207, 278, 286, 201, 193, 122, 284, 199, 192, 180, + 152, 166, 235, 189, 236, 167, 204, 203, 205, 0, + 0, 0, 268, 293, 313, 132, 0, 276, 305, 308, + 0, 239, 133, 159, 151, 234, 157, 183, 304, 306, + 307, 206, 129, 169, 264, 179, 187, 242, 311, 222, + 248, 136, 292, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 114, 124, 184, 310, 240, 156, 294, + 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 116, 117, 125, 131, 137, + 144, 150, 154, 161, 165, 168, 171, 172, 173, 177, + 191, 195, 196, 197, 198, 208, 209, 210, 213, 216, + 217, 218, 220, 221, 224, 228, 229, 230, 231, 232, + 233, 241, 244, 250, 251, 252, 253, 254, 255, 256, + 259, 260, 261, 262, 269, 272, 280, 281, 291, 298, + 302, 163, 288, 303, 215, 0, 0, 0, 0, 0, + 0, 0, 0, 148, 0, 0, 0, 0, 0, 182, + 0, 0, 226, 0, 258, 140, 190, 188, 277, 153, + 149, 147, 139, 170, 194, 225, 274, 219, 0, 185, + 0, 0, 266, 202, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 138, 118, 212, 267, 155, 0, 0, 436, 111, 112, + 113, 0, 0, 0, 0, 0, 0, 0, 0, 134, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, + 0, 299, 0, 0, 0, 0, 237, 0, 271, 164, + 181, 130, 178, 115, 126, 0, 162, 211, 245, 249, + 0, 0, 0, 141, 0, 247, 223, 290, 0, 227, + 246, 186, 279, 238, 289, 300, 301, 275, 297, 309, + 263, 119, 273, 287, 135, 257, 0, 0, 0, 121, + 285, 270, 200, 175, 176, 120, 0, 243, 146, 158, + 143, 214, 282, 283, 142, 312, 127, 296, 123, 128, + 295, 207, 278, 286, 201, 193, 122, 284, 199, 192, + 180, 152, 166, 235, 189, 236, 167, 204, 203, 205, + 0, 0, 0, 268, 293, 313, 132, 0, 276, 305, + 308, 0, 239, 133, 159, 151, 234, 157, 183, 304, + 306, 307, 206, 129, 169, 264, 179, 187, 242, 311, + 222, 248, 136, 292, 265, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 114, 124, 184, 310, 240, 156, + 294, 0, 0, 145, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 117, 125, 131, + 137, 144, 150, 154, 161, 165, 168, 171, 172, 173, + 177, 191, 195, 196, 197, 198, 208, 209, 210, 213, + 216, 217, 218, 220, 221, 224, 228, 229, 230, 231, + 232, 233, 241, 244, 250, 251, 252, 253, 254, 255, + 256, 259, 260, 261, 262, 269, 272, 280, 281, 291, + 298, 302, 163, 288, 303, 215, 0, 0, 0, 0, + 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, + 182, 0, 0, 226, 0, 258, 140, 190, 188, 277, + 153, 149, 147, 139, 170, 194, 225, 274, 219, 0, + 185, 0, 0, 266, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 174, 138, 118, 212, 267, 155, 62, 0, 0, 111, + 112, 113, 0, 0, 0, 0, 0, 0, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, + 0, 0, 299, 0, 0, 0, 0, 237, 0, 271, + 164, 181, 130, 178, 115, 126, 0, 162, 211, 245, + 249, 0, 0, 0, 141, 0, 247, 223, 290, 0, + 227, 246, 186, 279, 238, 289, 300, 301, 275, 297, + 309, 263, 119, 273, 287, 135, 257, 0, 0, 0, + 121, 285, 270, 200, 175, 176, 120, 0, 243, 146, + 158, 143, 214, 282, 283, 142, 312, 127, 296, 123, + 128, 295, 207, 278, 286, 201, 193, 122, 284, 199, + 192, 180, 152, 166, 235, 189, 236, 167, 204, 203, + 205, 0, 0, 0, 268, 293, 313, 132, 0, 276, + 305, 308, 0, 239, 133, 159, 151, 234, 157, 183, + 304, 306, 307, 206, 129, 169, 264, 179, 187, 242, + 311, 222, 248, 136, 292, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 114, 124, 184, 310, 240, + 156, 294, 0, 0, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 125, + 131, 137, 144, 150, 154, 161, 165, 168, 171, 172, + 173, 177, 191, 195, 196, 197, 198, 208, 209, 210, + 213, 216, 217, 218, 220, 221, 224, 228, 229, 230, + 231, 232, 233, 241, 244, 250, 251, 252, 253, 254, + 255, 256, 259, 260, 261, 262, 269, 272, 280, 281, + 291, 298, 302, 163, 288, 303, 215, 0, 0, 0, + 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, + 0, 182, 0, 0, 226, 0, 258, 140, 190, 188, + 277, 153, 149, 147, 139, 170, 194, 225, 274, 219, + 0, 185, 0, 0, 266, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 138, 118, 212, 267, 155, 0, 0, 0, + 111, 112, 113, 0, 1075, 0, 0, 0, 0, 0, + 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, + 0, 0, 0, 299, 0, 0, 0, 0, 237, 0, + 271, 164, 181, 130, 178, 115, 126, 0, 162, 211, + 245, 249, 0, 0, 0, 141, 0, 247, 223, 290, + 0, 227, 246, 186, 279, 238, 289, 300, 301, 275, + 297, 309, 263, 119, 273, 287, 135, 257, 0, 0, + 0, 121, 285, 270, 200, 175, 176, 120, 0, 243, + 146, 158, 143, 214, 282, 283, 142, 312, 127, 296, + 123, 128, 295, 207, 278, 286, 201, 193, 122, 284, + 199, 192, 180, 152, 166, 235, 189, 236, 167, 204, + 203, 205, 0, 0, 0, 268, 293, 313, 132, 0, + 276, 305, 308, 0, 239, 133, 159, 151, 234, 157, + 183, 304, 306, 307, 206, 129, 169, 264, 179, 187, + 242, 311, 222, 248, 136, 292, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 114, 124, 184, 310, + 240, 156, 294, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 125, 131, 137, 144, 150, 154, 161, 165, 168, 171, + 172, 173, 177, 191, 195, 196, 197, 198, 208, 209, + 210, 213, 216, 217, 218, 220, 221, 224, 228, 229, + 230, 231, 232, 233, 241, 244, 250, 251, 252, 253, + 254, 255, 256, 259, 260, 261, 262, 269, 272, 280, + 281, 291, 298, 302, 163, 288, 303, 215, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, + 0, 0, 182, 0, 0, 226, 0, 258, 140, 190, + 188, 277, 153, 149, 147, 139, 170, 194, 225, 274, + 219, 0, 185, 0, 0, 266, 202, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 138, 118, 212, 267, 155, 0, 0, + 0, 111, 112, 113, 0, 792, 0, 0, 0, 0, + 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 0, 0, 0, 299, 0, 0, 0, 0, 237, + 0, 271, 164, 181, 130, 178, 115, 126, 0, 162, + 211, 245, 249, 0, 0, 0, 141, 0, 247, 223, + 290, 0, 227, 246, 186, 279, 238, 289, 300, 301, + 275, 297, 309, 263, 119, 273, 287, 135, 257, 0, + 0, 0, 121, 285, 270, 200, 175, 176, 120, 0, + 243, 146, 158, 143, 214, 282, 283, 142, 312, 127, + 296, 123, 128, 295, 207, 278, 286, 201, 193, 122, + 284, 199, 192, 180, 152, 166, 235, 189, 236, 167, + 204, 203, 205, 0, 0, 0, 268, 293, 313, 132, + 0, 276, 305, 308, 0, 239, 133, 159, 151, 234, + 157, 183, 304, 306, 307, 206, 129, 169, 264, 179, + 187, 242, 311, 222, 248, 136, 292, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 114, 124, 184, + 310, 240, 156, 294, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 117, 125, 131, 137, 144, 150, 154, 161, 165, 168, + 171, 172, 173, 177, 191, 195, 196, 197, 198, 208, + 209, 210, 213, 216, 217, 218, 220, 221, 224, 228, + 229, 230, 231, 232, 233, 241, 244, 250, 251, 252, + 253, 254, 255, 256, 259, 260, 261, 262, 269, 272, + 280, 281, 291, 298, 302, 163, 288, 303, 806, 0, + 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, + 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, + 182, 0, 0, 226, 0, 258, 140, 190, 188, 277, + 153, 149, 147, 139, 170, 194, 225, 274, 219, 0, + 185, 0, 0, 266, 202, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 174, 138, 118, 212, 267, 155, 0, 0, 0, 111, + 112, 113, 0, 0, 0, 0, 0, 0, 0, 0, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, + 0, 0, 299, 0, 0, 0, 0, 237, 0, 271, + 164, 181, 130, 178, 115, 126, 0, 162, 211, 245, + 249, 0, 0, 0, 141, 0, 247, 223, 290, 0, + 227, 246, 186, 279, 238, 289, 300, 301, 275, 297, + 309, 263, 119, 273, 287, 135, 257, 0, 0, 0, + 121, 285, 270, 200, 175, 176, 120, 0, 243, 146, + 158, 143, 214, 282, 283, 142, 312, 127, 296, 123, + 128, 295, 207, 278, 286, 201, 193, 122, 284, 199, + 192, 180, 152, 166, 235, 189, 236, 167, 204, 203, + 205, 0, 0, 0, 268, 293, 313, 132, 0, 276, + 305, 308, 0, 239, 133, 159, 151, 234, 157, 183, + 304, 306, 307, 206, 129, 169, 264, 179, 187, 242, + 311, 222, 248, 136, 292, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 114, 124, 184, 310, 240, + 156, 294, 0, 0, 145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 116, 117, 125, + 131, 137, 144, 150, 154, 161, 165, 168, 171, 172, + 173, 177, 191, 195, 196, 197, 198, 208, 209, 210, + 213, 216, 217, 218, 220, 221, 224, 228, 229, 230, + 231, 232, 233, 241, 244, 250, 251, 252, 253, 254, + 255, 256, 259, 260, 261, 262, 269, 272, 280, 281, + 291, 298, 302, 163, 288, 303, 215, 0, 0, 0, + 0, 0, 0, 0, 796, 148, 0, 0, 0, 0, + 0, 182, 0, 0, 226, 0, 258, 140, 190, 188, + 277, 153, 149, 147, 139, 170, 194, 225, 274, 219, + 0, 185, 0, 0, 266, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 138, 118, 212, 267, 155, 0, 0, 0, + 111, 112, 113, 0, 0, 0, 0, 0, 0, 0, + 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, + 0, 0, 0, 299, 0, 0, 0, 0, 237, 0, + 271, 164, 181, 130, 178, 115, 126, 0, 162, 211, + 245, 249, 0, 0, 0, 141, 0, 247, 223, 290, + 0, 227, 246, 186, 279, 238, 289, 300, 301, 275, + 297, 309, 263, 119, 273, 287, 135, 257, 0, 0, + 0, 121, 285, 270, 200, 175, 176, 120, 0, 243, + 146, 158, 143, 214, 282, 283, 142, 312, 127, 296, + 123, 128, 295, 207, 278, 286, 201, 193, 122, 284, + 199, 192, 180, 152, 166, 235, 189, 236, 167, 204, + 203, 205, 0, 0, 0, 268, 293, 313, 132, 0, + 276, 305, 308, 0, 239, 133, 159, 151, 234, 157, + 183, 304, 306, 307, 206, 129, 169, 264, 179, 187, + 242, 311, 222, 248, 136, 292, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 114, 124, 184, 310, + 240, 156, 294, 0, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, + 125, 131, 137, 144, 150, 154, 161, 165, 168, 171, + 172, 173, 177, 191, 195, 196, 197, 198, 208, 209, + 210, 213, 216, 217, 218, 220, 221, 224, 228, 229, + 230, 231, 232, 233, 241, 244, 250, 251, 252, 253, + 254, 255, 256, 259, 260, 261, 262, 269, 272, 280, + 281, 291, 298, 302, 163, 288, 303, 215, 0, 0, + 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, + 0, 0, 182, 0, 0, 226, 0, 258, 140, 190, + 188, 277, 153, 149, 147, 139, 170, 194, 225, 274, + 219, 0, 185, 0, 0, 266, 202, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 138, 118, 212, 267, 155, 0, 0, + 0, 111, 112, 113, 0, 672, 0, 0, 0, 0, + 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 160, 0, 0, 0, 299, 0, 0, 0, 0, 237, + 0, 271, 164, 181, 130, 178, 115, 126, 0, 162, + 211, 245, 249, 0, 0, 0, 141, 0, 247, 223, + 290, 0, 227, 246, 186, 279, 238, 289, 300, 301, + 275, 297, 309, 263, 119, 273, 287, 135, 257, 0, + 0, 0, 121, 285, 270, 200, 175, 176, 120, 0, + 243, 146, 158, 143, 214, 282, 283, 142, 312, 127, + 296, 123, 128, 295, 207, 278, 286, 201, 193, 122, + 284, 199, 192, 180, 152, 166, 235, 189, 236, 167, + 204, 203, 205, 0, 0, 0, 268, 293, 313, 132, + 0, 276, 305, 308, 0, 239, 133, 159, 151, 234, + 157, 183, 304, 306, 307, 206, 129, 169, 264, 179, + 187, 242, 311, 222, 248, 136, 292, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 114, 124, 184, + 310, 240, 156, 294, 0, 0, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 117, 125, 131, 137, 144, 150, 154, 161, 165, 168, + 171, 172, 173, 177, 191, 195, 196, 197, 198, 208, + 209, 210, 213, 216, 217, 218, 220, 221, 224, 228, + 229, 230, 231, 232, 233, 241, 244, 250, 251, 252, + 253, 254, 255, 256, 259, 260, 261, 262, 269, 272, + 280, 281, 291, 298, 302, 163, 288, 303, 215, 0, + 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, + 0, 0, 0, 182, 0, 0, 226, 0, 258, 140, + 190, 188, 277, 153, 149, 147, 139, 170, 194, 225, + 274, 219, 0, 185, 0, 0, 266, 202, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 138, 118, 212, 267, 155, 0, + 0, 0, 111, 112, 113, 0, 0, 0, 0, 0, + 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 160, 0, 0, 0, 299, 0, 0, 0, 0, + 237, 0, 271, 164, 181, 130, 178, 115, 126, 0, + 162, 211, 245, 249, 0, 0, 0, 141, 0, 247, + 223, 290, 0, 227, 246, 186, 279, 238, 289, 300, + 301, 275, 297, 309, 263, 119, 273, 287, 135, 257, + 0, 0, 0, 121, 285, 270, 200, 175, 176, 120, + 0, 243, 146, 158, 143, 214, 282, 283, 142, 312, + 127, 296, 123, 128, 295, 207, 278, 286, 201, 193, + 122, 284, 199, 192, 180, 152, 166, 235, 189, 236, + 167, 204, 203, 205, 0, 0, 0, 268, 293, 313, + 132, 0, 276, 305, 308, 0, 239, 133, 159, 151, + 234, 157, 183, 304, 306, 307, 206, 129, 169, 264, + 179, 187, 242, 311, 222, 248, 136, 292, 265, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 114, 124, + 184, 310, 240, 156, 294, 0, 0, 145, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 116, 117, 125, 131, 137, 144, 150, 154, 161, 165, + 168, 171, 172, 173, 177, 191, 195, 196, 197, 198, + 208, 209, 210, 213, 216, 217, 218, 220, 221, 224, + 228, 229, 230, 231, 232, 233, 241, 244, 250, 251, + 252, 253, 254, 255, 256, 259, 260, 261, 262, 269, + 272, 280, 281, 291, 298, 302, 351, 288, 303, 215, + 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, + 0, 0, 0, 0, 182, 0, 0, 226, 0, 258, + 140, 190, 188, 277, 153, 149, 147, 139, 170, 194, + 225, 274, 219, 0, 185, 0, 0, 266, 202, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 138, 118, 212, 267, 155, + 0, 0, 0, 111, 112, 113, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 160, 0, 106, 0, 299, 0, 0, 0, + 0, 237, 0, 271, 164, 181, 130, 178, 115, 126, + 0, 162, 211, 245, 249, 0, 0, 0, 141, 0, + 247, 223, 290, 0, 227, 246, 186, 279, 238, 289, + 300, 301, 275, 297, 309, 263, 119, 273, 287, 135, + 257, 0, 0, 0, 121, 285, 270, 200, 175, 176, + 120, 0, 243, 146, 158, 143, 214, 282, 283, 142, + 312, 127, 296, 123, 128, 295, 207, 278, 286, 201, + 193, 122, 284, 199, 192, 180, 152, 166, 235, 189, + 236, 167, 204, 203, 205, 0, 0, 0, 268, 293, + 313, 132, 0, 276, 305, 308, 0, 239, 133, 159, + 151, 234, 157, 183, 304, 306, 307, 206, 129, 169, + 264, 179, 187, 242, 311, 222, 248, 136, 292, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, + 124, 184, 310, 240, 156, 294, 0, 0, 145, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 116, 117, 125, 131, 137, 144, 150, 154, 161, + 165, 168, 171, 172, 173, 177, 191, 195, 196, 197, + 198, 208, 209, 210, 213, 216, 217, 218, 220, 221, + 224, 228, 229, 230, 231, 232, 233, 241, 244, 250, + 251, 252, 253, 254, 255, 256, 259, 260, 261, 262, + 269, 272, 280, 281, 291, 298, 302, 163, 288, 303, + 215, 0, 0, 0, 0, 0, 0, 0, 0, 148, + 0, 0, 0, 0, 0, 182, 0, 0, 226, 0, + 258, 140, 190, 188, 277, 153, 149, 147, 139, 170, + 194, 225, 274, 219, 0, 185, 0, 0, 266, 202, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 138, 118, 212, 267, + 155, 0, 0, 0, 111, 112, 113, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 160, 0, 0, 0, 299, 0, 0, + 0, 0, 237, 0, 271, 164, 181, 130, 178, 115, + 126, 0, 162, 211, 245, 249, 0, 0, 0, 141, + 0, 247, 223, 290, 0, 227, 246, 186, 279, 238, + 289, 300, 301, 275, 297, 309, 263, 119, 273, 287, + 135, 257, 0, 0, 0, 121, 285, 270, 200, 175, + 176, 120, 0, 243, 146, 158, 143, 214, 282, 283, + 142, 312, 127, 296, 123, 128, 295, 207, 278, 286, + 201, 193, 122, 284, 199, 192, 180, 152, 166, 235, + 189, 236, 167, 204, 203, 205, 0, 0, 0, 268, + 293, 313, 132, 0, 276, 305, 308, 0, 239, 133, + 159, 151, 234, 157, 183, 304, 306, 307, 206, 129, + 169, 264, 179, 187, 242, 311, 222, 248, 136, 292, + 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 114, 124, 184, 310, 240, 156, 294, 0, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 116, 117, 125, 131, 137, 144, 150, 154, + 161, 165, 168, 171, 172, 173, 177, 191, 195, 196, + 197, 198, 208, 209, 210, 213, 216, 217, 218, 220, + 221, 224, 228, 229, 230, 231, 232, 233, 241, 244, + 250, 251, 252, 253, 254, 255, 256, 259, 260, 261, + 262, 269, 272, 280, 281, 291, 298, 302, 163, 288, + 303, } var yyPact = [...]int{ - 135, -1000, -286, 1139, -1000, -1000, -1000, -1000, -1000, -1000, + 156, -1000, -282, 1218, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1085, - 867, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 322, 836, - 13096, -32, 168, 24, 19436, 154, 2081, 19807, -1000, 32, - -1000, 16, 19807, 28, 19065, -1000, -1000, -84, -88, -1000, - 10870, 993, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 845, 1067, 1059, 1083, 707, 1150, -1000, 9373, 9373, 119, - 119, 119, 7889, -1000, -1000, 16090, 19807, 19807, 19807, -150, - 115, 115, 115, 163, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1181, + 929, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 357, 893, + 20, -30, 176, 61, 18890, 175, 324, 19261, -1000, 44, + -1000, 29, 19261, 36, 18519, -1000, -1000, -61, -67, -1000, + 10695, 1060, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 868, 1154, 1159, 1179, 721, 1152, -1000, 9198, 9198, 121, + 121, 121, 7714, -1000, -1000, 15544, 19261, 19261, 19261, -133, + 137, 137, 137, 120, 572, 174, 19261, 567, 567, 276, + 19261, 136, 567, 136, 136, 136, 19261, -1000, 235, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -3014,24 +2961,22 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 145, 19807, 611, 611, 226, 578, 19807, 107, 611, 107, - 107, 107, 19807, -1000, 222, -1000, -1000, -1000, 19807, 611, - 1016, 392, 90, 291, 291, 291, -1000, 231, -1000, 5579, - 45, 51, -18, 1102, 49, -31, -1000, 392, 5579, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 139, -1000, -1000, - 19807, 18694, 153, 314, -1000, -1000, -1000, -1000, -1000, -1000, - 742, 558, -1000, 10870, 1815, 757, 757, -1000, -1000, 198, - -1000, -1000, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, - 11983, 11983, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 757, 218, -1000, 10499, - 757, 757, 757, 757, 757, 757, 757, 757, 10870, 757, - 757, 757, 757, 757, 757, 757, 757, 757, 757, 757, - 757, 757, 757, 757, 757, -1000, -1000, -1000, 1085, -1000, - 867, -1000, -1000, -1000, 1019, 10870, 10870, 1085, -1000, 944, - 9373, -1000, -1000, 1096, -1000, -1000, -1000, -1000, 376, 1115, - -1000, 12725, 214, 1110, 18323, -1000, 16832, 17952, 772, 7504, - -117, -1000, -1000, -1000, 306, 15719, -1000, -1000, -1000, 1015, + -1000, -1000, -1000, -1000, 19261, 567, 1098, 433, 87, 287, + 287, 287, -1000, 234, -1000, 5404, 60, 58, -19, 1190, + 52, -7, -1000, 433, 5404, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 153, -1000, -1000, -1000, -1000, 19261, 18148, + 184, 346, -1000, -1000, -1000, -1000, -1000, -1000, 653, 403, + -1000, 10695, 1654, 787, 787, -1000, -1000, 216, -1000, -1000, + 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 787, 232, -1000, 10324, 787, 787, + 787, 787, 787, 787, 787, 787, 10695, 787, 787, 787, + 787, 787, 787, 787, 787, 787, 787, 787, 787, 787, + 787, 787, 787, -1000, -1000, -1000, 1181, -1000, 929, -1000, + -1000, -1000, 1095, 10695, 10695, 1181, -1000, 1013, 9198, -1000, + -1000, 1094, -1000, -1000, -1000, -1000, 440, 1204, -1000, 12550, + 231, 1198, 17777, -1000, 16286, 17406, 842, 7329, -92, -1000, + -1000, -1000, 341, 15173, -1000, -1000, -1000, 1087, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -3043,150 +2988,152 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 718, 19807, -1000, -1000, 328, 611, -1000, 810, -1000, - 711, -1000, 799, 5579, 144, 611, 350, 611, 19807, 611, - 19807, 5579, 5579, 5579, 57, 96, 78, 19807, 569, 769, - 138, 19807, 1050, 880, 19807, 611, 611, -1000, 6734, -1000, - 5579, 392, -1000, 561, 10870, 5579, 5579, 5579, 19807, 5579, - 5579, -1000, 548, -1000, -1000, 381, -1000, -1000, -1000, -1000, - -1000, -1000, 5579, 5579, 378, 381, 378, -1000, -1000, -1000, - -1000, 10870, 291, -1000, 877, -1000, -1000, 23, -1000, -1000, - -1000, -1000, -1000, 1139, -1000, -1000, -1000, -135, -1000, -1000, - 10870, 10870, 10870, 10870, 407, 293, 11983, 409, 372, 11983, - 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, 11983, - 11983, 11983, 11983, 11983, 626, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 611, -1000, 1137, 770, 770, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 12354, 8260, 6734, - 707, 697, 1085, 9373, 9373, 10870, 10870, 10115, 9744, 9373, - 1014, 338, 558, 19807, -1000, -1000, 11612, -1000, -1000, -1000, - -1000, -1000, 588, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 19807, 19807, 9373, 9373, 9373, 9373, 9373, -1000, 1059, 707, - 1096, 1037, 1132, 278, 571, 768, -1000, 396, 1059, 15348, - 808, -1000, 1096, -1000, -1000, -1000, 19807, -1000, -1000, 17574, - -1000, -1000, 6349, 19807, 77, 19807, -1000, 790, 948, -1000, - -1000, -1000, 1053, 14606, 14977, 19807, 710, 704, -1000, -1000, - 213, 7119, -117, -1000, 7119, 762, -1000, -122, -93, 8631, - 247, -1000, -1000, -1000, -1000, 4809, 13467, 706, 375, -66, - -1000, -1000, -1000, 799, -1000, 799, 799, 799, 799, -11, - -11, -11, -11, -1000, -1000, -1000, -1000, -1000, 820, 814, - -1000, 799, 799, 799, 799, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 753, + 19261, -1000, -1000, 2130, 567, -1000, 870, -1000, 739, -1000, + 865, 5404, 158, 567, 360, 567, 19261, 170, -1000, -1000, + -1000, 571, 19261, 5404, 5404, 5404, 66, 101, 90, 19261, + 841, 142, 19261, 1139, 945, 19261, 567, 567, -1000, 6559, + -1000, 5404, 433, -1000, 569, 10695, 5404, 5404, 5404, 19261, + 5404, 5404, -1000, 566, -1000, -1000, 398, -1000, -1000, -1000, + -1000, -1000, -1000, 5404, 5404, 392, 398, 392, -1000, -1000, + -1000, -1000, 10695, 287, -1000, 944, -1000, -1000, 34, -1000, + -1000, -1000, -1000, -1000, 1218, -1000, -1000, -1000, -127, -1000, + -1000, 10695, 10695, 10695, 10695, 453, 305, 11808, 516, 389, + 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, 11808, + 11808, 11808, 11808, 11808, 11808, 604, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 567, -1000, 1200, 898, 898, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 12179, 8085, + 6559, 721, 737, 1181, 9198, 9198, 10695, 10695, 9940, 9569, + 9198, 1084, 340, 403, 19261, -1000, -1000, 11437, -1000, -1000, + -1000, -1000, -1000, 521, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 19261, 19261, 9198, 9198, 9198, 9198, 9198, -1000, 1159, + 721, 1094, 1129, 1211, 265, 708, 807, -1000, 517, 1159, + 14802, 835, -1000, 1094, -1000, -1000, -1000, 19261, -1000, -1000, + 17028, -1000, -1000, 6174, 19261, 81, 19261, -1000, 800, 1117, + -1000, -1000, -1000, 1143, 14060, 14431, 19261, 792, 768, -1000, + -1000, 230, 6944, -92, -1000, 6944, 783, -1000, -94, -114, + 8456, 210, -1000, -1000, -1000, -1000, 4634, 12921, 608, 450, + -31, -1000, -1000, -1000, 865, -1000, 865, 865, 865, 865, + 3, 3, 3, 3, -1000, -1000, -1000, -1000, -1000, 892, + 891, -1000, 865, 865, 865, 865, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 813, 813, 813, 800, 800, 106, 10870, 53, - 19807, 1042, 464, -1000, 19807, 5579, 1046, 5579, -1000, 856, - 142, -1000, -1000, -1000, 19807, 19807, 19807, 19807, 19807, 177, - -1000, 19807, 19807, 767, -1000, 19807, 5579, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 558, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 19807, -1000, -1000, -1000, -1000, 392, 19807, - 19807, 19807, 392, 558, -1000, 19807, 19807, -1000, -1000, -1000, - -1000, -1000, 558, 293, 501, 298, -1000, -1000, 477, -1000, - -1000, 1644, -1000, -1000, -1000, -1000, 409, 11983, 11983, 11983, - 455, 1644, 2232, 1051, 1403, 249, 514, 514, 240, 240, - 240, 240, 240, 307, 307, -1000, -1000, -1000, 588, -1000, - -1000, -1000, 588, 9373, 9373, 766, 757, 211, -1000, 845, - -1000, -1000, 1059, 689, 689, 582, 597, 329, 1108, 689, - 317, 1097, 689, 689, 9373, -1000, -1000, 337, -1000, 10870, - 588, -1000, 207, -1000, 609, 765, 763, 689, 588, 588, - 689, 689, 1019, -1000, -1000, 988, -1000, 938, 10870, 10870, - 10870, -1000, -1000, -1000, 1019, 1074, -1000, 954, 953, 1094, - 9373, 16832, 1096, -1000, -1000, -1000, 202, 1094, 750, 757, - -1000, 19807, 16832, 16832, 16832, 16832, 16832, -1000, 929, 928, - -1000, 914, 913, 922, 19807, -1000, 692, 707, 14606, 205, - 757, -1000, 17203, -1000, -1000, 77, 744, 16832, 19807, -1000, - -1000, 16832, 19807, 5964, -1000, 762, -117, -45, -1000, -1000, - -1000, -1000, 558, -1000, 634, 760, 4424, -1000, -1000, -1000, - -1000, 101, -1000, -1000, 812, 611, -1000, 1033, 268, 263, - 611, 1031, -1000, -1000, -1000, -1000, 1018, -1000, 358, -79, - -1000, -1000, -11, -11, -1000, -1000, 247, 1013, 247, 247, - 247, 546, 546, -1000, -1000, -1000, -1000, -1000, 427, -1000, - -1000, -1000, 421, -1000, -1000, 810, 567, 886, 53, -1000, - 611, 302, 545, 998, -1000, -1000, 702, 5579, -1000, -1000, - -1000, 876, 19807, -1000, 324, 324, 315, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 76, 846, - -1000, -1000, -1000, -1000, 13, 55, 137, -1000, 5579, -1000, - 378, -1000, -1000, -1000, 378, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 455, 1644, 1970, -1000, 11983, 11983, -1000, -1000, - 689, 689, 9373, 6734, 1085, 1019, -1000, -1000, 143, 626, - 143, 11983, 11983, -1000, 11983, 11983, -1000, -163, 743, 316, - -1000, 10870, 499, -1000, 6734, -1000, 11983, 11983, -1000, -1000, - -1000, -1000, -1000, -1000, 577, 543, 936, 558, 558, -1000, - -1000, 19807, -1000, -1000, -1000, -1000, 1077, 10870, -1000, 759, - -1000, 5194, 1059, 874, 19807, 757, 1139, 13851, 19807, 803, - -1000, 304, 948, 854, 869, 1163, -1000, -1000, -1000, -1000, - 923, -1000, 895, -1000, -1000, -1000, -1000, -1000, 707, -1000, - 159, 151, 146, 19807, -1000, 1094, 16832, 716, -1000, 716, - -1000, 197, -1000, -1000, -1000, -133, -129, -1000, -1000, -1000, - 4809, -1000, 4809, -1000, 19807, 98, -1000, 611, 611, -1000, - -1000, -1000, 807, 866, 11983, -1000, -1000, -1000, 247, 247, - -1000, 311, -1000, -1000, -1000, 687, -1000, 685, 755, 673, - 12, -1000, 841, 1011, 302, 302, -1000, -1000, 395, -1000, - -1000, 534, -1000, -1000, 19807, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 880, 880, 880, 866, 866, 105, 10695, + 65, 19261, 1135, 512, -1000, 19261, 5404, 1138, 5404, -1000, + 567, -1000, 139, -1000, -1000, -1000, 19261, 19261, 19261, 19261, + 19261, 203, 19261, 19261, 804, -1000, 19261, 5404, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 403, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 19261, -1000, -1000, -1000, -1000, 433, + 19261, 19261, 19261, 433, 403, -1000, 19261, 19261, -1000, -1000, + -1000, -1000, -1000, 403, 305, 443, 285, -1000, -1000, 461, + -1000, -1000, 2040, -1000, -1000, -1000, -1000, 516, 11808, 11808, + 11808, 643, 2040, 1979, 538, 356, 241, 303, 303, 248, + 248, 248, 248, 248, 266, 266, -1000, -1000, -1000, 521, + -1000, -1000, -1000, 521, 9198, 9198, 798, 787, 229, -1000, + 868, -1000, -1000, 1159, 720, 720, 576, 736, 327, 1197, + 720, 322, 1196, 720, 720, 9198, -1000, -1000, 368, -1000, + 10695, 521, -1000, 228, -1000, 441, 791, 788, 720, 521, + 521, 720, 720, 1095, -1000, -1000, 1053, -1000, 1004, 10695, + 10695, 10695, -1000, -1000, -1000, 1095, 1175, -1000, 1025, 1024, + 1189, 9198, 16286, 1094, -1000, -1000, -1000, 227, 1189, 786, + 787, -1000, 19261, 16286, 16286, 16286, 16286, 16286, -1000, 984, + 970, -1000, 997, 967, 1007, 19261, -1000, 733, 721, 14060, + 222, 787, -1000, 16657, -1000, -1000, 81, 769, 16286, 19261, + -1000, -1000, 16286, 19261, 5789, -1000, 783, -92, -96, -1000, + -1000, -1000, -1000, 403, -1000, 668, 782, 4249, -1000, -1000, + -1000, -1000, 112, -1000, -1000, 876, 567, -1000, 1111, 283, + 260, 567, 1108, -1000, -1000, -1000, -1000, 1102, -1000, 369, + -54, -1000, -1000, 3, 3, -1000, -1000, 210, 1078, 210, + 210, 210, 560, 560, -1000, -1000, -1000, -1000, -1000, 510, + -1000, -1000, -1000, 509, -1000, -1000, 870, 598, 942, 65, + -1000, 567, 319, 559, 1067, -1000, -1000, 597, 5404, -1000, + -1000, -1000, 917, -1000, 336, 336, 271, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 76, 869, + -1000, -1000, -1000, -1000, 31, 64, 140, -1000, 5404, -1000, + 392, -1000, -1000, -1000, 392, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 643, 2040, 1892, -1000, 11808, 11808, -1000, -1000, + 720, 720, 9198, 6559, 1181, 1095, -1000, -1000, 92, 604, + 92, 11808, 11808, -1000, 11808, 11808, -1000, -146, 813, 349, + -1000, 10695, 414, -1000, 6559, -1000, 11808, 11808, -1000, -1000, + -1000, -1000, -1000, -1000, 544, 549, 1002, 403, 403, -1000, + -1000, 19261, -1000, -1000, -1000, -1000, 1187, 10695, -1000, 778, + -1000, 5019, 1159, 943, 19261, 787, 1218, 13305, 19261, 845, + -1000, 337, 1117, 904, 941, 976, -1000, -1000, -1000, -1000, + 969, -1000, 968, -1000, -1000, -1000, -1000, -1000, 721, -1000, + 166, 165, 162, 19261, -1000, 1189, 16286, 715, -1000, 715, + -1000, 226, -1000, -1000, -1000, -105, -120, -1000, -1000, -1000, + 4634, -1000, 4634, -1000, 19261, 103, -1000, 567, 567, -1000, + -1000, -1000, 867, 940, 11808, -1000, -1000, -1000, 210, 210, + -1000, 358, -1000, -1000, -1000, 717, -1000, 705, 763, 702, + 10, -1000, 899, 1076, 319, 319, -1000, -1000, 494, -1000, + -1000, 542, -1000, -1000, 939, 19261, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 19807, -1000, -1000, -1000, -1000, -1000, 19807, - -174, 611, 19807, 19807, 19807, 19807, -1000, 392, 392, -1000, - 11983, 1644, 1644, -1000, -1000, 588, -1000, 1059, -1000, 588, - 799, 799, -1000, 799, 800, -1000, 799, 8, 799, 5, - 588, 588, 2184, 2159, 2114, 1868, 757, -157, -1000, 558, - 10870, -1000, 1830, 1667, 528, -11, -1000, -1000, -1000, 1089, - 1081, 558, -1000, -1000, -1000, 1017, 729, 721, -1000, -1000, - 9002, 671, 950, 190, 668, -1000, 1085, 19807, 10870, -1000, - -1000, 10870, 798, -1000, 10870, -1000, -1000, -1000, 1085, 757, - 757, 757, 668, 1085, 716, -1000, -1000, 261, -1000, -1000, - -1000, 4424, -1000, 666, -1000, 1031, -1000, -1000, 19807, -61, - 1128, 1644, -1000, -1000, -1000, -1000, -11, 518, -11, 387, - -1000, 380, -1000, -1000, -221, -1000, -1000, 756, 903, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1036, -1000, 6734, -1000, - -1000, 796, 855, -1000, -1000, -1000, -1000, 1644, -1000, 1019, - -1000, -1000, 173, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 11983, 11983, 11983, 11983, 11983, 1059, 511, 558, 11983, - 11983, -11, -59, -1000, 10870, 10870, 1030, -1000, 757, -1000, - 758, 19807, 757, 19807, -1000, 19807, 1059, -1000, 558, 558, - 19807, 558, 16461, 19807, 19807, 14222, 1059, -1000, 53, 662, - -1000, 259, -1000, -76, 247, -1000, 247, 596, 592, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 757, 751, -1000, - 301, 19807, 19807, -1000, -1000, -1000, 609, 609, 609, 609, - 65, 588, -1000, 609, 609, -278, -1000, 990, 986, 558, - 742, 1127, -1000, 757, 1139, 181, 721, -1000, -1000, -1000, - 643, 622, -1000, 622, 622, 205, -1000, -1000, 89, 19807, - 365, 1029, -1000, 1020, -1000, -1000, -1000, -1000, -1000, 67, - 6734, 4809, 620, -1000, -1000, -1000, -1000, -1000, 588, 68, - -178, -1000, -1000, -1000, -59, 155, -1000, 967, 956, 1076, - 19807, 721, 19807, -1000, -1000, -1000, -1000, -1000, 19807, -1000, - -1000, 508, -1000, -1000, 606, -1000, 19807, -1000, -1000, 846, - -1000, 935, -172, -184, 970, 975, 975, 986, 1075, 984, - 982, -1000, 507, 714, -1000, 788, -1000, -1000, 67, 949, - -174, -1000, 881, -1000, 951, 440, -1000, -1000, -1000, -1000, - 505, -1000, 1073, 1064, -1000, 19807, -1000, 66, -1000, -175, - -1000, 408, -1000, -1000, -1000, 502, 467, 599, 61, -181, - -1000, -1000, -1000, -1000, 863, 757, -186, 862, -1000, 1106, - 11241, -1000, -1000, 1118, 232, 232, 609, 588, -1000, -1000, - -1000, 100, 566, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 19261, -1000, -1000, -1000, -1000, -1000, 19261, + -154, 567, 19261, 19261, 19261, 19261, -1000, 433, 433, -1000, + 11808, 2040, 2040, -1000, -1000, 521, -1000, 1159, -1000, 521, + 865, 865, -1000, 865, 866, -1000, 865, 22, 865, 19, + 521, 521, 1823, 1693, 1671, 1367, 787, -141, -1000, 403, + 10695, -1000, 874, 614, 537, 3, -1000, -1000, -1000, 1184, + 1177, 403, -1000, -1000, -1000, 1118, 629, 642, -1000, -1000, + 8827, 696, 1023, 223, 676, -1000, 1181, 19261, 10695, -1000, + -1000, 10695, 864, -1000, 10695, -1000, -1000, -1000, 1181, 787, + 787, 787, 676, 1181, 715, -1000, -1000, 254, -1000, -1000, + -1000, 4249, -1000, 649, -1000, 1108, -1000, -1000, 19261, -27, + 1209, 2040, -1000, -1000, -1000, -1000, 3, 535, 3, 474, + -1000, 459, -1000, -1000, -218, -1000, -1000, 862, 978, -1000, + -1000, 19261, -1000, -1000, -1000, -1000, -1000, 1120, -1000, 6559, + -1000, -1000, 863, 906, -1000, -1000, -1000, -1000, 2040, -1000, + 1095, -1000, -1000, 164, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 11808, 11808, 11808, 11808, 11808, 1159, 534, 403, + 11808, 11808, 3, -47, -1000, 10695, 10695, 1106, -1000, 787, + -1000, 837, 19261, 787, 19261, -1000, 19261, 1159, -1000, 403, + 403, 19261, 403, 15915, 19261, 19261, 13676, 1159, -1000, 65, + 638, -1000, 252, -1000, -151, 210, -1000, 210, 591, 543, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 787, + 759, -1000, 314, 19261, 19261, -1000, -1000, -1000, 441, 441, + 441, 441, 77, 521, -1000, 441, 441, -277, -1000, 1055, + 1051, 403, 653, 1208, -1000, 787, 1218, 221, 642, -1000, + -1000, -1000, 636, 632, -1000, 632, 632, 222, -1000, -1000, + 93, 19261, 407, 1105, -1000, 1104, -1000, -1000, -1000, -1000, + -1000, 75, 6559, 4634, 622, -1000, -1000, -1000, -1000, -1000, + 521, 83, -175, -1000, -1000, -1000, -47, 173, -1000, 1035, + 1030, 1176, 19261, 642, 19261, -1000, -1000, -1000, -1000, -1000, + 19261, -1000, -1000, 525, -1000, -1000, 611, -1000, 19261, -1000, + -1000, 869, -1000, 992, -152, -179, 1040, 1042, 1042, 1051, + 1174, 1049, 1047, -1000, 524, 616, -1000, 856, -1000, -1000, + 75, 1020, -154, -1000, 989, -1000, 1038, 482, -1000, -1000, + -1000, -1000, 523, -1000, 1173, 1167, -1000, 19261, -1000, 72, + -1000, -172, -1000, 418, -1000, -1000, -1000, 518, 514, 601, + 70, -176, -1000, -1000, -1000, -1000, 923, 787, -183, 920, + -1000, 1194, 11066, -1000, -1000, 1207, 242, 242, 441, 521, + -1000, -1000, -1000, 99, 579, -1000, -1000, -1000, -1000, -1000, + -1000, } var yyPgo = [...]int{ - 0, 1422, 1421, 50, 82, 71, 1420, 1419, 1418, 1417, - 114, 111, 110, 1416, 1414, 1411, 1410, 1409, 1408, 1407, - 1406, 1405, 1404, 1401, 1400, 1399, 1398, 1397, 1395, 1393, - 1392, 1391, 1390, 1389, 1388, 97, 1387, 1381, 1378, 1377, - 1373, 1371, 1370, 1369, 1364, 98, 56, 216, 54, 73, - 1363, 69, 666, 1362, 43, 70, 79, 1361, 40, 1360, - 1359, 108, 1357, 1356, 67, 1354, 1344, 68, 1343, 65, - 1341, 12, 39, 1338, 1336, 1334, 1333, 96, 1810, 1330, - 1326, 26, 1325, 1324, 112, 1323, 74, 14, 15, 32, - 23, 1322, 84, 1317, 19, 1314, 72, 1312, 1310, 1306, - 1305, 27, 1304, 77, 90, 103, 1303, 7, 9, 1302, - 1300, 1299, 1296, 1295, 1293, 4, 1292, 1290, 1289, 17, - 1286, 25, 64, 37, 20, 10, 1285, 1283, 18, 101, - 63, 91, 1276, 1273, 1271, 726, 1266, 1264, 49, 1263, - 117, 1261, 76, 102, 119, 531, 1260, 1258, 1257, 1254, - 1253, 46, 822, 1806, 16, 93, 1250, 1249, 1248, 1247, - 2763, 52, 66, 33, 1246, 1245, 1243, 21, 384, 35, - 692, 1241, 44, 1239, 1238, 1237, 1234, 1223, 1222, 1219, - 106, 1218, 1217, 1216, 80, 38, 94, 24, 1215, 1212, - 1207, 1206, 60, 85, 1205, 1202, 62, 61, 1199, 95, - 34, 30, 1198, 1197, 1196, 1195, 31, 8, 1194, 92, - 36, 59, 28, 22, 1192, 13, 1191, 29, 42, 1190, - 6, 1188, 11, 1166, 3, 0, 1162, 5, 58, 1, - 1160, 2, 1154, 1153, 1149, 1412, 576, 107, 1146, 104, + 0, 1480, 1476, 25, 76, 74, 1475, 1474, 1473, 1470, + 118, 117, 111, 1468, 1466, 1459, 1458, 1456, 1454, 1452, + 1451, 1450, 1448, 1447, 1445, 1442, 1441, 1440, 1435, 1434, + 1433, 1432, 1431, 1428, 1427, 106, 1426, 1424, 1423, 1422, + 1421, 1420, 1419, 1412, 1411, 100, 50, 116, 59, 72, + 1410, 69, 298, 1408, 38, 71, 68, 1406, 46, 1405, + 1404, 112, 1403, 1402, 66, 1401, 1400, 2740, 1399, 67, + 1398, 13, 95, 1397, 1394, 1390, 1389, 93, 648, 1388, + 1381, 15, 1378, 1373, 124, 1372, 79, 16, 21, 33, + 29, 1371, 75, 1370, 9, 1369, 78, 1368, 1363, 1362, + 1361, 22, 1338, 73, 80, 20, 1334, 8, 11, 1331, + 1327, 1326, 1324, 1323, 1321, 4, 1320, 1317, 1314, 1312, + 1310, 27, 1308, 7, 64, 39, 30, 10, 1307, 1306, + 23, 92, 62, 81, 1305, 1304, 1303, 846, 1103, 1302, + 63, 1301, 122, 1300, 28, 96, 539, 541, 1298, 1296, + 1293, 1292, 1291, 51, 823, 1944, 102, 84, 1290, 1288, + 2383, 54, 65, 17, 1285, 1284, 1282, 34, 70, 43, + 794, 1280, 40, 1277, 1271, 1270, 1267, 1266, 1265, 1264, + 114, 1260, 1255, 1250, 18, 37, 90, 24, 1249, 1248, + 1247, 1246, 58, 85, 1245, 1244, 61, 60, 1242, 104, + 36, 31, 1241, 1240, 1239, 1238, 49, 12, 1236, 82, + 44, 57, 35, 32, 1235, 19, 1234, 41, 42, 1233, + 6, 1232, 14, 1231, 3, 0, 1230, 5, 56, 1, + 1228, 2, 1227, 1226, 1225, 1645, 524, 105, 1224, 115, } var yyR1 = [...]int{ @@ -3196,8 +3143,8 @@ var yyR1 = [...]int{ 1, 225, 225, 225, 21, 34, 3, 3, 3, 3, 2, 2, 8, 9, 4, 5, 5, 10, 10, 39, 39, 11, 12, 12, 12, 12, 237, 237, 61, 61, - 62, 62, 122, 122, 13, 14, 14, 131, 131, 130, - 130, 130, 132, 132, 132, 132, 170, 170, 15, 15, + 62, 62, 124, 124, 13, 14, 14, 133, 133, 132, + 132, 132, 134, 134, 134, 134, 170, 170, 15, 15, 15, 15, 15, 15, 15, 227, 227, 226, 224, 224, 223, 223, 222, 22, 24, 202, 204, 204, 203, 203, 203, 203, 203, 203, 193, 173, 173, 173, 173, 176, @@ -3206,14 +3153,14 @@ var yyR1 = [...]int{ 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, 192, 192, 180, 180, 186, 186, 187, - 187, 187, 189, 189, 190, 190, 146, 146, 146, 182, + 187, 187, 189, 189, 190, 190, 148, 148, 148, 182, 182, 183, 183, 188, 188, 184, 184, 184, 185, 185, 185, 191, 191, 191, 191, 191, 181, 181, 194, 215, 215, 214, 214, 211, 211, 211, 211, 201, 201, 208, 208, 208, 208, 208, 198, 198, 198, 199, 199, 197, 197, 200, 200, 210, 210, 209, 195, 195, 196, 196, 217, 217, 217, 217, 217, 218, 230, 231, 229, 229, - 229, 229, 229, 147, 147, 147, 205, 205, 205, 206, + 229, 229, 229, 149, 149, 149, 205, 205, 205, 206, 206, 206, 207, 207, 207, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 228, 228, 228, 228, 228, 228, 228, 228, @@ -3222,8 +3169,8 @@ var yyR1 = [...]int{ 19, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 139, 139, 232, 232, 141, 141, 137, 137, - 140, 140, 138, 138, 138, 142, 142, 142, 143, 143, + 26, 26, 141, 141, 232, 232, 143, 143, 139, 139, + 142, 142, 140, 140, 140, 144, 144, 144, 145, 145, 171, 171, 171, 27, 27, 29, 29, 30, 31, 31, 165, 165, 166, 166, 32, 33, 38, 38, 38, 38, 38, 38, 40, 40, 40, 7, 7, 7, 7, 37, @@ -3231,14 +3178,14 @@ var yyR1 = [...]int{ 35, 36, 36, 45, 45, 45, 41, 41, 41, 44, 44, 44, 48, 48, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 47, 47, 49, 49, 49, - 49, 156, 156, 156, 155, 155, 53, 53, 54, 54, - 55, 55, 56, 56, 56, 93, 70, 70, 121, 121, - 123, 123, 57, 57, 57, 57, 58, 58, 59, 59, + 49, 158, 158, 158, 157, 157, 53, 53, 54, 54, + 55, 55, 56, 56, 56, 93, 70, 70, 123, 123, + 125, 125, 57, 57, 57, 57, 58, 58, 59, 59, 60, 60, 164, 164, 163, 163, 163, 162, 162, 63, 63, 63, 65, 64, 64, 64, 64, 66, 66, 68, 68, 67, 67, 69, 71, 71, 71, 71, 71, 72, - 72, 52, 52, 52, 52, 52, 52, 52, 52, 134, - 134, 74, 74, 73, 73, 73, 73, 73, 73, 73, + 72, 52, 52, 52, 52, 52, 52, 52, 52, 136, + 136, 74, 74, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 85, 85, 85, 85, 85, 85, 75, 75, 75, 75, 75, 75, 75, 46, 46, 86, 86, 86, 92, 87, 87, 78, 78, 78, 78, 78, 78, @@ -3256,50 +3203,50 @@ var yyR1 = [...]int{ 77, 79, 79, 79, 99, 99, 100, 100, 101, 101, 102, 102, 103, 104, 104, 104, 105, 105, 105, 105, 216, 216, 216, 216, 216, 212, 212, 212, 212, 213, - 213, 213, 119, 119, 119, 106, 106, 106, 106, 111, + 213, 213, 121, 121, 121, 106, 106, 106, 106, 111, 111, 111, 107, 107, 109, 109, 109, 110, 110, 110, 108, 114, 114, 116, 116, 115, 115, 113, 113, 118, 118, 117, 117, 112, 112, 76, 76, 76, 76, 76, - 120, 120, 120, 120, 124, 124, 88, 88, 90, 90, - 89, 91, 125, 125, 128, 126, 126, 129, 129, 129, - 129, 129, 127, 127, 127, 159, 159, 159, 133, 133, - 144, 144, 145, 145, 135, 135, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 136, 136, 136, 149, - 149, 149, 150, 150, 158, 158, 158, 157, 157, 153, - 153, 154, 154, 160, 160, 161, 161, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 235, 236, 167, - 168, 168, 168, + 122, 122, 122, 122, 126, 126, 88, 88, 90, 90, + 89, 91, 127, 127, 130, 128, 128, 131, 131, 131, + 131, 131, 129, 129, 129, 159, 159, 159, 135, 135, + 146, 146, 147, 147, 137, 137, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 138, 138, 138, 151, + 151, 151, 152, 152, 119, 119, 119, 119, 120, 120, + 155, 155, 156, 156, 160, 160, 161, 161, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 235, 236, + 167, 168, 168, 168, } var yyR2 = [...]int{ @@ -3312,7 +3259,7 @@ var yyR2 = [...]int{ 1, 3, 0, 4, 3, 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 6, 4, 6, 5, 5, 0, 2, 1, 0, 2, - 1, 3, 3, 4, 7, 4, 2, 4, 1, 1, + 1, 3, 3, 4, 8, 4, 2, 4, 1, 1, 3, 4, 3, 3, 8, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, @@ -3378,7 +3325,8 @@ var yyR2 = [...]int{ 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 3, 0, - 1, 1, 1, 1, 0, 1, 1, 0, 2, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 0, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -3411,8 +3359,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 0, 1, 1, + 0, 0, 1, 1, } var yyChk = [...]int{ @@ -3425,173 +3372,174 @@ var yyChk = [...]int{ 35, 41, 80, 9, 289, 177, 176, 26, -234, 391, -45, 5, -101, 16, -3, -35, -238, -35, -35, -35, -35, -35, -35, -202, -204, 80, 119, 80, 156, 100, - 281, 153, 154, -158, 160, -153, -225, -152, 83, 84, - 85, 299, 168, 331, 332, 76, 196, 210, 204, 231, - 223, 300, 333, 169, 221, 224, 268, 166, 334, 251, - 258, 94, 199, 277, 335, 75, 47, 40, 178, 219, - 215, 336, 308, 213, 46, 28, 45, 337, 260, 236, - 44, 338, 79, 304, 262, 214, 259, 152, 339, 171, - 387, 164, 340, 237, 241, 341, 269, 48, 342, 343, - 344, 74, 208, 209, 345, 167, 271, 235, 165, 34, - 263, 301, 54, 186, 272, 42, 239, 41, 346, 234, - 230, 49, 347, 348, 349, 350, 233, 207, 229, 58, - 243, 242, 244, 267, 226, 351, 352, 353, 172, 77, - 354, 216, 19, 355, 356, 357, 52, 358, 359, 275, - 181, 360, 50, 37, 184, 361, 362, 363, 364, 365, - 366, 261, 238, 240, 161, 188, 257, 303, 367, 273, - 212, 368, 173, 185, 180, 276, 174, 369, 370, 371, - 372, 373, 374, 375, 200, 39, 376, 377, 378, 379, - 195, 270, 279, 57, 78, 248, 380, 206, 163, 381, - 197, 51, 192, 253, 43, 227, 187, 382, 383, 217, - 218, 232, 205, 228, 198, 388, 189, 182, 384, 278, - 249, 305, 225, 222, 193, 385, 190, 191, 386, 389, - 264, 254, 265, 266, 255, 194, 302, 274, 220, 250, - -136, 156, 281, 153, 255, 302, 154, 154, 155, 156, - 281, 153, 154, -67, -160, -225, -152, 156, 154, 137, - 224, 268, 146, 252, 263, 264, 260, -141, 261, 188, - -171, 154, -137, 251, 254, 255, 194, -232, -225, 262, - 270, 269, 256, 266, 265, -160, 198, -165, 203, -153, - 201, -67, -38, 387, 150, -167, -167, 253, 253, -167, - -87, -52, -73, 103, -78, 30, 24, -77, -74, -94, - -91, -92, 137, 138, 140, 139, 141, 126, 127, 134, - 104, 142, -82, -80, -81, -83, 87, 86, 95, 88, - 89, 90, 91, 96, 97, 98, -153, -160, -89, -235, - 64, 65, 290, 291, 292, 293, 298, 294, 106, 53, - 280, 288, 287, 286, 284, 285, 282, 283, 296, 297, - 159, 281, 153, 132, 289, -225, -152, 40, -5, -4, - -235, 6, 21, 22, -105, 18, 17, -236, 82, -41, - -50, 59, 60, -51, 22, 36, 63, 61, -36, -49, - 128, -52, -160, -49, -135, 158, -135, -135, -126, -170, - 198, -129, 270, 269, -154, -127, -153, -151, 268, 224, - 267, 151, 306, 102, 23, 25, 246, 105, 137, 17, - 106, 136, 290, 146, 68, 307, 282, 283, 280, 292, - 293, 281, 252, 30, 11, 309, 26, 176, 22, 36, - 130, 148, 109, 110, 179, 24, 177, 98, 312, 20, - 71, 12, 14, 313, 314, 15, 159, 158, 121, 155, - 66, 9, 142, 27, 118, 62, 315, 29, 316, 317, - 318, 319, 64, 119, 18, 284, 285, 32, 320, 298, - 183, 132, 69, 55, 103, 321, 322, 96, 323, 99, - 72, 100, 16, 67, 38, 324, 325, 326, 327, 120, - 149, 289, 65, 328, 153, 6, 295, 31, 175, 63, - 329, 154, 108, 296, 297, 157, 97, 5, 160, 33, - 10, 70, 73, 286, 287, 288, 53, 107, 13, 330, - 101, -203, 119, -193, -196, -153, 170, -218, 166, -67, - -210, -209, -153, -67, 289, -145, 159, -145, -145, 155, - 154, -67, -225, -225, 146, 148, 151, 72, 87, -23, - -67, -144, 159, -225, -144, -144, -144, -67, 143, -67, - -225, 31, -142, 119, 13, 281, -225, 188, 154, 189, - 156, -143, 119, -143, -143, -198, 155, 34, 167, -168, - -235, -154, 192, 193, 192, -140, -139, 258, 259, 253, - 257, 13, 193, 253, 191, -142, -168, 157, -153, -37, - -153, 87, -7, -3, -11, -10, -12, 111, -167, -167, - 81, 102, 100, 101, 118, -52, -75, 121, 103, 119, - 120, 105, 123, 122, 133, 126, 127, 128, 129, 130, - 131, 132, 124, 125, 136, 111, 112, 113, 114, 115, - 116, 117, -134, -235, -92, -235, 144, 145, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78, -235, 143, - -2, -87, -4, -235, -235, -235, -235, -235, -235, -235, - -235, -97, -52, -235, -239, -84, -235, -239, -84, -239, - -84, -239, -235, -239, -84, -239, -84, -239, -239, -84, - -235, -235, -235, -235, -235, -235, -235, -167, -101, -3, - -35, -119, 20, 32, -52, -102, -103, -52, -101, 55, - -47, -49, -51, 59, 60, 93, 12, -156, -155, 23, - -153, 87, 143, 12, -68, 27, -67, -54, -55, -56, - -57, -70, -93, -235, -67, 12, -61, -62, -67, -69, - -160, 81, 198, -129, -170, -131, -130, 271, 273, 111, - -159, -153, 87, 30, 31, 82, 81, -67, -173, -176, - -178, -177, -179, -174, -175, 221, 222, 137, 225, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 31, - 178, 217, 218, 219, 220, 237, 238, 239, 240, 241, - 242, 243, 244, 204, 223, 300, 205, 206, 207, 208, - 209, 210, 212, 213, 214, 215, 216, -225, 80, 82, - 81, -180, 80, -168, 156, -225, 103, -225, -67, -225, - -67, -168, -168, -168, 190, 190, 154, 154, 195, -67, - 87, 81, 157, -61, 24, 72, -67, -225, -225, -161, - -160, -151, -168, -142, 87, -52, -168, -168, -168, -67, - -168, -168, 87, -199, 12, 121, -168, -168, -138, 12, - 121, -199, -138, -52, -143, 72, -166, 201, 235, 388, - 389, 390, -52, -52, -52, -52, -85, 96, 103, 97, - 98, -78, -86, -89, -92, 92, 121, 119, 120, 105, - -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -169, -225, 87, -225, -77, - -77, -153, -48, 22, 36, -47, -154, -161, -151, -45, - -236, -236, -101, -47, -47, -52, -52, -94, 87, -47, - -94, 87, -47, -47, -44, 22, 36, -95, -96, 107, - -94, -153, -160, -236, -78, -153, -153, -47, -48, -48, - -47, -47, -105, -236, -106, 27, 10, 121, 81, 19, - 81, -104, 25, 26, -105, -79, -153, 88, 91, -53, - 81, 12, -51, -67, -155, 128, -161, -67, -122, 184, - -67, 31, 81, -63, -65, -64, -66, 62, 66, 68, - 63, 64, 65, 69, -164, 23, -54, -3, -235, -163, - 184, -162, 23, -160, 87, -67, -61, -237, 81, 12, - 73, -237, 81, 143, -129, -131, 81, 272, 274, 275, - 72, 99, -52, -185, 136, -205, -206, -207, -154, 87, - 88, -193, -194, -195, -208, 170, -217, 161, 163, 160, - -197, 171, -218, 155, 29, 82, -146, 96, 103, -189, - 249, -180, -180, -180, -180, -180, -184, 224, -184, -184, - -184, 80, 80, -180, -180, -180, -180, -186, 80, -186, - -186, -187, 80, -187, -218, 166, -52, -215, -214, -211, - 73, 165, 94, 302, -209, -104, 88, -67, -168, 24, - -168, -157, 73, -148, 151, 148, 149, -221, 147, 246, + 281, 153, 154, -138, 302, -138, 156, 281, 153, 255, + 154, 154, 155, 156, 281, 153, 154, -67, -160, -225, + -154, 83, 84, 85, 299, 168, 331, 332, 76, 196, + 210, 204, 231, 223, 300, 333, 169, 221, 224, 268, + 166, 334, 251, 258, 94, 199, 277, 335, 75, 47, + 40, 178, 219, 215, 336, 308, 213, 46, 28, 45, + 337, 260, 236, 44, 338, 79, 304, 262, 214, 259, + 152, 339, 171, 387, 164, 340, 237, 241, 341, 269, + 48, 342, 343, 344, 74, 208, 209, 345, 167, 271, + 235, 165, 34, 263, 301, 54, 186, 272, 42, 239, + 41, 346, 234, 230, 49, 347, 348, 349, 350, 233, + 207, 229, 58, 243, 242, 244, 267, 226, 351, 352, + 353, 172, 77, 354, 216, 19, 355, 356, 357, 52, + 358, 359, 275, 181, 360, 50, 37, 184, 361, 362, + 363, 364, 365, 366, 261, 238, 240, 161, 188, 257, + 303, 367, 273, 212, 368, 173, 185, 180, 276, 174, + 369, 370, 371, 372, 373, 374, 375, 200, 39, 376, + 377, 378, 379, 195, 270, 279, 57, 78, 248, 380, + 206, 163, 381, 197, 51, 192, 253, 43, 227, 187, + 382, 383, 217, 218, 232, 205, 228, 198, 388, 189, + 182, 384, 278, 249, 305, 225, 222, 193, 385, 156, + 190, 191, 386, 389, 264, 254, 265, 266, 255, 194, + 302, 274, 220, 250, 154, 137, 224, 268, 146, 252, + 263, 264, 260, -143, 261, 188, -171, 154, -139, 251, + 254, 255, 194, -232, -225, 262, 270, 269, 256, 266, + 265, -160, 198, -165, 203, -155, -225, -154, 201, -67, + -38, 387, 150, -167, -167, 253, 253, -167, -87, -52, + -73, 103, -78, 30, 24, -77, -74, -94, -91, -92, + 137, 138, 140, 139, 141, 126, 127, 134, 104, 142, + -82, -80, -81, -83, 87, 86, 95, 88, 89, 90, + 91, 96, 97, 98, -155, -160, -89, -235, 64, 65, + 290, 291, 292, 293, 298, 294, 106, 53, 280, 288, + 287, 286, 284, 285, 282, 283, 296, 297, 159, 281, + 153, 132, 289, -225, -154, 40, -5, -4, -235, 6, + 21, 22, -105, 18, 17, -236, 82, -41, -50, 59, + 60, -51, 22, 36, 63, 61, -36, -49, 128, -52, + -160, -49, -137, 158, -137, -137, -128, -170, 198, -131, + 270, 269, -156, -129, -155, -153, 268, 224, 267, 151, + 306, 102, 23, 25, 246, 105, 137, 17, 106, 136, + 290, 146, 68, 307, 282, 283, 280, 292, 293, 281, + 252, 30, 11, 309, 26, 176, 22, 36, 130, 148, + 109, 110, 179, 24, 177, 98, 312, 20, 71, 12, + 14, 313, 314, 15, 159, 158, 121, 155, 66, 9, + 142, 27, 118, 62, 315, 29, 316, 317, 318, 319, + 64, 119, 18, 284, 285, 32, 320, 298, 183, 132, + 69, 55, 103, 321, 322, 96, 323, 99, 72, 100, + 16, 67, 38, 324, 325, 326, 327, 120, 149, 289, + 65, 328, 153, 6, 295, 31, 175, 63, 329, 154, + 108, 296, 297, 157, 97, 5, 160, 33, 10, 70, + 73, 286, 287, 288, 53, 107, 13, 330, 101, -203, + 119, -193, -196, -155, 170, -218, 166, -67, -210, -209, + -155, -67, 289, -147, 159, -147, -147, -119, 160, 163, + 164, 87, 154, -67, -225, -225, 146, 148, 151, 72, + -23, -67, -146, 159, -225, -146, -146, -146, -67, 143, + -67, -225, 31, -144, 119, 13, 281, -225, 188, 154, + 189, 156, -145, 119, -145, -145, -198, 155, 34, 167, + -168, -235, -156, 192, 193, 192, -142, -141, 258, 259, + 253, 257, 13, 193, 253, 191, -144, -168, 157, -155, + -37, -155, 87, -7, -3, -11, -10, -12, 111, -167, + -167, 81, 102, 100, 101, 118, -52, -75, 121, 103, + 119, 120, 105, 123, 122, 133, 126, 127, 128, 129, + 130, 131, 132, 124, 125, 136, 111, 112, 113, 114, + 115, 116, 117, -136, -235, -92, -235, 144, 145, -78, + -78, -78, -78, -78, -78, -78, -78, -78, -78, -235, + 143, -2, -87, -4, -235, -235, -235, -235, -235, -235, + -235, -235, -97, -52, -235, -239, -84, -235, -239, -84, + -239, -84, -239, -235, -239, -84, -239, -84, -239, -239, + -84, -235, -235, -235, -235, -235, -235, -235, -167, -101, + -3, -35, -121, 20, 32, -52, -102, -103, -52, -101, + 55, -47, -49, -51, 59, 60, 93, 12, -158, -157, + 23, -155, 87, 143, 12, -68, 27, -67, -54, -55, + -56, -57, -70, -93, -235, -67, 12, -61, -62, -67, + -69, -160, 81, 198, -131, -170, -133, -132, 271, 273, + 111, -159, -155, 87, 30, 31, 82, 81, -67, -173, + -176, -178, -177, -179, -174, -175, 221, 222, 137, 225, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 31, 178, 217, 218, 219, 220, 237, 238, 239, 240, + 241, 242, 243, 244, 204, 223, 300, 205, 206, 207, + 208, 209, 210, 212, 213, 214, 215, 216, -225, 80, + 82, 81, -180, 80, -168, 156, -225, 103, -225, -67, + 155, 87, -67, -168, -168, -168, 190, 190, 154, 154, + 195, -67, 81, 157, -61, 24, 72, -67, -225, -225, + -161, -160, -153, -168, -144, 87, -52, -168, -168, -168, + -67, -168, -168, 87, -199, 12, 121, -168, -168, -140, + 12, 121, -199, -140, -52, -145, 72, -166, 201, 235, + 388, 389, 390, -52, -52, -52, -52, -85, 96, 103, + 97, 98, -78, -86, -89, -92, 92, 121, 119, 120, + 105, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, -78, -78, -78, -169, -225, 87, -225, + -77, -77, -155, -48, 22, 36, -47, -156, -161, -153, + -45, -236, -236, -101, -47, -47, -52, -52, -94, 87, + -47, -94, 87, -47, -47, -44, 22, 36, -95, -96, + 107, -94, -155, -160, -236, -78, -155, -155, -47, -48, + -48, -47, -47, -105, -236, -106, 27, 10, 121, 81, + 19, 81, -104, 25, 26, -105, -79, -155, 88, 91, + -53, 81, 12, -51, -67, -157, 128, -161, -67, -124, + 184, -67, 31, 81, -63, -65, -64, -66, 62, 66, + 68, 63, 64, 65, 69, -164, 23, -54, -3, -235, + -163, 184, -162, 23, -160, 87, -67, -61, -237, 81, + 12, 73, -237, 81, 143, -131, -133, 81, 272, 274, + 275, 72, 99, -52, -185, 136, -205, -206, -207, -156, + 87, 88, -193, -194, -195, -208, 170, -217, 161, 163, + 160, -197, 171, -218, 155, 29, 82, -148, 96, 103, + -189, 249, -180, -180, -180, -180, -180, -184, 224, -184, + -184, -184, 80, 80, -180, -180, -180, -180, -186, 80, + -186, -186, -187, 80, -187, -218, 166, -52, -215, -214, + -211, 73, 165, 94, 302, -209, -104, 88, -67, -168, + 24, -168, -225, -150, 151, 148, 149, -221, 147, 246, 224, 94, 30, 16, 290, 184, 305, -225, 185, -67, -67, -67, -67, -67, 151, 148, -67, -67, -67, -168, - -67, -142, -160, -160, -67, -142, -67, -153, 96, 97, + -67, -144, -160, -160, -67, -144, -67, -155, 96, 97, 98, -86, -78, -78, -78, -46, 179, 102, -236, -236, -47, -47, -235, 143, -5, -105, -236, -236, 81, 73, 23, 12, 12, -236, 12, 12, -236, -236, -47, -98, -96, 109, -52, -236, 143, -236, 81, 81, -236, -236, - -236, -236, -236, -119, 38, 46, 57, -52, -52, -103, - -119, -133, 20, 12, 53, 53, -72, 13, -49, -54, - -51, 143, -72, -76, 31, 53, -3, -235, -235, -125, - -128, -94, -55, -56, -56, -55, -56, 62, 62, 62, + -236, -236, -236, -121, 38, 46, 57, -52, -52, -103, + -121, -135, 20, 12, 53, 53, -72, 13, -49, -54, + -51, 143, -72, -76, 31, 53, -3, -235, -235, -127, + -130, -94, -55, -56, -56, -55, -56, 62, 62, 62, 67, 62, 67, 62, -64, -160, -236, -236, -3, -71, - 70, 158, 71, -235, -162, -122, 73, -54, -67, -54, - -69, -160, 128, -130, -132, 276, 273, 279, -225, 87, + 70, 158, 71, -235, -162, -124, 73, -54, -67, -54, + -69, -160, 128, -132, -134, 276, 273, 279, -225, 87, 81, -207, 111, -196, 80, -225, 29, -197, -197, -200, -225, -200, 29, -182, 30, 96, -190, 250, -184, -184, -185, 31, -185, -185, -185, -192, 87, -192, 88, 88, 82, -216, -212, -213, 32, 76, -211, -225, -201, 111, - 87, 37, 82, -168, 72, -153, -167, -228, 166, 162, + 87, 37, 82, -168, -120, 73, -167, -228, 166, 162, 170, 171, 164, 83, 84, 85, 155, 29, 161, 163, - 184, 160, -228, -149, -150, 157, 23, 155, 29, 184, - -227, 73, 190, 246, 190, 157, -168, -138, -138, -46, - 102, -78, -78, -236, -236, -48, -154, -101, -119, -172, + 184, 160, -228, -151, -152, 157, 23, 155, 29, 184, + -227, 73, 190, 246, 190, 157, -168, -140, -140, -46, + 102, -78, -78, -236, -236, -48, -156, -101, -121, -172, 137, 221, 178, 219, 215, 235, 226, 248, 217, 249, -169, -172, -78, -78, -78, -78, 299, -101, 110, -52, - 108, -154, -78, -78, 39, 87, 87, 58, -67, -99, - 14, -52, 128, -105, -124, 72, -125, -88, -90, -89, - -235, -120, -236, -153, -123, -153, -72, 81, 111, -59, + 108, -156, -78, -78, 39, 87, 87, 58, -67, -99, + 14, -52, 128, -105, -126, 72, -127, -88, -90, -89, + -235, -122, -236, -155, -125, -155, -72, 81, 111, -59, -58, 72, 73, -60, 72, -58, 62, 62, -236, 155, - 155, 155, -123, -72, -54, -72, -72, 143, 273, 277, + 155, 155, -125, -72, -54, -72, -72, 143, 273, 277, 278, -206, -207, -210, -217, 171, -200, -200, 80, -183, 72, -78, -185, -185, -225, 137, 82, 81, 82, 81, - 82, 81, -147, 337, 103, -213, -212, -201, -201, 88, - 87, -67, -167, -167, -67, -167, -153, -224, 302, -226, - -225, -153, -153, -153, -67, -142, -142, -78, -236, -105, - -236, -180, -180, -180, -187, -180, 209, -180, 209, -236, - -236, 20, 20, 20, 20, -235, -42, 295, -52, 81, - 81, 87, -184, -100, 15, 17, 28, -124, 81, -236, - -236, 81, 53, 143, -236, 81, -101, -128, -52, -52, - 80, -52, -235, -235, -235, -236, -101, -72, 82, -121, - -153, -188, 246, 10, -184, 87, -184, 88, 88, 337, - 30, 77, 78, 79, 30, 74, 75, 27, -223, -222, - -154, 80, 73, -119, -184, -225, -78, -78, -78, -78, - -78, -105, 87, -78, -78, -184, -108, -113, -140, -52, - -87, 29, -90, 53, -3, -153, -88, -153, -153, -105, - -121, -121, -236, -121, -121, -163, -105, -215, 82, 81, - -191, 161, 29, 160, -81, -185, -185, 82, 82, -235, - 81, 111, -121, -67, -236, -236, -236, -236, -43, 121, - 302, -236, -236, -236, -111, 387, -114, 42, -115, 43, - 10, -88, 143, 82, -236, -236, -236, -71, 173, -153, - -181, 94, 29, 29, -219, -220, 184, -222, -207, 82, - -236, 300, 69, 303, -108, 47, 227, -116, 51, -117, - -112, 52, 17, -125, -153, -67, 87, -236, 81, -153, - -227, 58, 301, 304, -109, 49, -107, 48, -107, -115, - 17, -118, 44, 45, 87, 80, -220, 53, -224, 58, - -110, 50, 72, 99, 87, 17, 17, -121, 186, 302, - 72, 99, 87, 87, 82, 187, 303, -230, -231, 72, - -235, 304, -231, 72, 11, 10, -78, 183, -229, 174, - 169, 172, 31, -229, -236, -236, 168, 30, 96, + 82, 81, -149, 337, 103, -213, -212, -201, -201, 88, + 87, 72, -155, -167, -167, -67, -167, -155, -224, 302, + -226, -225, -155, -155, -155, -67, -144, -144, -78, -236, + -105, -236, -180, -180, -180, -187, -180, 209, -180, 209, + -236, -236, 20, 20, 20, 20, -235, -42, 295, -52, + 81, 81, 87, -184, -100, 15, 17, 28, -126, 81, + -236, -236, 81, 53, 143, -236, 81, -101, -130, -52, + -52, 80, -52, -235, -235, -235, -236, -101, -72, 82, + -123, -155, -188, 246, 10, -184, 87, -184, 88, 88, + 337, 30, 77, 78, 79, 30, 74, 75, -67, 27, + -223, -222, -156, 80, 73, -121, -184, -225, -78, -78, + -78, -78, -78, -105, 87, -78, -78, -184, -108, -113, + -142, -52, -87, 29, -90, 53, -3, -155, -88, -155, + -155, -105, -123, -123, -236, -123, -123, -163, -105, -215, + 82, 81, -191, 161, 29, 160, -81, -185, -185, 82, + 82, -235, 81, 111, -123, -67, -236, -236, -236, -236, + -43, 121, 302, -236, -236, -236, -111, 387, -114, 42, + -115, 43, 10, -88, 143, 82, -236, -236, -236, -71, + 173, -155, -181, 94, 29, 29, -219, -220, 184, -222, + -207, 82, -236, 300, 69, 303, -108, 47, 227, -116, + 51, -117, -112, 52, 17, -127, -155, -67, 87, -236, + 81, -155, -227, 58, 301, 304, -109, 49, -107, 48, + -107, -115, 17, -118, 44, 45, 87, 80, -220, 53, + -224, 58, -110, 50, 72, 99, 87, 17, 17, -123, + 186, 302, 72, 99, 87, 87, 82, 187, 303, -230, + -231, 72, -235, 304, -231, 72, 11, 10, -78, 183, + -229, 174, 169, 172, 31, -229, -236, -236, 168, 30, + 96, } var yyDef = [...]int{ @@ -3599,121 +3547,121 @@ var yyDef = [...]int{ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 638, 0, 379, 379, 379, 379, 379, 379, 379, 0, 0, - 754, 746, 0, 0, 0, 0, -2, 344, 345, 0, - 347, -2, 0, 0, 356, 1089, 1089, 0, 0, 1089, - 0, 0, 1087, 49, 50, 362, 363, 364, 1, 3, + 746, 746, 0, 0, 0, 0, -2, 344, 345, 0, + 347, -2, 0, 0, 356, 1090, 1090, 0, 0, 1090, + 0, 0, 1088, 49, 50, 362, 363, 364, 1, 3, 0, 383, 646, 0, 0, -2, 381, 0, 0, 734, - 734, 734, 0, 78, 79, 0, 0, 0, 1072, 0, - 732, 732, 732, 0, 755, 756, 759, 760, 31, 32, - 33, 887, 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, - 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, - 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, - 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, - 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, - 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, - 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, - 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, - 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, - 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, - 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, - 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, - 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, - 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, - 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, - 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, - 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, - 1066, 1067, 1068, 1069, 1070, 1071, 1073, 1074, 1075, 1076, - 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, - 0, 0, 0, 0, 0, 0, 0, 730, 0, 730, - 730, 730, 0, 290, 461, 763, 764, 1072, 0, 0, - 0, 335, 0, 338, 338, 338, 304, 0, 306, 1090, - 0, 0, 0, 313, 0, 0, 319, 335, 1090, 327, - 341, 342, 329, 324, 325, 343, 346, 0, 351, 354, - 0, 369, 0, 936, 361, 374, 375, 1089, 1089, 378, - 34, 512, 471, 0, 477, 479, 0, 514, 515, 516, - 517, 518, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 544, 545, 546, 547, 623, 624, 625, 626, - 627, 628, 629, 630, 481, 482, 620, 0, 711, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 611, 0, - 581, 581, 581, 581, 581, 581, 581, 581, 0, 0, - 0, 0, 0, 0, 0, -2, -2, 1089, 638, 45, - 0, 379, 384, 385, 662, 0, 0, 638, 1088, 0, - 0, -2, -2, 395, 401, 402, 403, 404, 380, 0, - 407, 411, 0, 0, 0, 735, 0, 0, 64, 0, - 1060, 715, -2, -2, 0, 0, 761, 762, -2, 901, - -2, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, - 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, - 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, - 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, - 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, - 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, - 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, - 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, - 886, 0, 0, 98, 99, 0, 0, 219, 903, 96, - 0, 213, 155, 1090, 0, 0, 0, 0, 0, 0, - 0, 1090, 1090, 1090, 0, 0, 0, 0, 747, 281, - 0, 0, 0, 0, 0, 0, 0, 289, 0, 291, - 1090, 335, 294, 0, 0, 1090, 1090, 1090, 0, 1090, - 1090, 301, 0, 302, 303, 0, 204, 205, 206, 307, - 1091, 1092, 1090, 1090, 332, 0, 332, 330, 331, 322, - 323, 0, 338, 316, 317, 320, 321, 352, 355, 372, - 370, 371, 373, 365, 366, 367, 368, 0, 376, 377, - 0, 0, 0, 0, 0, 475, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 499, 500, 501, 502, 503, - 504, 505, 478, 0, 492, 0, 0, 0, 534, 535, - 536, 537, 538, 539, 540, 541, 542, 0, 392, 0, - 0, 0, 638, 0, 0, 0, 0, 0, 0, 0, - 389, 0, 612, 0, 565, 573, 0, 566, 574, 567, - 575, 568, 0, 569, 576, 570, 577, 571, 572, 578, - 0, 0, 0, 392, 392, 0, 0, 35, 646, 0, - 394, 665, 0, 0, 647, 639, 640, 643, 646, 0, - 416, 405, 396, 399, 400, 382, 0, 408, 412, 0, - 414, 415, 0, 0, 62, 0, 460, 0, 418, 420, - 421, 422, 442, 0, 444, 0, 0, 0, 58, 60, - 461, 0, 1060, 721, 0, 66, 67, 0, 0, 0, - 178, 725, 726, 727, 723, 236, 0, 0, 166, 162, - 106, 107, 108, 155, 110, 155, 155, 155, 155, 175, - 175, 175, 175, 138, 139, 140, 141, 142, 0, 0, - 125, 155, 155, 155, 155, 145, 146, 147, 148, 149, - 150, 151, 152, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 157, 157, 157, 159, 159, 0, 0, 189, - 0, 643, 0, 81, 0, 1090, 0, 1090, 93, 757, - 0, 250, 252, 253, 0, 0, 0, 0, 0, 0, - 748, 0, 0, 284, 731, 0, 1090, 287, 288, 462, - 765, 766, 292, 293, 336, 337, 295, 296, 297, 298, - 299, 300, 339, 0, 207, 208, 308, 312, 335, 0, - 0, 0, 335, 314, 315, 0, 0, 353, 357, 358, - 359, 360, 513, 472, 473, 474, 476, 493, 0, 495, - 497, 483, 484, 508, 509, 510, 0, 0, 0, 0, - 506, 488, 0, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 533, 596, 597, 0, 531, - 532, 543, 0, 0, 0, 393, 621, 0, -2, 0, - 511, 710, 646, 0, 0, 0, 0, 516, 623, 0, - 516, 623, 0, 0, 0, 390, 391, 618, 615, 0, - 0, 620, 0, 582, 0, 0, 0, 0, 0, 0, - 0, 0, 662, 46, 36, 0, 663, 0, 0, 0, - 0, 642, 644, 645, 662, 0, 631, 0, 0, 469, - 0, 0, 397, 42, 413, 409, 0, 469, 0, 0, - 459, 0, 0, 0, 0, 0, 0, 449, 0, 0, - 452, 0, 0, 0, 0, 443, 0, 0, 0, 464, - 1000, 445, 0, 447, 448, -2, 0, 0, 0, 56, - 57, 0, 0, 0, 716, 65, 0, 0, 70, 71, - 717, 718, 719, 720, 0, 95, 237, 239, 242, 243, - 244, 100, 102, 103, 0, 0, 217, 1010, 1044, 211, - 211, 935, 224, 209, 210, 97, 169, 167, 0, 164, - 163, 109, 175, 175, 132, 133, 178, 0, 178, 178, - 178, 0, 0, 126, 127, 128, 129, 120, 0, 121, - 122, 123, 0, 124, 218, 0, 0, 650, 190, 191, - 0, 197, 0, 0, 214, 215, 0, 1090, 83, 733, - 84, 0, 0, 1089, 0, 0, 749, 251, 736, 737, + 734, 734, 0, 78, 79, 0, 0, 0, 0, 0, + 732, 732, 732, 754, 0, 0, 0, 0, 0, 0, + 0, 730, 0, 730, 730, 730, 0, 290, 461, 764, + 765, 31, 32, 33, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, + 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, + 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, + 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, + 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, + 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, + 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, + 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, + 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, + 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, + 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, + 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, + 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, + 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, + 1084, 1085, 1086, 1087, 0, 0, 0, 335, 0, 338, + 338, 338, 304, 0, 306, 1091, 0, 0, 0, 313, + 0, 0, 319, 335, 1091, 327, 341, 342, 329, 324, + 325, 343, 346, 0, 351, 354, 760, 761, 0, 369, + 0, 937, 361, 374, 375, 1090, 1090, 378, 34, 512, + 471, 0, 477, 479, 0, 514, 515, 516, 517, 518, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 544, 545, 546, 547, 623, 624, 625, 626, 627, 628, + 629, 630, 481, 482, 620, 0, 711, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 611, 0, 581, 581, + 581, 581, 581, 581, 581, 581, 0, 0, 0, 0, + 0, 0, 0, -2, -2, 1090, 638, 45, 0, 379, + 384, 385, 662, 0, 0, 638, 1089, 0, 0, -2, + -2, 395, 401, 402, 403, 404, 380, 0, 407, 411, + 0, 0, 0, 735, 0, 0, 64, 0, 1061, 715, + -2, -2, 0, 0, 762, 763, -2, 902, -2, 768, + 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, + 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, + 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, + 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, + 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, + 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, + 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, + 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, + 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, + 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, + 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, + 879, 880, 881, 882, 883, 884, 885, 886, 887, 0, + 0, 98, 99, 0, 0, 219, 904, 96, 0, 213, + 155, 1091, 0, 0, 0, 0, 0, 0, 755, 756, + 757, 747, 0, 1091, 1091, 1091, 0, 0, 0, 0, + 281, 0, 0, 0, 0, 0, 0, 0, 289, 0, + 291, 1091, 335, 294, 0, 0, 1091, 1091, 1091, 0, + 1091, 1091, 301, 0, 302, 303, 0, 204, 205, 206, + 307, 1092, 1093, 1091, 1091, 332, 0, 332, 330, 331, + 322, 323, 0, 338, 316, 317, 320, 321, 352, 355, + 372, 370, 371, 373, 365, 366, 367, 368, 0, 376, + 377, 0, 0, 0, 0, 0, 475, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 499, 500, 501, 502, + 503, 504, 505, 478, 0, 492, 0, 0, 0, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 0, 392, + 0, 0, 0, 638, 0, 0, 0, 0, 0, 0, + 0, 389, 0, 612, 0, 565, 573, 0, 566, 574, + 567, 575, 568, 0, 569, 576, 570, 577, 571, 572, + 578, 0, 0, 0, 392, 392, 0, 0, 35, 646, + 0, 394, 665, 0, 0, 647, 639, 640, 643, 646, + 0, 416, 405, 396, 399, 400, 382, 0, 408, 412, + 0, 414, 415, 0, 0, 62, 0, 460, 0, 418, + 420, 421, 422, 442, 0, 444, 0, 0, 0, 58, + 60, 461, 0, 1061, 721, 0, 66, 67, 0, 0, + 0, 178, 725, 726, 727, 723, 236, 0, 0, 166, + 162, 106, 107, 108, 155, 110, 155, 155, 155, 155, + 175, 175, 175, 175, 138, 139, 140, 141, 142, 0, + 0, 125, 155, 155, 155, 155, 145, 146, 147, 148, + 149, 150, 151, 152, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 157, 157, 157, 159, 159, 0, 0, + 189, 0, 643, 0, 81, 0, 1091, 0, 1091, 93, + 0, 748, 0, 250, 252, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 731, 0, 1091, 287, 288, + 462, 766, 767, 292, 293, 336, 337, 295, 296, 297, + 298, 299, 300, 339, 0, 207, 208, 308, 312, 335, + 0, 0, 0, 335, 314, 315, 0, 0, 353, 357, + 358, 359, 360, 513, 472, 473, 474, 476, 493, 0, + 495, 497, 483, 484, 508, 509, 510, 0, 0, 0, + 0, 506, 488, 0, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 533, 596, 597, 0, + 531, 532, 543, 0, 0, 0, 393, 621, 0, -2, + 0, 511, 710, 646, 0, 0, 0, 0, 516, 623, + 0, 516, 623, 0, 0, 0, 390, 391, 618, 615, + 0, 0, 620, 0, 582, 0, 0, 0, 0, 0, + 0, 0, 0, 662, 46, 36, 0, 663, 0, 0, + 0, 0, 642, 644, 645, 662, 0, 631, 0, 0, + 469, 0, 0, 397, 42, 413, 409, 0, 469, 0, + 0, 459, 0, 0, 0, 0, 0, 0, 449, 0, + 0, 452, 0, 0, 0, 0, 443, 0, 0, 0, + 464, 1001, 445, 0, 447, 448, -2, 0, 0, 0, + 56, 57, 0, 0, 0, 716, 65, 0, 0, 70, + 71, 717, 718, 719, 720, 0, 95, 237, 239, 242, + 243, 244, 100, 102, 103, 0, 0, 217, 1011, 1045, + 211, 211, 936, 224, 209, 210, 97, 169, 167, 0, + 164, 163, 109, 175, 175, 132, 133, 178, 0, 178, + 178, 178, 0, 0, 126, 127, 128, 129, 120, 0, + 121, 122, 123, 0, 124, 218, 0, 0, 650, 190, + 191, 0, 197, 0, 0, 214, 215, 0, 1091, 83, + 733, 84, 758, 1090, 0, 0, 749, 251, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 0, 85, - 255, 257, 256, 260, 0, 0, 0, 282, 1090, 286, + 255, 257, 256, 260, 0, 0, 0, 282, 1091, 286, 332, 309, 333, 334, 332, 311, 318, 349, 494, 496, 498, 485, 506, 489, 0, 486, 0, 0, 480, 548, 0, 0, 392, 0, 638, 662, 552, 553, 0, 0, @@ -3730,9 +3678,9 @@ var yyDef = [...]int{ 212, 203, 0, 171, 0, 168, 105, 165, 178, 178, 134, 0, 135, 136, 137, 0, 153, 0, 0, 0, 233, 80, 654, 653, 197, 197, 192, 193, 0, 198, - 195, 0, 156, 82, 0, 758, 245, 1089, 262, 263, + 195, 0, 156, 82, 0, 0, 245, 1090, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 1089, 0, 1089, 750, 751, 752, 753, 0, + 274, 275, 1090, 0, 1090, 750, 751, 752, 753, 0, 88, 0, 0, 0, 0, 0, 285, 335, 335, 487, 0, 507, 490, 549, 550, 0, 622, 646, 40, 0, 155, 155, 601, 155, 159, 604, 155, 606, 155, 609, @@ -3745,32 +3693,33 @@ var yyDef = [...]int{ 74, 238, 241, 0, 216, 0, 200, 201, 0, 173, 0, 170, 130, 131, 176, 177, 175, 0, 175, 0, 160, 0, 225, 234, 0, 651, 652, 0, 0, 194, - 196, 94, 246, 247, 248, 249, 0, 254, 0, 86, - 87, 0, 0, 259, 283, 305, 310, 491, 551, 662, - 554, 598, 175, 602, 603, 605, 607, 608, 610, 556, - 555, 0, 0, 0, 0, 0, 646, 0, 617, 0, - 0, 175, 687, 44, 0, 0, 0, 48, 0, 709, - 0, 0, 0, 0, 63, 0, 646, 713, 714, 436, - 0, 441, 0, 0, 0, 444, 646, 53, 189, 0, - 428, 181, 174, 0, 178, 154, 178, 0, 0, 235, - 655, 656, 657, 658, 659, 660, 661, 0, 89, 90, - 0, 0, 0, 41, 599, 600, 0, 0, 0, 0, - 591, 0, 614, 0, 0, 669, 668, 681, 685, 637, - 635, 0, 707, 0, 699, 702, 698, 701, 431, 51, - 0, 0, 466, 0, 0, 464, 52, 188, 0, 0, - 186, 0, 183, 185, 172, 143, 144, 158, 161, 0, - 0, 0, 0, 261, 557, 559, 558, 560, 0, 0, - 0, 562, 579, 580, 687, 0, 680, 683, -2, 0, - 0, 697, 0, 437, 465, 467, 468, 427, 0, 429, - 104, 0, 182, 184, 0, 277, 0, 91, 92, 85, - 561, 0, 0, 0, 674, 672, 672, 685, 0, 689, - 0, 694, 0, 705, 703, 0, 187, 276, 0, 0, - 88, 592, 0, 595, 677, 0, 670, 673, 671, 682, - 0, 688, 0, 0, 686, 0, 278, 0, 258, 593, - 666, 0, 675, 676, 684, 0, 0, 0, 0, 0, - 678, 679, 690, 692, 220, 0, 0, 221, 222, 0, - 0, 594, 223, 0, 0, 0, 0, 0, 226, 228, - 229, 0, 0, 227, 279, 280, 230, 231, 232, + 196, 0, 759, 246, 247, 248, 249, 0, 254, 0, + 86, 87, 0, 0, 259, 283, 305, 310, 491, 551, + 662, 554, 598, 175, 602, 603, 605, 607, 608, 610, + 556, 555, 0, 0, 0, 0, 0, 646, 0, 617, + 0, 0, 175, 687, 44, 0, 0, 0, 48, 0, + 709, 0, 0, 0, 0, 63, 0, 646, 713, 714, + 436, 0, 441, 0, 0, 0, 444, 646, 53, 189, + 0, 428, 181, 174, 0, 178, 154, 178, 0, 0, + 235, 655, 656, 657, 658, 659, 660, 661, 94, 0, + 89, 90, 0, 0, 0, 41, 599, 600, 0, 0, + 0, 0, 591, 0, 614, 0, 0, 669, 668, 681, + 685, 637, 635, 0, 707, 0, 699, 702, 698, 701, + 431, 51, 0, 0, 466, 0, 0, 464, 52, 188, + 0, 0, 186, 0, 183, 185, 172, 143, 144, 158, + 161, 0, 0, 0, 0, 261, 557, 559, 558, 560, + 0, 0, 0, 562, 579, 580, 687, 0, 680, 683, + -2, 0, 0, 697, 0, 437, 465, 467, 468, 427, + 0, 429, 104, 0, 182, 184, 0, 277, 0, 91, + 92, 85, 561, 0, 0, 0, 674, 672, 672, 685, + 0, 689, 0, 694, 0, 705, 703, 0, 187, 276, + 0, 0, 88, 592, 0, 595, 677, 0, 670, 673, + 671, 682, 0, 688, 0, 0, 686, 0, 278, 0, + 258, 593, 666, 0, 675, 676, 684, 0, 0, 0, + 0, 0, 678, 679, 690, 692, 220, 0, 0, 221, + 222, 0, 0, 594, 223, 0, 0, 0, 0, 0, + 226, 228, 229, 0, 0, 227, 279, 280, 230, 231, + 232, } var yyTok1 = [...]int{ @@ -4533,157 +4482,158 @@ yydefault: { yyDollar[1].createIndex.Columns = yyDollar[3].indexColumns yyDollar[1].createIndex.Options = append(yyDollar[5].indexOptions, yyDollar[6].indexOptions...) + yyDollar[1].createIndex.FullyParsed = true yyVAL.statement = yyDollar[1].createIndex } case 81: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:697 +//line sql.y:698 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 82: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:701 +//line sql.y:702 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[5].tableName.ToViewName()} } case 83: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:705 +//line sql.y:706 { yyVAL.statement = &DBDDL{Action: CreateDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean} } case 84: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:709 +//line sql.y:710 { yyVAL.statement = &DBDDL{Action: CreateDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean} } case 85: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:714 +//line sql.y:715 { yyVAL.colIdent = NewColIdent("") } case 86: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:718 +//line sql.y:719 { yyVAL.colIdent = yyDollar[2].colIdent } case 87: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:724 +//line sql.y:725 { yyVAL.colIdent = yyDollar[1].colIdent } case 88: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:729 +//line sql.y:730 { var v []VindexParam yyVAL.vindexParams = v } case 89: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:734 +//line sql.y:735 { yyVAL.vindexParams = yyDollar[2].vindexParams } case 90: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:740 +//line sql.y:741 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } case 91: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:745 +//line sql.y:746 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } case 92: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:751 +//line sql.y:752 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 93: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:757 +//line sql.y:758 { yyVAL.ddl = &DDL{Action: CreateDDLAction, Table: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } case 94: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:764 + yyDollar = yyS[yypt-8 : yypt+1] +//line sql.y:765 { - yyVAL.createIndex = &CreateIndex{Constraint: yyDollar[2].colIdent, Name: yyDollar[4].colIdent, IndexType: yyDollar[5].colIdent, Table: yyDollar[7].tableName} + yyVAL.createIndex = &CreateIndex{Constraint: yyDollar[3].str, Name: yyDollar[5].colIdent, IndexType: yyDollar[6].str, Table: yyDollar[8].tableName, OnlineHint: yyDollar[2].OnlineDDLHint} setDDL(yylex, yyVAL.createIndex) } case 95: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:772 +//line sql.y:773 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } case 96: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:779 +//line sql.y:780 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} } case 97: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:783 +//line sql.y:784 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} } case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:789 +//line sql.y:790 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } case 99: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:794 +//line sql.y:795 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddConstraint(yyDollar[1].constraintDefinition) } case 100: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:799 +//line sql.y:800 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } case 101: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:803 +//line sql.y:804 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) yyVAL.TableSpec.AddConstraint(yyDollar[4].constraintDefinition) } case 102: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:808 +//line sql.y:809 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } case 103: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:812 +//line sql.y:813 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 104: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:818 +//line sql.y:819 { yyDollar[2].columnType.NotNull = yyDollar[3].boolean yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -4695,7 +4645,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:829 +//line sql.y:830 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolean @@ -4703,74 +4653,74 @@ yydefault: } case 109: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:840 +//line sql.y:841 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literal } case 110: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:845 +//line sql.y:846 { yyVAL.columnType = yyDollar[1].columnType } case 111: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:851 +//line sql.y:852 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 112: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:855 +//line sql.y:856 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 113: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:859 +//line sql.y:860 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 114: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:863 +//line sql.y:864 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 115: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:867 +//line sql.y:868 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 116: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:871 +//line sql.y:872 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:875 +//line sql.y:876 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 118: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:879 +//line sql.y:880 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 119: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:883 +//line sql.y:884 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 120: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:889 +//line sql.y:890 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4778,7 +4728,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:895 +//line sql.y:896 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4786,7 +4736,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:901 +//line sql.y:902 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4794,7 +4744,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:907 +//line sql.y:908 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4802,7 +4752,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:913 +//line sql.y:914 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4810,206 +4760,206 @@ yydefault: } case 125: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:921 +//line sql.y:922 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 126: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:925 +//line sql.y:926 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 127: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:929 +//line sql.y:930 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 128: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:933 +//line sql.y:934 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 129: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:937 +//line sql.y:938 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 130: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:943 +//line sql.y:944 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 131: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:947 +//line sql.y:948 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 132: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:951 +//line sql.y:952 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 133: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:955 +//line sql.y:956 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:959 +//line sql.y:960 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 135: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:963 +//line sql.y:964 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 136: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:967 +//line sql.y:968 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 137: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:971 +//line sql.y:972 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 138: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:975 +//line sql.y:976 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 139: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:979 +//line sql.y:980 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:983 +//line sql.y:984 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 141: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:987 +//line sql.y:988 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 142: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:991 +//line sql.y:992 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 143: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:995 +//line sql.y:996 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 144: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1000 +//line sql.y:1001 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 145: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1006 +//line sql.y:1007 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 146: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1010 +//line sql.y:1011 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 147: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1014 +//line sql.y:1015 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 148: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1018 +//line sql.y:1019 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 149: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1022 +//line sql.y:1023 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 150: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1026 +//line sql.y:1027 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 151: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1030 +//line sql.y:1031 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 152: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1034 +//line sql.y:1035 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 153: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1040 +//line sql.y:1041 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } case 154: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1045 +//line sql.y:1046 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } case 155: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1050 +//line sql.y:1051 { yyVAL.literal = nil } case 156: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1054 +//line sql.y:1055 { yyVAL.literal = NewIntLiteral(yyDollar[2].bytes) } case 157: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1059 +//line sql.y:1060 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 158: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1063 +//line sql.y:1064 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -5018,13 +4968,13 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1071 +//line sql.y:1072 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 160: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1075 +//line sql.y:1076 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -5032,7 +4982,7 @@ yydefault: } case 161: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1081 +//line sql.y:1082 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -5041,562 +4991,562 @@ yydefault: } case 162: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1089 +//line sql.y:1090 { yyVAL.boolean = false } case 163: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1093 +//line sql.y:1094 { yyVAL.boolean = true } case 164: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1098 +//line sql.y:1099 { yyVAL.boolean = false } case 165: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1102 +//line sql.y:1103 { yyVAL.boolean = true } case 166: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1108 +//line sql.y:1109 { yyVAL.boolean = false } case 167: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1112 +//line sql.y:1113 { yyVAL.boolean = false } case 168: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1116 +//line sql.y:1117 { yyVAL.boolean = true } case 169: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1121 +//line sql.y:1122 { yyVAL.optVal = nil } case 170: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1125 +//line sql.y:1126 { yyVAL.optVal = yyDollar[2].expr } case 171: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1130 +//line sql.y:1131 { yyVAL.optVal = nil } case 172: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1134 +//line sql.y:1135 { yyVAL.optVal = yyDollar[3].expr } case 173: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1139 +//line sql.y:1140 { yyVAL.boolean = false } case 174: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1143 +//line sql.y:1144 { yyVAL.boolean = true } case 175: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1148 +//line sql.y:1149 { yyVAL.str = "" } case 176: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1152 +//line sql.y:1153 { yyVAL.str = string(yyDollar[3].colIdent.String()) } case 177: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1156 +//line sql.y:1157 { yyVAL.str = string(yyDollar[3].bytes) } case 178: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1161 +//line sql.y:1162 { yyVAL.str = "" } case 179: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1165 +//line sql.y:1166 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 180: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1169 +//line sql.y:1170 { yyVAL.str = string(yyDollar[2].bytes) } case 181: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1174 +//line sql.y:1175 { yyVAL.colKeyOpt = colKeyNone } case 182: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1178 +//line sql.y:1179 { yyVAL.colKeyOpt = colKeyPrimary } case 183: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1182 +//line sql.y:1183 { yyVAL.colKeyOpt = colKey } case 184: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1186 +//line sql.y:1187 { yyVAL.colKeyOpt = colKeyUniqueKey } case 185: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1190 +//line sql.y:1191 { yyVAL.colKeyOpt = colKeyUnique } case 186: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1195 +//line sql.y:1196 { yyVAL.literal = nil } case 187: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1199 +//line sql.y:1200 { yyVAL.literal = NewStrLiteral(yyDollar[2].bytes) } case 188: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1205 +//line sql.y:1206 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } case 189: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1210 +//line sql.y:1211 { yyVAL.indexOptions = nil } case 190: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1214 +//line sql.y:1215 { yyVAL.indexOptions = yyDollar[1].indexOptions } case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1220 +//line sql.y:1221 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 192: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1224 +//line sql.y:1225 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } case 193: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1230 +//line sql.y:1231 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} } case 194: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1234 +//line sql.y:1235 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } case 195: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1239 +//line sql.y:1240 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)} } case 196: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1243 +//line sql.y:1244 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} } case 197: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1249 +//line sql.y:1250 { yyVAL.str = "" } case 198: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1253 +//line sql.y:1254 { yyVAL.str = string(yyDollar[1].bytes) } case 199: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1259 +//line sql.y:1260 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 200: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1263 +//line sql.y:1264 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } case 201: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1267 +//line sql.y:1268 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } case 202: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1271 +//line sql.y:1272 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } case 203: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1275 +//line sql.y:1276 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1281 +//line sql.y:1282 { yyVAL.str = string(yyDollar[1].bytes) } case 205: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1285 +//line sql.y:1286 { yyVAL.str = string(yyDollar[1].bytes) } case 206: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1289 +//line sql.y:1290 { yyVAL.str = string(yyDollar[1].bytes) } case 207: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1296 +//line sql.y:1297 { yyVAL.str = string(yyDollar[1].bytes) } case 208: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1300 +//line sql.y:1301 { yyVAL.str = string(yyDollar[1].bytes) } case 209: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1306 +//line sql.y:1307 { yyVAL.str = string(yyDollar[1].bytes) } case 210: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1310 +//line sql.y:1311 { yyVAL.str = string(yyDollar[1].bytes) } case 211: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1315 +//line sql.y:1316 { yyVAL.str = "" } case 212: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1319 +//line sql.y:1320 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 213: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1325 +//line sql.y:1326 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 214: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1329 +//line sql.y:1330 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } case 215: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1335 +//line sql.y:1336 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal, Direction: yyDollar[3].orderDirection} } case 216: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1341 +//line sql.y:1342 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 217: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1345 +//line sql.y:1346 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 218: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1351 +//line sql.y:1352 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 219: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1355 +//line sql.y:1356 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 220: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1361 +//line sql.y:1362 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } case 221: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1365 +//line sql.y:1366 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } case 222: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1369 +//line sql.y:1370 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } case 223: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1373 +//line sql.y:1374 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } case 224: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1377 +//line sql.y:1378 { yyVAL.constraintInfo = yyDollar[1].constraintInfo } case 225: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1383 +//line sql.y:1384 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } case 226: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1389 +//line sql.y:1390 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 227: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1395 +//line sql.y:1396 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 228: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1401 +//line sql.y:1402 { yyVAL.ReferenceAction = Restrict } case 229: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1405 +//line sql.y:1406 { yyVAL.ReferenceAction = Cascade } case 230: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1409 +//line sql.y:1410 { yyVAL.ReferenceAction = NoAction } case 231: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1413 +//line sql.y:1414 { yyVAL.ReferenceAction = SetDefault } case 232: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1417 +//line sql.y:1418 { yyVAL.ReferenceAction = SetNull } case 233: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1422 +//line sql.y:1423 { yyVAL.boolean = true } case 234: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1426 +//line sql.y:1427 { yyVAL.boolean = true } case 235: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1430 +//line sql.y:1431 { yyVAL.boolean = false } case 236: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1435 +//line sql.y:1436 { yyVAL.str = "" } case 237: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1439 +//line sql.y:1440 { yyVAL.str = " " + string(yyDollar[1].str) } case 238: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1443 +//line sql.y:1444 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1451 +//line sql.y:1452 { yyVAL.str = yyDollar[1].str } case 240: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1455 +//line sql.y:1456 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } case 241: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1459 +//line sql.y:1460 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1465 +//line sql.y:1466 { yyVAL.str = yyDollar[1].colIdent.String() } case 243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1469 +//line sql.y:1470 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } case 244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1473 +//line sql.y:1474 { yyVAL.str = string(yyDollar[1].bytes) } case 245: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1479 +//line sql.y:1480 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 246: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1483 +//line sql.y:1484 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 247: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1487 +//line sql.y:1488 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 248: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1491 +//line sql.y:1492 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} } case 249: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1496 +//line sql.y:1497 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 250: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1501 +//line sql.y:1502 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 251: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1505 +//line sql.y:1506 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } case 252: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1509 +//line sql.y:1510 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } case 253: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1513 +//line sql.y:1514 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } case 254: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1517 +//line sql.y:1518 { yyVAL.statement = &DDL{ Action: CreateVindexDDLAction, @@ -5610,7 +5560,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1529 +//line sql.y:1530 { yyVAL.statement = &DDL{ Action: DropVindexDDLAction, @@ -5622,19 +5572,19 @@ yydefault: } case 256: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1539 +//line sql.y:1540 { yyVAL.statement = &DDL{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 257: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1543 +//line sql.y:1544 { yyVAL.statement = &DDL{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 258: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1547 +//line sql.y:1548 { yyVAL.statement = &DDL{ Action: AddColVindexDDLAction, @@ -5649,7 +5599,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1560 +//line sql.y:1561 { yyVAL.statement = &DDL{ Action: DropColVindexDDLAction, @@ -5661,13 +5611,13 @@ yydefault: } case 260: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1570 +//line sql.y:1571 { yyVAL.statement = &DDL{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } case 261: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:1574 +//line sql.y:1575 { yyVAL.statement = &DDL{ Action: AddAutoIncDDLAction, @@ -5680,49 +5630,49 @@ yydefault: } case 276: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1603 +//line sql.y:1604 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } case 277: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1609 +//line sql.y:1610 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } case 278: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1613 +//line sql.y:1614 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } case 279: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1619 +//line sql.y:1620 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } case 280: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1623 +//line sql.y:1624 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } case 281: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1629 +//line sql.y:1630 { yyVAL.statement = yyDollar[3].ddl } case 282: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1635 +//line sql.y:1636 { yyVAL.ddl = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } case 283: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1639 +//line sql.y:1640 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) @@ -5730,176 +5680,176 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1647 +//line sql.y:1648 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } case 285: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1651 +//line sql.y:1652 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[5].tableName} } case 286: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1656 +//line sql.y:1657 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: yyDollar[3].boolean} } case 287: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1660 +//line sql.y:1661 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } case 288: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1664 +//line sql.y:1665 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } case 289: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1670 +//line sql.y:1671 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[3].tableName} } case 290: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1674 +//line sql.y:1675 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[2].tableName} } case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1679 +//line sql.y:1680 { yyVAL.statement = &OtherRead{} } case 292: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1685 +//line sql.y:1686 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 293: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1690 +//line sql.y:1691 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: CharsetStr, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 294: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1695 +//line sql.y:1696 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 295: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1700 +//line sql.y:1701 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 296: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1705 +//line sql.y:1706 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 297: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1709 +//line sql.y:1710 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 298: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1713 +//line sql.y:1714 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 299: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1717 +//line sql.y:1718 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 300: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1721 +//line sql.y:1722 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 301: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1725 +//line sql.y:1726 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 302: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1730 +//line sql.y:1731 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 303: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1735 +//line sql.y:1736 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 304: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1740 +//line sql.y:1741 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 305: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1744 +//line sql.y:1745 { showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{&ShowLegacy{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } case 306: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1749 +//line sql.y:1750 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 307: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1753 +//line sql.y:1754 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 308: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1757 +//line sql.y:1758 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } case 309: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1761 +//line sql.y:1762 { yyVAL.statement = &Show{&ShowTableStatus{DatabaseName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 310: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1765 +//line sql.y:1766 { yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].str, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } case 311: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1769 +//line sql.y:1770 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5911,56 +5861,56 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1779 +//line sql.y:1780 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1783 +//line sql.y:1784 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 314: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1787 +//line sql.y:1788 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr, Scope: ImplicitScope}} } case 315: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1791 +//line sql.y:1792 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } case 316: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1796 +//line sql.y:1797 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 317: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1800 +//line sql.y:1801 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 318: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1804 +//line sql.y:1805 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } case 319: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1808 +//line sql.y:1809 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1813 +//line sql.y:1814 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now @@ -5969,806 +5919,806 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1827 +//line sql.y:1828 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1833 +//line sql.y:1834 { yyVAL.str = string(yyDollar[1].bytes) } case 323: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1837 +//line sql.y:1838 { yyVAL.str = string(yyDollar[1].bytes) } case 324: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1843 +//line sql.y:1844 { yyVAL.str = string(yyDollar[1].bytes) } case 325: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1847 +//line sql.y:1848 { yyVAL.str = string(yyDollar[1].bytes) } case 326: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1853 +//line sql.y:1854 { yyVAL.str = "" } case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1857 +//line sql.y:1858 { yyVAL.str = "extended " } case 328: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1863 +//line sql.y:1864 { yyVAL.str = "" } case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1867 +//line sql.y:1868 { yyVAL.str = "full " } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1873 +//line sql.y:1874 { yyVAL.str = string(yyDollar[1].bytes) } case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1877 +//line sql.y:1878 { yyVAL.str = string(yyDollar[1].bytes) } case 332: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1883 +//line sql.y:1884 { yyVAL.str = "" } case 333: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1887 +//line sql.y:1888 { yyVAL.str = yyDollar[2].tableIdent.v } case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1891 +//line sql.y:1892 { yyVAL.str = yyDollar[2].tableIdent.v } case 335: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1897 +//line sql.y:1898 { yyVAL.showFilter = nil } case 336: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1901 +//line sql.y:1902 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 337: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1905 +//line sql.y:1906 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 338: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1911 +//line sql.y:1912 { yyVAL.showFilter = nil } case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1915 +//line sql.y:1916 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 340: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1921 +//line sql.y:1922 { yyVAL.scope = ImplicitScope } case 341: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1925 +//line sql.y:1926 { yyVAL.scope = SessionScope } case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1929 +//line sql.y:1930 { yyVAL.scope = GlobalScope } case 343: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1935 +//line sql.y:1936 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1939 +//line sql.y:1940 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 345: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1945 +//line sql.y:1946 { yyVAL.statement = &Begin{} } case 346: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1949 +//line sql.y:1950 { yyVAL.statement = &Begin{} } case 347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1955 +//line sql.y:1956 { yyVAL.statement = &Commit{} } case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1961 +//line sql.y:1962 { yyVAL.statement = &Rollback{} } case 349: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1965 +//line sql.y:1966 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } case 350: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1970 +//line sql.y:1971 { yyVAL.empty = struct{}{} } case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1972 +//line sql.y:1973 { yyVAL.empty = struct{}{} } case 352: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1975 +//line sql.y:1976 { yyVAL.empty = struct{}{} } case 353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1977 +//line sql.y:1978 { yyVAL.empty = struct{}{} } case 354: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1982 +//line sql.y:1983 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } case 355: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1988 +//line sql.y:1989 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } case 356: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1993 +//line sql.y:1994 { yyVAL.explainType = EmptyType } case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1997 +//line sql.y:1998 { yyVAL.explainType = JSONType } case 358: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2001 +//line sql.y:2002 { yyVAL.explainType = TreeType } case 359: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2005 +//line sql.y:2006 { yyVAL.explainType = VitessType } case 360: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2009 +//line sql.y:2010 { yyVAL.explainType = TraditionalType } case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2013 +//line sql.y:2014 { yyVAL.explainType = AnalyzeType } case 362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2019 +//line sql.y:2020 { yyVAL.bytes = yyDollar[1].bytes } case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2023 +//line sql.y:2024 { yyVAL.bytes = yyDollar[1].bytes } case 364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2027 +//line sql.y:2028 { yyVAL.bytes = yyDollar[1].bytes } case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2033 +//line sql.y:2034 { yyVAL.statement = yyDollar[1].selStmt } case 366: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2037 +//line sql.y:2038 { yyVAL.statement = yyDollar[1].statement } case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2041 +//line sql.y:2042 { yyVAL.statement = yyDollar[1].statement } case 368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2045 +//line sql.y:2046 { yyVAL.statement = yyDollar[1].statement } case 369: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2050 +//line sql.y:2051 { yyVAL.str = "" } case 370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2054 +//line sql.y:2055 { yyVAL.str = "" } case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2058 +//line sql.y:2059 { yyVAL.str = "" } case 372: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2064 +//line sql.y:2065 { yyVAL.statement = &OtherRead{} } case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2068 +//line sql.y:2069 { yyVAL.statement = &Explain{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } case 374: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2074 +//line sql.y:2075 { yyVAL.statement = &OtherAdmin{} } case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2078 +//line sql.y:2079 { yyVAL.statement = &OtherAdmin{} } case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2082 +//line sql.y:2083 { yyVAL.statement = &OtherAdmin{} } case 377: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2086 +//line sql.y:2087 { yyVAL.statement = &OtherAdmin{} } case 378: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2092 +//line sql.y:2093 { yyVAL.statement = &DDL{Action: FlushDDLAction} } case 379: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2096 +//line sql.y:2097 { setAllowComments(yylex, true) } case 380: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2100 +//line sql.y:2101 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } case 381: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2106 +//line sql.y:2107 { yyVAL.bytes2 = nil } case 382: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2110 +//line sql.y:2111 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2116 +//line sql.y:2117 { yyVAL.boolean = true } case 384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2120 +//line sql.y:2121 { yyVAL.boolean = false } case 385: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2124 +//line sql.y:2125 { yyVAL.boolean = true } case 386: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2129 +//line sql.y:2130 { yyVAL.str = "" } case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2133 +//line sql.y:2134 { yyVAL.str = SQLNoCacheStr } case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2137 +//line sql.y:2138 { yyVAL.str = SQLCacheStr } case 389: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2142 +//line sql.y:2143 { yyVAL.boolean = false } case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2146 +//line sql.y:2147 { yyVAL.boolean = true } case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2150 +//line sql.y:2151 { yyVAL.boolean = true } case 392: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2155 +//line sql.y:2156 { yyVAL.selectExprs = nil } case 393: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2159 +//line sql.y:2160 { yyVAL.selectExprs = yyDollar[1].selectExprs } case 394: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2164 +//line sql.y:2165 { yyVAL.strs = nil } case 395: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2168 +//line sql.y:2169 { yyVAL.strs = []string{yyDollar[1].str} } case 396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2172 +//line sql.y:2173 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } case 397: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2176 +//line sql.y:2177 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } case 398: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2180 +//line sql.y:2181 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2186 +//line sql.y:2187 { yyVAL.str = SQLNoCacheStr } case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2190 +//line sql.y:2191 { yyVAL.str = SQLCacheStr } case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2194 +//line sql.y:2195 { yyVAL.str = DistinctStr } case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2198 +//line sql.y:2199 { yyVAL.str = DistinctStr } case 403: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2202 +//line sql.y:2203 { yyVAL.str = StraightJoinHint } case 404: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2206 +//line sql.y:2207 { yyVAL.str = SQLCalcFoundRowsStr } case 405: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2212 +//line sql.y:2213 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 406: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2216 +//line sql.y:2217 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2222 +//line sql.y:2223 { yyVAL.selectExpr = &StarExpr{} } case 408: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2226 +//line sql.y:2227 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } case 409: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2230 +//line sql.y:2231 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } case 410: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2234 +//line sql.y:2235 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } case 411: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2239 +//line sql.y:2240 { yyVAL.colIdent = ColIdent{} } case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2243 +//line sql.y:2244 { yyVAL.colIdent = yyDollar[1].colIdent } case 413: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2247 +//line sql.y:2248 { yyVAL.colIdent = yyDollar[2].colIdent } case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2254 +//line sql.y:2255 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 416: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2259 +//line sql.y:2260 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } case 417: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2263 +//line sql.y:2264 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2269 +//line sql.y:2270 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 419: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2273 +//line sql.y:2274 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2283 +//line sql.y:2284 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2287 +//line sql.y:2288 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } case 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2291 +//line sql.y:2292 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } case 425: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2297 +//line sql.y:2298 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2303 +//line sql.y:2304 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } case 427: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2307 +//line sql.y:2308 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } case 428: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2313 +//line sql.y:2314 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 429: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2317 +//line sql.y:2318 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 430: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2323 +//line sql.y:2324 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } case 431: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2327 +//line sql.y:2328 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } case 432: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2340 +//line sql.y:2341 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 433: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2344 +//line sql.y:2345 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 434: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2348 +//line sql.y:2349 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 435: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2352 +//line sql.y:2353 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } case 436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2358 +//line sql.y:2359 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 437: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2360 +//line sql.y:2361 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } case 438: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2364 +//line sql.y:2365 { yyVAL.joinCondition = JoinCondition{} } case 439: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2366 +//line sql.y:2367 { yyVAL.joinCondition = yyDollar[1].joinCondition } case 440: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2370 +//line sql.y:2371 { yyVAL.joinCondition = JoinCondition{} } case 441: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2372 +//line sql.y:2373 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 442: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2375 +//line sql.y:2376 { yyVAL.empty = struct{}{} } case 443: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2377 +//line sql.y:2378 { yyVAL.empty = struct{}{} } case 444: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2380 +//line sql.y:2381 { yyVAL.tableIdent = NewTableIdent("") } case 445: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2384 +//line sql.y:2385 { yyVAL.tableIdent = yyDollar[1].tableIdent } case 446: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2388 +//line sql.y:2389 { yyVAL.tableIdent = yyDollar[2].tableIdent } case 448: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2395 +//line sql.y:2396 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 449: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2401 +//line sql.y:2402 { yyVAL.joinType = NormalJoinType } case 450: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2405 +//line sql.y:2406 { yyVAL.joinType = NormalJoinType } case 451: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2409 +//line sql.y:2410 { yyVAL.joinType = NormalJoinType } case 452: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2415 +//line sql.y:2416 { yyVAL.joinType = StraightJoinType } case 453: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2421 +//line sql.y:2422 { yyVAL.joinType = LeftJoinType } case 454: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2425 +//line sql.y:2426 { yyVAL.joinType = LeftJoinType } case 455: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2429 +//line sql.y:2430 { yyVAL.joinType = RightJoinType } case 456: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2433 +//line sql.y:2434 { yyVAL.joinType = RightJoinType } case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2439 +//line sql.y:2440 { yyVAL.joinType = NaturalJoinType } case 458: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2443 +//line sql.y:2444 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -6778,487 +6728,487 @@ yydefault: } case 459: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2453 +//line sql.y:2454 { yyVAL.tableName = yyDollar[2].tableName } case 460: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2457 +//line sql.y:2458 { yyVAL.tableName = yyDollar[1].tableName } case 461: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2463 +//line sql.y:2464 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 462: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2467 +//line sql.y:2468 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } case 463: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2473 +//line sql.y:2474 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 464: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2478 +//line sql.y:2479 { yyVAL.indexHints = nil } case 465: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2482 +//line sql.y:2483 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } case 466: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2486 +//line sql.y:2487 { yyVAL.indexHints = &IndexHints{Type: UseOp} } case 467: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2490 +//line sql.y:2491 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } case 468: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2494 +//line sql.y:2495 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } case 469: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2499 +//line sql.y:2500 { yyVAL.expr = nil } case 470: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2503 +//line sql.y:2504 { yyVAL.expr = yyDollar[2].expr } case 471: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2509 +//line sql.y:2510 { yyVAL.expr = yyDollar[1].expr } case 472: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2513 +//line sql.y:2514 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 473: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2517 +//line sql.y:2518 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 474: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2521 +//line sql.y:2522 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2525 +//line sql.y:2526 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } case 476: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2529 +//line sql.y:2530 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } case 477: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2533 +//line sql.y:2534 { yyVAL.expr = yyDollar[1].expr } case 478: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2537 +//line sql.y:2538 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } case 479: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2543 +//line sql.y:2544 { yyVAL.str = "" } case 480: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2547 +//line sql.y:2548 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 481: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2553 +//line sql.y:2554 { yyVAL.boolVal = BoolVal(true) } case 482: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2557 +//line sql.y:2558 { yyVAL.boolVal = BoolVal(false) } case 483: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2563 +//line sql.y:2564 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } case 484: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2567 +//line sql.y:2568 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } case 485: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2571 +//line sql.y:2572 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } case 486: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2575 +//line sql.y:2576 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } case 487: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2579 +//line sql.y:2580 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } case 488: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2583 +//line sql.y:2584 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } case 489: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2587 +//line sql.y:2588 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } case 490: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2591 +//line sql.y:2592 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } case 491: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2595 +//line sql.y:2596 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } case 492: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2599 +//line sql.y:2600 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 493: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2605 +//line sql.y:2606 { yyVAL.isExprOperator = IsNullOp } case 494: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2609 +//line sql.y:2610 { yyVAL.isExprOperator = IsNotNullOp } case 495: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2613 +//line sql.y:2614 { yyVAL.isExprOperator = IsTrueOp } case 496: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2617 +//line sql.y:2618 { yyVAL.isExprOperator = IsNotTrueOp } case 497: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2621 +//line sql.y:2622 { yyVAL.isExprOperator = IsFalseOp } case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2625 +//line sql.y:2626 { yyVAL.isExprOperator = IsNotFalseOp } case 499: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2631 +//line sql.y:2632 { yyVAL.comparisonExprOperator = EqualOp } case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2635 +//line sql.y:2636 { yyVAL.comparisonExprOperator = LessThanOp } case 501: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2639 +//line sql.y:2640 { yyVAL.comparisonExprOperator = GreaterThanOp } case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2643 +//line sql.y:2644 { yyVAL.comparisonExprOperator = LessEqualOp } case 503: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2647 +//line sql.y:2648 { yyVAL.comparisonExprOperator = GreaterEqualOp } case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2651 +//line sql.y:2652 { yyVAL.comparisonExprOperator = NotEqualOp } case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2655 +//line sql.y:2656 { yyVAL.comparisonExprOperator = NullSafeEqualOp } case 506: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2660 +//line sql.y:2661 { yyVAL.expr = nil } case 507: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2664 +//line sql.y:2665 { yyVAL.expr = yyDollar[2].expr } case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2670 +//line sql.y:2671 { yyVAL.colTuple = yyDollar[1].valTuple } case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2674 +//line sql.y:2675 { yyVAL.colTuple = yyDollar[1].subquery } case 510: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2678 +//line sql.y:2679 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2684 +//line sql.y:2685 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2690 +//line sql.y:2691 { yyVAL.exprs = Exprs{yyDollar[1].expr} } case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2694 +//line sql.y:2695 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2700 +//line sql.y:2701 { yyVAL.expr = yyDollar[1].expr } case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2704 +//line sql.y:2705 { yyVAL.expr = yyDollar[1].boolVal } case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2708 +//line sql.y:2709 { yyVAL.expr = yyDollar[1].colName } case 517: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2712 +//line sql.y:2713 { yyVAL.expr = yyDollar[1].expr } case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2716 +//line sql.y:2717 { yyVAL.expr = yyDollar[1].subquery } case 519: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2720 +//line sql.y:2721 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } case 520: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2724 +//line sql.y:2725 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } case 521: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2728 +//line sql.y:2729 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } case 522: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2732 +//line sql.y:2733 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } case 523: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2736 +//line sql.y:2737 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } case 524: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2740 +//line sql.y:2741 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } case 525: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2744 +//line sql.y:2745 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } case 526: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2748 +//line sql.y:2749 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } case 527: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2752 +//line sql.y:2753 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 528: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2756 +//line sql.y:2757 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 529: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2760 +//line sql.y:2761 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } case 530: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2764 +//line sql.y:2765 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } case 531: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2768 +//line sql.y:2769 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 532: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2772 +//line sql.y:2773 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 533: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2776 +//line sql.y:2777 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2780 +//line sql.y:2781 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } case 535: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2784 +//line sql.y:2785 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2788 +//line sql.y:2789 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2792 +//line sql.y:2793 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2796 +//line sql.y:2797 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2800 +//line sql.y:2801 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -7268,7 +7218,7 @@ yydefault: } case 540: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2808 +//line sql.y:2809 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -7284,19 +7234,19 @@ yydefault: } case 541: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2822 +//line sql.y:2823 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } case 542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2826 +//line sql.y:2827 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } case 543: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2830 +//line sql.y:2831 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -7306,325 +7256,325 @@ yydefault: } case 548: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2848 +//line sql.y:2849 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 549: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2852 +//line sql.y:2853 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 550: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2856 +//line sql.y:2857 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 551: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2860 +//line sql.y:2861 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 552: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2870 +//line sql.y:2871 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 553: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2874 +//line sql.y:2875 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 554: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2878 +//line sql.y:2879 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 555: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2882 +//line sql.y:2883 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 556: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2886 +//line sql.y:2887 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 557: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2890 +//line sql.y:2891 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 558: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2894 +//line sql.y:2895 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 559: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2898 +//line sql.y:2899 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 560: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2902 +//line sql.y:2903 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 561: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2906 +//line sql.y:2907 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } case 562: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2910 +//line sql.y:2911 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } case 563: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2914 +//line sql.y:2915 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 564: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2918 +//line sql.y:2919 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2928 +//line sql.y:2929 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2932 +//line sql.y:2933 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 567: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2936 +//line sql.y:2937 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2941 +//line sql.y:2942 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2946 +//line sql.y:2947 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 570: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2951 +//line sql.y:2952 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2957 +//line sql.y:2958 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 572: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2962 +//line sql.y:2963 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 573: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2967 +//line sql.y:2968 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 574: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2971 +//line sql.y:2972 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 575: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2975 +//line sql.y:2976 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 576: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2980 +//line sql.y:2981 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 577: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2985 +//line sql.y:2986 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 578: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2990 +//line sql.y:2991 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 579: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2994 +//line sql.y:2995 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 580: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2998 +//line sql.y:2999 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3008 +//line sql.y:3009 { yyVAL.expr = yyDollar[2].expr } case 584: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3018 +//line sql.y:3019 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 585: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3022 +//line sql.y:3023 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 586: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3026 +//line sql.y:3027 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 587: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3030 +//line sql.y:3031 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 588: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3034 +//line sql.y:3035 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 589: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3038 +//line sql.y:3039 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 590: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3042 +//line sql.y:3043 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 591: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3048 +//line sql.y:3049 { yyVAL.matchExprOption = NoOption } case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3052 +//line sql.y:3053 { yyVAL.matchExprOption = BooleanModeOpt } case 593: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3056 +//line sql.y:3057 { yyVAL.matchExprOption = NaturalLanguageModeOpt } case 594: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3060 +//line sql.y:3061 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } case 595: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3064 +//line sql.y:3065 { yyVAL.matchExprOption = QueryExpansionOpt } case 596: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3070 +//line sql.y:3071 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3074 +//line sql.y:3075 { yyVAL.str = string(yyDollar[1].bytes) } case 598: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3080 +//line sql.y:3081 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 599: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3084 +//line sql.y:3085 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3088 +//line sql.y:3089 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3092 +//line sql.y:3093 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 602: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3096 +//line sql.y:3097 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 603: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3100 +//line sql.y:3101 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length @@ -7632,169 +7582,169 @@ yydefault: } case 604: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3106 +//line sql.y:3107 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 605: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3110 +//line sql.y:3111 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3114 +//line sql.y:3115 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3118 +//line sql.y:3119 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 608: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3122 +//line sql.y:3123 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3126 +//line sql.y:3127 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 610: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3130 +//line sql.y:3131 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 611: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3135 +//line sql.y:3136 { yyVAL.expr = nil } case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3139 +//line sql.y:3140 { yyVAL.expr = yyDollar[1].expr } case 613: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3144 +//line sql.y:3145 { yyVAL.str = string("") } case 614: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3148 +//line sql.y:3149 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3154 +//line sql.y:3155 { yyVAL.whens = []*When{yyDollar[1].when} } case 616: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3158 +//line sql.y:3159 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } case 617: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3164 +//line sql.y:3165 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } case 618: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3169 +//line sql.y:3170 { yyVAL.expr = nil } case 619: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3173 +//line sql.y:3174 { yyVAL.expr = yyDollar[2].expr } case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3179 +//line sql.y:3180 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } case 621: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3183 +//line sql.y:3184 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } case 622: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3187 +//line sql.y:3188 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3193 +//line sql.y:3194 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3197 +//line sql.y:3198 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3201 +//line sql.y:3202 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3205 +//line sql.y:3206 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3209 +//line sql.y:3210 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3213 +//line sql.y:3214 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3217 +//line sql.y:3218 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 630: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3221 +//line sql.y:3222 { yyVAL.expr = &NullVal{} } case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3227 +//line sql.y:3228 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7805,481 +7755,481 @@ yydefault: } case 632: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3236 +//line sql.y:3237 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 633: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3240 +//line sql.y:3241 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 634: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3245 +//line sql.y:3246 { yyVAL.exprs = nil } case 635: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3249 +//line sql.y:3250 { yyVAL.exprs = yyDollar[3].exprs } case 636: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3254 +//line sql.y:3255 { yyVAL.expr = nil } case 637: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3258 +//line sql.y:3259 { yyVAL.expr = yyDollar[2].expr } case 638: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3263 +//line sql.y:3264 { yyVAL.orderBy = nil } case 639: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3267 +//line sql.y:3268 { yyVAL.orderBy = yyDollar[3].orderBy } case 640: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3273 +//line sql.y:3274 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } case 641: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3277 +//line sql.y:3278 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } case 642: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3283 +//line sql.y:3284 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } case 643: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3288 +//line sql.y:3289 { yyVAL.orderDirection = AscOrder } case 644: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3292 +//line sql.y:3293 { yyVAL.orderDirection = AscOrder } case 645: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3296 +//line sql.y:3297 { yyVAL.orderDirection = DescOrder } case 646: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3301 +//line sql.y:3302 { yyVAL.limit = nil } case 647: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3305 +//line sql.y:3306 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } case 648: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3309 +//line sql.y:3310 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } case 649: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3313 +//line sql.y:3314 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } case 650: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3318 +//line sql.y:3319 { yyVAL.indexOptions = nil } case 651: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3322 +//line sql.y:3323 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption} } case 652: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3326 +//line sql.y:3327 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption} } case 653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3330 +//line sql.y:3331 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 654: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3334 +//line sql.y:3335 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 655: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3341 +//line sql.y:3342 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 656: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3345 +//line sql.y:3346 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 657: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3349 +//line sql.y:3350 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 658: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3353 +//line sql.y:3354 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 659: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3359 +//line sql.y:3360 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 660: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3363 +//line sql.y:3364 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 661: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3367 +//line sql.y:3368 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 662: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3372 +//line sql.y:3373 { yyVAL.lock = NoLock } case 663: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3376 +//line sql.y:3377 { yyVAL.lock = ForUpdateLock } case 664: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3380 +//line sql.y:3381 { yyVAL.lock = ShareModeLock } case 665: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3385 +//line sql.y:3386 { yyVAL.selectInto = nil } case 666: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3389 +//line sql.y:3390 { yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } case 667: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3393 +//line sql.y:3394 { yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } case 668: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3397 +//line sql.y:3398 { yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } case 669: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3402 +//line sql.y:3403 { yyVAL.str = "" } case 670: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3406 +//line sql.y:3407 { yyVAL.str = " format csv" + yyDollar[3].str } case 671: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3410 +//line sql.y:3411 { yyVAL.str = " format text" + yyDollar[3].str } case 672: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3415 +//line sql.y:3416 { yyVAL.str = "" } case 673: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3419 +//line sql.y:3420 { yyVAL.str = " header" } case 674: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3424 +//line sql.y:3425 { yyVAL.str = "" } case 675: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3428 +//line sql.y:3429 { yyVAL.str = " manifest on" } case 676: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3432 +//line sql.y:3433 { yyVAL.str = " manifest off" } case 677: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3437 +//line sql.y:3438 { yyVAL.str = "" } case 678: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3441 +//line sql.y:3442 { yyVAL.str = " overwrite on" } case 679: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3445 +//line sql.y:3446 { yyVAL.str = " overwrite off" } case 680: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3451 +//line sql.y:3452 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } case 681: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3456 +//line sql.y:3457 { yyVAL.str = "" } case 682: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3460 +//line sql.y:3461 { yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str } case 683: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3465 +//line sql.y:3466 { yyVAL.str = "" } case 684: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3469 +//line sql.y:3470 { yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" } case 685: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3474 +//line sql.y:3475 { yyVAL.str = "" } case 686: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3478 +//line sql.y:3479 { yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" } case 687: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3483 +//line sql.y:3484 { yyVAL.str = "" } case 688: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3487 +//line sql.y:3488 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str } case 689: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3492 +//line sql.y:3493 { yyVAL.str = "" } case 690: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3496 +//line sql.y:3497 { yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" } case 691: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3501 +//line sql.y:3502 { yyVAL.str = "" } case 692: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3505 +//line sql.y:3506 { yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" } case 693: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3510 +//line sql.y:3511 { yyVAL.str = "" } case 694: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3514 +//line sql.y:3515 { yyVAL.str = " optionally" } case 695: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3527 +//line sql.y:3528 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } case 696: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3531 +//line sql.y:3532 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } case 697: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3535 +//line sql.y:3536 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } case 698: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3539 +//line sql.y:3540 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } case 699: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3543 +//line sql.y:3544 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } case 700: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3549 +//line sql.y:3550 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 701: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3553 +//line sql.y:3554 { yyVAL.columns = Columns{yyDollar[3].colIdent} } case 702: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3557 +//line sql.y:3558 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 703: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3561 +//line sql.y:3562 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } case 704: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3566 +//line sql.y:3567 { yyVAL.updateExprs = nil } case 705: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3570 +//line sql.y:3571 { yyVAL.updateExprs = yyDollar[5].updateExprs } case 706: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3576 +//line sql.y:3577 { yyVAL.values = Values{yyDollar[1].valTuple} } case 707: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3580 +//line sql.y:3581 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } case 708: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3586 +//line sql.y:3587 { yyVAL.valTuple = yyDollar[1].valTuple } case 709: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3590 +//line sql.y:3591 { yyVAL.valTuple = ValTuple{} } case 710: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3596 +//line sql.y:3597 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } case 711: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3602 +//line sql.y:3603 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -8289,194 +8239,194 @@ yydefault: } case 712: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3612 +//line sql.y:3613 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } case 713: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3616 +//line sql.y:3617 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } case 714: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3622 +//line sql.y:3623 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } case 715: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3628 +//line sql.y:3629 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 716: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3632 +//line sql.y:3633 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } case 717: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3638 +//line sql.y:3639 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } case 718: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3642 +//line sql.y:3643 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } case 719: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3646 +//line sql.y:3647 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } case 720: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3650 +//line sql.y:3651 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } case 721: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3654 +//line sql.y:3655 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } case 723: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3662 +//line sql.y:3663 { yyVAL.bytes = []byte("charset") } case 725: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3669 +//line sql.y:3670 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } case 726: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3673 +//line sql.y:3674 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 727: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3677 +//line sql.y:3678 { yyVAL.expr = &Default{} } case 730: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3686 +//line sql.y:3687 { yyVAL.boolean = false } case 731: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3688 +//line sql.y:3689 { yyVAL.boolean = true } case 732: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3691 +//line sql.y:3692 { yyVAL.boolean = false } case 733: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3693 +//line sql.y:3694 { yyVAL.boolean = true } case 734: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3696 +//line sql.y:3697 { yyVAL.ignore = false } case 735: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3698 +//line sql.y:3699 { yyVAL.ignore = true } case 736: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3702 +//line sql.y:3703 { yyVAL.empty = struct{}{} } case 737: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3704 +//line sql.y:3705 { yyVAL.empty = struct{}{} } case 738: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3706 +//line sql.y:3707 { yyVAL.empty = struct{}{} } case 739: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3708 +//line sql.y:3709 { yyVAL.empty = struct{}{} } case 740: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3710 +//line sql.y:3711 { yyVAL.empty = struct{}{} } case 741: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3712 +//line sql.y:3713 { yyVAL.empty = struct{}{} } case 742: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3714 +//line sql.y:3715 { yyVAL.empty = struct{}{} } case 743: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3716 +//line sql.y:3717 { yyVAL.empty = struct{}{} } case 744: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3718 +//line sql.y:3719 { yyVAL.empty = struct{}{} } case 745: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3720 +//line sql.y:3721 { yyVAL.empty = struct{}{} } case 746: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3724 +//line sql.y:3725 { yyVAL.OnlineDDLHint = &OnlineDDLHint{} } case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3728 +//line sql.y:3729 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), @@ -8484,7 +8434,7 @@ yydefault: } case 748: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3734 +//line sql.y:3735 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), @@ -8493,136 +8443,142 @@ yydefault: } case 749: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3742 +//line sql.y:3743 { yyVAL.empty = struct{}{} } case 750: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3744 +//line sql.y:3745 { yyVAL.empty = struct{}{} } case 751: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3746 +//line sql.y:3747 { yyVAL.empty = struct{}{} } case 752: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3750 +//line sql.y:3751 { yyVAL.empty = struct{}{} } case 753: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3752 +//line sql.y:3753 { yyVAL.empty = struct{}{} } case 754: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3755 +//line sql.y:3756 { - yyVAL.colIdent = ColIdent{} + yyVAL.str = "" } case 755: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3757 +//line sql.y:3758 { - yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + yyVAL.str = string(yyDollar[1].bytes) } case 756: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3759 +//line sql.y:3760 { - yyVAL.colIdent = yyDollar[1].colIdent + yyVAL.str = string(yyDollar[1].bytes) } case 757: - yyDollar = yyS[yypt-0 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3762 { - yyVAL.colIdent = ColIdent{} + yyVAL.str = string(yyDollar[1].bytes) } case 758: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3764 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3765 { - yyVAL.colIdent = yyDollar[2].colIdent + yyVAL.str = "" } case 759: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3767 + { + yyVAL.str = yyDollar[2].colIdent.val + } + case 760: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3768 +//line sql.y:3771 { yyVAL.colIdent = yyDollar[1].colIdent } - case 760: + case 761: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3772 +//line sql.y:3775 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 762: + case 763: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3779 +//line sql.y:3782 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 763: + case 764: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3785 +//line sql.y:3788 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 764: + case 765: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3789 +//line sql.y:3792 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 766: + case 767: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3796 +//line sql.y:3799 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1087: + case 1088: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4142 +//line sql.y:4145 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1088: + case 1089: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4151 +//line sql.y:4154 { decNesting(yylex) } - case 1089: + case 1090: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4156 +//line sql.y:4159 { skipToEnd(yylex) } - case 1090: + case 1091: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4161 +//line sql.y:4164 { skipToEnd(yylex) } - case 1091: + case 1092: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4165 +//line sql.y:4168 { skipToEnd(yylex) } - case 1092: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4169 +//line sql.y:4172 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 65b6d668f40..773425d1d4a 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -292,7 +292,7 @@ func skipToEnd(yylex interface{}) { %type limit_opt %type into_option %type header_opt export_options manifest_opt overwrite_opt format_opt optionally_opt -%type fields_opt lines_opt terminated_by_opt starting_by_opt enclosed_by_opt escaped_by_opt +%type fields_opt lines_opt terminated_by_opt starting_by_opt enclosed_by_opt escaped_by_opt constraint_opt using_opt %type lock_opt %type ins_column_list column_list %type opt_partition_clause partition_list @@ -314,7 +314,7 @@ func skipToEnd(yylex interface{}) { %type exists_opt not_exists_opt null_opt enforced_opt %type non_add_drop_or_rename_operation to_opt index_opt %type reserved_keyword non_reserved_keyword -%type sql_id reserved_sql_id col_alias as_ci_opt using_opt constraint_opt +%type sql_id reserved_sql_id col_alias as_ci_opt %type charset_value %type table_id reserved_table_id table_alias as_opt_id %type as_opt work_opt savepoint_opt @@ -691,6 +691,7 @@ create_statement: { $1.Columns = $3 $1.Options = append($5,$6...) + $1.FullyParsed = true $$ = $1 } | CREATE VIEW table_name ddl_skip_to_end @@ -760,9 +761,9 @@ create_table_prefix: } create_index_prefix: - CREATE constraint_opt INDEX id_or_var using_opt ON table_name + CREATE online_hint_opt constraint_opt INDEX id_or_var using_opt ON table_name { - $$ = &CreateIndex{Constraint: $2, Name: $4, IndexType: $5, Table: $7} + $$ = &CreateIndex{Constraint: $3, Name: $5, IndexType: $6, Table: $8, OnlineHint: $2} setDDL(yylex, $$) } @@ -3752,16 +3753,18 @@ index_opt: { $$ = struct{}{} } constraint_opt: - { $$ = ColIdent{} } + { $$ = "" } | UNIQUE - { $$ = NewColIdent(string($1)) } -| sql_id - { $$ = $1 } + { $$ = string($1) } +| SPATIAL + { $$ = string($1) } +| FULLTEXT + { $$ = string($1) } using_opt: - { $$ = ColIdent{} } + { $$ = "" } | USING sql_id - { $$ = $2 } + { $$ = $2.val } sql_id: id_or_var From 1eedd464d15c5f0a9b5d08846750ff6ee468a1f4 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Fri, 13 Nov 2020 14:43:51 +0530 Subject: [PATCH 04/11] Converted DDL into DDLStatements in builder Signed-off-by: GuptaManan100 --- go/vt/sqlparser/ast.go | 11 ++++++++ go/vt/vtgate/engine/online_ddl.go | 6 ++-- go/vt/vtgate/planbuilder/builder.go | 4 +-- go/vt/vtgate/planbuilder/ddl.go | 28 +++++++++++-------- .../testdata/vindex_func_cases.txt | 2 +- .../vstreamer/planbuilder_test.go | 2 +- 6 files changed, 35 insertions(+), 18 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 9478d45b14e..cd688e8d951 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -59,6 +59,7 @@ type ( iDDLStatement() GetOnlineHint() *OnlineDDLHint IsFullyParsed() bool + GetTable() TableName Statement } @@ -387,6 +388,16 @@ func (node *CreateIndex) GetOnlineHint() *OnlineDDLHint { return node.OnlineHint } +// GetTable implements the DDLStatement interface +func (node *CreateIndex) GetTable() TableName { + return node.Table +} + +// GetTable implements the DDLStatement interface +func (node *DDL) GetTable() TableName { + return node.Table +} + // ParenSelect can actually not be a top level statement, // but we have to allow it because it's a requirement // of SelectStatement. diff --git a/go/vt/vtgate/engine/online_ddl.go b/go/vt/vtgate/engine/online_ddl.go index c2e5aa0bad0..d8a0dce103c 100644 --- a/go/vt/vtgate/engine/online_ddl.go +++ b/go/vt/vtgate/engine/online_ddl.go @@ -32,7 +32,7 @@ var _ Primitive = (*OnlineDDL)(nil) //OnlineDDL represents the instructions to perform an online schema change via vtctld type OnlineDDL struct { Keyspace *vindexes.Keyspace - DDL *sqlparser.DDL + DDL sqlparser.DDLStatement SQL string Strategy sqlparser.DDLStrategy Options string @@ -47,7 +47,7 @@ func (v *OnlineDDL) description() PrimitiveDescription { OperatorType: "OnlineDDL", Keyspace: v.Keyspace, Other: map[string]interface{}{ - "query": sqlparser.String(v.DDL), + "query": v.SQL, }, } } @@ -64,7 +64,7 @@ func (v *OnlineDDL) GetKeyspaceName() string { //GetTableName implements the Primitive interface func (v *OnlineDDL) GetTableName() string { - return v.DDL.Table.Name.String() + return v.DDL.GetTable().Name.String() } //Execute implements the Primitive interface diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 3109f5dcdfe..8186fa670ba 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -314,11 +314,11 @@ func createInstructionFor(query string, stmt sqlparser.Statement, vschema Contex return buildRoutePlan(stmt, vschema, buildDeletePlan) case *sqlparser.Union: return buildRoutePlan(stmt, vschema, buildUnionPlan) - case *sqlparser.DDL: + case sqlparser.DDLStatement: if sqlparser.IsVschemaDDL(stmt) { return buildVSchemaDDLPlan(stmt, vschema) } - if sqlparser.IsOnlineSchemaDDL(stmt, query) { + if sqlparser.IsOnlineSchemaDDL(stmt) { return buildOnlineDDLPlan(query, stmt, vschema) } return buildDDLPlan(query, stmt, vschema) diff --git a/go/vt/vtgate/planbuilder/ddl.go b/go/vt/vtgate/planbuilder/ddl.go index f95b1b637a5..b1085a281a8 100644 --- a/go/vt/vtgate/planbuilder/ddl.go +++ b/go/vt/vtgate/planbuilder/ddl.go @@ -1,7 +1,8 @@ package planbuilder import ( - "fmt" + "vitess.io/vitess/go/vt/proto/vtrpc" + "vitess.io/vitess/go/vt/vterrors" "vitess.io/vitess/go/vt/key" "vitess.io/vitess/go/vt/schema" @@ -30,31 +31,36 @@ func buildDDLPlan(sql string, in sqlparser.Statement, vschema ContextVSchema) (e }, nil } -func buildOnlineDDLPlan(query string, stmt *sqlparser.DDL, vschema ContextVSchema) (engine.Primitive, error) { - _, keyspace, _, err := vschema.TargetDestination(stmt.Table.Qualifier.String()) +func buildOnlineDDLPlan(query string, stmt sqlparser.DDLStatement, vschema ContextVSchema) (engine.Primitive, error) { + + _, keyspace, _, err := vschema.TargetDestination(stmt.GetTable().Qualifier.String()) if err != nil { return nil, err } - if stmt.OnlineHint == nil { - return nil, fmt.Errorf("Not an online DDL: %s", query) + if stmt.GetOnlineHint() == nil { + return nil, vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "not an online DDL: %s", query) } - switch stmt.OnlineHint.Strategy { + switch stmt.GetOnlineHint().Strategy { case schema.DDLStrategyGhost, schema.DDLStrategyPTOSC: // OK, do nothing case schema.DDLStrategyNormal: - return nil, fmt.Errorf("Not an online DDL strategy") + return nil, vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "not an online DDL strategy") default: - return nil, fmt.Errorf("Unknown online DDL strategy: '%v'", stmt.OnlineHint.Strategy) + return nil, vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "unknown online DDL strategy: '%v'", stmt.GetOnlineHint().Strategy) } return &engine.OnlineDDL{ Keyspace: keyspace, DDL: stmt, SQL: query, - Strategy: stmt.OnlineHint.Strategy, - Options: stmt.OnlineHint.Options, + Strategy: stmt.GetOnlineHint().Strategy, + Options: stmt.GetOnlineHint().Options, }, nil } -func buildVSchemaDDLPlan(stmt *sqlparser.DDL, vschema ContextVSchema) (engine.Primitive, error) { +func buildVSchemaDDLPlan(ddlStmt sqlparser.DDLStatement, vschema ContextVSchema) (engine.Primitive, error) { + stmt, ok := ddlStmt.(*sqlparser.DDL) + if !ok { + return nil, vterrors.Errorf(vtrpc.Code_INTERNAL, "Incorrect type %T", ddlStmt) + } _, keyspace, _, err := vschema.TargetDestination(stmt.Table.Qualifier.String()) if err != nil { return nil, err diff --git a/go/vt/vtgate/planbuilder/testdata/vindex_func_cases.txt b/go/vt/vtgate/planbuilder/testdata/vindex_func_cases.txt index 88356784fd8..91529c462ed 100644 --- a/go/vt/vtgate/planbuilder/testdata/vindex_func_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/vindex_func_cases.txt @@ -293,7 +293,7 @@ } "select none from user_index where id = :id" -"symbol none not found in table or subquery" +"symbol `none` not found in table or subquery" "select * from samecolvin where col = :col" { diff --git a/go/vt/vttablet/tabletserver/vstreamer/planbuilder_test.go b/go/vt/vttablet/tabletserver/vstreamer/planbuilder_test.go index 8d50af55950..a18d84b863f 100644 --- a/go/vt/vttablet/tabletserver/vstreamer/planbuilder_test.go +++ b/go/vt/vttablet/tabletserver/vstreamer/planbuilder_test.go @@ -525,7 +525,7 @@ func TestPlanbuilder(t *testing.T) { }, { inTable: t1, inRule: &binlogdatapb.Rule{Match: "t1", Filter: "select none from t1"}, - outErr: `column none not found in table t1`, + outErr: "column `none` not found in table t1", }, { inTable: t1, inRule: &binlogdatapb.Rule{Match: "t1", Filter: "select id, val, max(val) from t1"}, From bfa23dd04493a16063ec2e32dbb722b773ccf66c Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Fri, 13 Nov 2020 14:57:53 +0530 Subject: [PATCH 05/11] Use Ast incase the query is fully parsed Signed-off-by: GuptaManan100 --- go/vt/sqlparser/analyzer.go | 2 +- go/vt/vtgate/planbuilder/ddl.go | 11 +++++++---- .../vtgate/planbuilder/testdata/ddl_cases.txt | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/go/vt/sqlparser/analyzer.go b/go/vt/sqlparser/analyzer.go index 7925f469e86..6d3848793a9 100644 --- a/go/vt/sqlparser/analyzer.go +++ b/go/vt/sqlparser/analyzer.go @@ -74,7 +74,7 @@ func ASTToStatementType(stmt Statement) StatementType { return StmtSet case *Show: return StmtShow - case *DDL, *DBDDL: + case DDLStatement, *DBDDL: return StmtDDL case *Use: return StmtUse diff --git a/go/vt/vtgate/planbuilder/ddl.go b/go/vt/vtgate/planbuilder/ddl.go index b1085a281a8..52862c6023e 100644 --- a/go/vt/vtgate/planbuilder/ddl.go +++ b/go/vt/vtgate/planbuilder/ddl.go @@ -10,10 +10,9 @@ import ( "vitess.io/vitess/go/vt/vtgate/engine" ) -func buildDDLPlan(sql string, in sqlparser.Statement, vschema ContextVSchema) (engine.Primitive, error) { - stmt := in.(*sqlparser.DDL) +func buildDDLPlan(sql string, stmt sqlparser.DDLStatement, vschema ContextVSchema) (engine.Primitive, error) { // This method call will validate the destination != nil check. - destination, keyspace, _, err := vschema.TargetDestination(stmt.Table.Qualifier.String()) + destination, keyspace, _, err := vschema.TargetDestination(stmt.GetTable().Qualifier.String()) if err != nil { return nil, err } @@ -22,10 +21,14 @@ func buildDDLPlan(sql string, in sqlparser.Statement, vschema ContextVSchema) (e destination = key.DestinationAllShards{} } + query := sql + if stmt.IsFullyParsed() { + query = sqlparser.String(stmt) + } return &engine.Send{ Keyspace: keyspace, TargetDestination: destination, - Query: sql, //This is original sql query to be passed as the parser can provide partial ddl AST. + Query: query, //This is original sql query to be passed as the parser can provide partial ddl AST. IsDML: false, SingleShardOnly: false, }, nil diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt index c5bc58e56aa..a20d047409d 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt @@ -95,3 +95,21 @@ #Alter table with unknown qualifier "alter table a.b ADD id int" "no keyspace with name [a] found" + +# DDL +"create index a on b(id)" +{ + "QueryType": "DDL", + "Original": "create index a on b(id)", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "TargetDestination": "AllShards()", + "IsDML": false, + "Query": "create index a on b (id)", + "SingleShardOnly": false + } +} From e55cb630a87f407ca4976c5751eb597c312182f0 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Fri, 13 Nov 2020 15:48:19 +0530 Subject: [PATCH 06/11] PlanBuilder at tabletserver changed to use DDLStatement Signed-off-by: GuptaManan100 --- go/vt/sqlparser/ast.go | 17 +++++++++++++++++ go/vt/sqlparser/ast_funcs.go | 11 ----------- .../tabletserver/planbuilder/permission.go | 2 +- go/vt/vttablet/tabletserver/planbuilder/plan.go | 5 +++-- .../planbuilder/testdata/exec_cases.txt | 14 ++++++++++++++ 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index cd688e8d951..f52955b4c84 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -60,6 +60,7 @@ type ( GetOnlineHint() *OnlineDDLHint IsFullyParsed() bool GetTable() TableName + AffectedTables() TableNames Statement } @@ -398,6 +399,22 @@ func (node *DDL) GetTable() TableName { return node.Table } +// AffectedTables returns the list table names affected by the DDLStatement. +func (node *DDL) AffectedTables() TableNames { + if node.Action == RenameDDLAction || node.Action == DropDDLAction { + list := make(TableNames, 0, len(node.FromTables)+len(node.ToTables)) + list = append(list, node.FromTables...) + list = append(list, node.ToTables...) + return list + } + return TableNames{node.Table} +} + +// AffectedTables implements DDLStatement. +func (node *CreateIndex) AffectedTables() TableNames { + return TableNames{node.Table} +} + // ParenSelect can actually not be a top level statement, // but we have to allow it because it's a requirement // of SelectStatement. diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index 850c0a1f02c..ac9d678990c 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -147,17 +147,6 @@ const ( BitVal ) -// AffectedTables returns the list table names affected by the DDL. -func (node *DDL) AffectedTables() TableNames { - if node.Action == RenameDDLAction || node.Action == DropDDLAction { - list := make(TableNames, 0, len(node.FromTables)+len(node.ToTables)) - list = append(list, node.FromTables...) - list = append(list, node.ToTables...) - return list - } - return TableNames{node.Table} -} - // AddColumn appends the given column to the list in the spec func (ts *TableSpec) AddColumn(cd *ColumnDefinition) { ts.Columns = append(ts.Columns, cd) diff --git a/go/vt/vttablet/tabletserver/planbuilder/permission.go b/go/vt/vttablet/tabletserver/planbuilder/permission.go index dc0e2fb0583..cf0c223978f 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/permission.go +++ b/go/vt/vttablet/tabletserver/planbuilder/permission.go @@ -49,7 +49,7 @@ func BuildPermissions(stmt sqlparser.Statement) []Permission { permissions = buildSubqueryPermissions(node, tableacl.READER, permissions) case *sqlparser.Set, *sqlparser.Show, *sqlparser.OtherRead, *sqlparser.Explain: // no-op - case *sqlparser.DDL: + case sqlparser.DDLStatement: for _, t := range node.AffectedTables() { permissions = buildTableNamePermissions(t, tableacl.ADMIN, permissions) } diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index 3479bc02226..5c321285c75 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -181,9 +181,10 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, isRes plan, err = analyzeDelete(stmt, tables) case *sqlparser.Set: plan, err = analyzeSet(stmt), nil - case *sqlparser.DDL: - // DDLs and other statements below don't get fully parsed. + case sqlparser.DDLStatement: + // DDLs and some other statements below don't get fully parsed. // We have to use the original query at the time of execution. + // We are in the process of changing this plan = &Plan{PlanID: PlanDDL} case *sqlparser.Show: plan, err = analyzeShow(stmt, dbName) diff --git a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt index 2b9d31892fb..296ed41f0d8 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt +++ b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt @@ -640,6 +640,20 @@ options:PassthroughDMLs ] } +# create index +"create index a on b(id)" +{ + "PlanID": "DDL", + "TableName": "", + "Permissions": [ + { + "TableName": "b", + "Role": 2 + } + ] +} + + # alter "alter table a add column(a int)" { From fcb20fb8df4836c202da88f40c1828cf137ef1d5 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Mon, 16 Nov 2020 13:06:23 +0530 Subject: [PATCH 07/11] TabletServer now uses the AST generated query in case it is fully parsed Signed-off-by: GuptaManan100 --- go/vt/sqlparser/parse_test.go | 5 +---- go/vt/vttablet/tabletserver/planbuilder/plan.go | 8 +++++++- go/vt/vttablet/tabletserver/query_executor.go | 12 +++++++++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 6ee3be72d6f..d5efad389a7 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1158,7 +1158,7 @@ var ( }, { input: "create unique index a using foo on b (col1 desc)", }, { - input: "create with gh-ost unique index a using foo on b (col1 desc)", + input: "create with 'gh-ost' unique index a using foo on b (col1 desc)", output: "create unique index a using foo on b (col1 desc)", }, { input: "create fulltext index a using foo on b (col1)", @@ -1170,9 +1170,6 @@ var ( input: "create index a on b ((col1 + col2), (col1*col2))", output: "create index a on b ()", partialDDL: true, - }, { - input: "create fulltext index a using foo on b", - output: "alter table b", }, { input: "create view a", output: "create table a", diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index 5c321285c75..671384d69fd 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -185,7 +185,13 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, isRes // DDLs and some other statements below don't get fully parsed. // We have to use the original query at the time of execution. // We are in the process of changing this - plan = &Plan{PlanID: PlanDDL} + var fullQuery *sqlparser.ParsedQuery + fullQuery = nil + // If the query is fully parsed, then use the ast and store the fullQuery + if stmt.IsFullyParsed() { + fullQuery = GenerateFullQuery(stmt) + } + plan = &Plan{PlanID: PlanDDL, FullQuery: fullQuery} case *sqlparser.Show: plan, err = analyzeShow(stmt, dbName) case *sqlparser.OtherRead, *sqlparser.Explain: diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index 310f7c0e21a..229261d4e9d 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -380,7 +380,17 @@ func (qre *QueryExecutor) execDDL(conn *StatefulConnection) (*sqltypes.Result, e } }() - result, err := qre.execStatefulConn(conn, qre.query, true) + sql := qre.query + // If FullQuery is not nil, then the DDL query was fully parsed + // and we should use the ast to generate the query instead. + if qre.plan.FullQuery != nil { + var err error + sql, _, err = qre.generateFinalSQL(qre.plan.FullQuery, qre.bindVars) + if err != nil { + return nil, err + } + } + result, err := qre.execStatefulConn(conn, sql, true) if err != nil { return nil, err } From 7fc96cb38565e9b2e439c35b9e1e05b509533e16 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Mon, 16 Nov 2020 14:14:50 +0530 Subject: [PATCH 08/11] Routing works correctly for create index queries Signed-off-by: GuptaManan100 --- go/test/endtoend/vtgate/misc_test.go | 4 +++ go/vt/sqlparser/ast.go | 13 ++++++++ go/vt/vtgate/planbuilder/ddl.go | 32 ++++++++++++++++--- .../vtgate/planbuilder/testdata/ddl_cases.txt | 28 +++++++++++++--- .../vttablet/tabletserver/planbuilder/plan.go | 1 - .../planbuilder/testdata/exec_cases.txt | 3 +- 6 files changed, 69 insertions(+), 12 deletions(-) diff --git a/go/test/endtoend/vtgate/misc_test.go b/go/test/endtoend/vtgate/misc_test.go index 7b24765eeb2..6630cc09356 100644 --- a/go/test/endtoend/vtgate/misc_test.go +++ b/go/test/endtoend/vtgate/misc_test.go @@ -400,8 +400,12 @@ func TestCreateIndex(t *testing.T) { conn, err := mysql.Connect(ctx, &vtParams) require.NoError(t, err) defer conn.Close() + // Test that create index with the correct table name works _, err = conn.ExecuteFetch(`create index i1 on t1 (id1)`, 1000, true) require.NoError(t, err) + // Test routing rules for create index. + _, err = conn.ExecuteFetch(`create index i2 on ks.t1000 (id1)`, 1000, true) + require.NoError(t, err) } func assertMatches(t *testing.T, conn *mysql.Conn, query, expected string) { diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 8c4656732bd..472eb86624c 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -61,6 +61,7 @@ type ( IsFullyParsed() bool GetTable() TableName AffectedTables() TableNames + SetTable(qualifier string, name string) Statement } @@ -415,6 +416,18 @@ func (node *CreateIndex) AffectedTables() TableNames { return TableNames{node.Table} } +// SetTable implements DDLStatement. +func (node *CreateIndex) SetTable(qualifier string, name string) { + node.Table.Qualifier = NewTableIdent(qualifier) + node.Table.Name = NewTableIdent(name) +} + +// SetTable implements DDLStatement. +func (node *DDL) SetTable(qualifier string, name string) { + node.Table.Qualifier = NewTableIdent(qualifier) + node.Table.Name = NewTableIdent(name) +} + // ParenSelect can actually not be a top level statement, // but we have to allow it because it's a requirement // of SelectStatement. diff --git a/go/vt/vtgate/planbuilder/ddl.go b/go/vt/vtgate/planbuilder/ddl.go index 52862c6023e..fde83e02ab9 100644 --- a/go/vt/vtgate/planbuilder/ddl.go +++ b/go/vt/vtgate/planbuilder/ddl.go @@ -3,6 +3,7 @@ package planbuilder import ( "vitess.io/vitess/go/vt/proto/vtrpc" "vitess.io/vitess/go/vt/vterrors" + "vitess.io/vitess/go/vt/vtgate/vindexes" "vitess.io/vitess/go/vt/key" "vitess.io/vitess/go/vt/schema" @@ -11,10 +12,29 @@ import ( ) func buildDDLPlan(sql string, stmt sqlparser.DDLStatement, vschema ContextVSchema) (engine.Primitive, error) { - // This method call will validate the destination != nil check. - destination, keyspace, _, err := vschema.TargetDestination(stmt.GetTable().Qualifier.String()) - if err != nil { - return nil, err + var table *vindexes.Table + var destination key.Destination + var keyspace *vindexes.Keyspace + var err error + + switch stmt.(type) { + case *sqlparser.CreateIndex: + // For Create index, the table must already exist + // We should find the target of the query from this tables location + table, _, _, _, destination, err = vschema.FindTableOrVindex(stmt.GetTable()) + keyspace = table.Keyspace + if err != nil { + return nil, err + } + if table == nil { + return nil, vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "table does not exists: %s", stmt.GetTable().Name.String()) + } + stmt.SetTable("", table.Name.String()) + case *sqlparser.DDL: + destination, keyspace, _, err = vschema.TargetDestination(stmt.GetTable().Qualifier.String()) + if err != nil { + return nil, err + } } if destination == nil { @@ -22,13 +42,15 @@ func buildDDLPlan(sql string, stmt sqlparser.DDLStatement, vschema ContextVSchem } query := sql + // If the query is fully parsed, generate the query from the ast. Otherwise, use the original query if stmt.IsFullyParsed() { query = sqlparser.String(stmt) } + return &engine.Send{ Keyspace: keyspace, TargetDestination: destination, - Query: query, //This is original sql query to be passed as the parser can provide partial ddl AST. + Query: query, IsDML: false, SingleShardOnly: false, }, nil diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt index a20d047409d..6871faf157f 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt @@ -97,19 +97,37 @@ "no keyspace with name [a] found" # DDL -"create index a on b(id)" +"create index a on user(id)" { "QueryType": "DDL", - "Original": "create index a on b(id)", + "Original": "create index a on user(id)", "Instructions": { "OperatorType": "Send", "Keyspace": { - "Name": "main", - "Sharded": false + "Name": "user", + "Sharded": true + }, + "TargetDestination": "AllShards()", + "IsDML": false, + "Query": "create index a on user (id)", + "SingleShardOnly": false + } +} + +# DDL with qualifier +"create index a on user.user(id)" +{ + "QueryType": "DDL", + "Original": "create index a on user.user(id)", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true }, "TargetDestination": "AllShards()", "IsDML": false, - "Query": "create index a on b (id)", + "Query": "create index a on user (id)", "SingleShardOnly": false } } diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index 671384d69fd..563000fd761 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -186,7 +186,6 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, isRes // We have to use the original query at the time of execution. // We are in the process of changing this var fullQuery *sqlparser.ParsedQuery - fullQuery = nil // If the query is fully parsed, then use the ast and store the fullQuery if stmt.IsFullyParsed() { fullQuery = GenerateFullQuery(stmt) diff --git a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt index 296ed41f0d8..f00fca6b37d 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt +++ b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt @@ -650,7 +650,8 @@ options:PassthroughDMLs "TableName": "b", "Role": 2 } - ] + ], + "FullQuery":"create index a on b (id)" } From 832c6e5bd8b19941859cf405000ac73d2299a661 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Mon, 16 Nov 2020 14:49:08 +0530 Subject: [PATCH 09/11] Added unit tests for QueryExecutor Signed-off-by: GuptaManan100 --- .../tabletserver/query_executor_test.go | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/go/vt/vttablet/tabletserver/query_executor_test.go b/go/vt/vttablet/tabletserver/query_executor_test.go index d33d4c46b3d..2cf8abbe7fe 100644 --- a/go/vt/vttablet/tabletserver/query_executor_test.go +++ b/go/vt/vttablet/tabletserver/query_executor_test.go @@ -219,6 +219,26 @@ func TestQueryExecutorPlans(t *testing.T) { planWant: "Savepoint", logWant: "savepoint a", inTxWant: "savepoint a", + }, { + input: "create index a on user(id)", + dbResponses: []dbResponse{{ + query: "create index a on user (id)", + result: emptyResult, + }}, + resultWant: emptyResult, + planWant: "DDL", + logWant: "create index a on user (id)", + inTxWant: "create index a on user (id)", + }, { + input: "create index a on user(id1 + id2)", + dbResponses: []dbResponse{{ + query: "create index a on user(id1 + id2)", + result: emptyResult, + }}, + resultWant: emptyResult, + planWant: "DDL", + logWant: "create index a on user(id1 + id2)", + inTxWant: "create index a on user(id1 + id2)", }, { input: "ROLLBACK work to SAVEPOINT a", dbResponses: []dbResponse{{ From 210aa1a23d073d0c542410fba4afdab9ffd7c72f Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 18 Nov 2020 13:17:52 +0530 Subject: [PATCH 10/11] Added Test for a table not in vschema in unsharded keyspace Signed-off-by: GuptaManan100 --- .../vtgate/planbuilder/testdata/ddl_cases.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt index 6871faf157f..e57a0a1337c 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt @@ -131,3 +131,21 @@ "SingleShardOnly": false } } + +# DDL with qualifier +"create index a on main.unknown(id)" +{ + "QueryType": "DDL", + "Original": "create index a on main.unknown(id)", + "Instructions": { + "OperatorType": "Send", + "Keyspace": { + "Name": "user", + "Sharded": true + }, + "TargetDestination": "AllShards()", + "IsDML": false, + "Query": "create index a on unknown (id)", + "SingleShardOnly": false + } +} From fd8335e771fea4181fdea993b0ba37a43809c3f3 Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Wed, 18 Nov 2020 13:23:29 +0530 Subject: [PATCH 11/11] Fixed test Signed-off-by: GuptaManan100 --- go/vt/vtgate/planbuilder/testdata/ddl_cases.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt index e57a0a1337c..6b29ca2dfb3 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt @@ -132,7 +132,7 @@ } } -# DDL with qualifier +# DDL with qualifier for a table not in vschema of an unsharded keyspace "create index a on main.unknown(id)" { "QueryType": "DDL", @@ -140,8 +140,8 @@ "Instructions": { "OperatorType": "Send", "Keyspace": { - "Name": "user", - "Sharded": true + "Name": "main", + "Sharded": false }, "TargetDestination": "AllShards()", "IsDML": false,