diff --git a/go/test/endtoend/vtgate/unsharded/main_test.go b/go/test/endtoend/vtgate/unsharded/main_test.go new file mode 100644 index 00000000000..be79923423a --- /dev/null +++ b/go/test/endtoend/vtgate/unsharded/main_test.go @@ -0,0 +1,160 @@ +/* +Copyright 2020 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package unsharded + +import ( + "context" + "flag" + "fmt" + "os" + "testing" + + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "vitess.io/vitess/go/mysql" + "vitess.io/vitess/go/sqltypes" + "vitess.io/vitess/go/test/endtoend/cluster" +) + +var ( + clusterInstance *cluster.LocalProcessCluster + cell = "zone1" + hostname = "localhost" + KeyspaceName = "customer" + SchemaSQL = ` +CREATE TABLE t1 ( + c1 BIGINT NOT NULL, + c2 BIGINT NOT NULL, + c3 BIGINT, + c4 varchar(100), + PRIMARY KEY (c1), + UNIQUE KEY (c2), + UNIQUE KEY (c3), + UNIQUE KEY (c4) +) ENGINE=Innodb; +` + VSchema = ` +{ + "sharded": false, + "tables": { + "t1": { + "columns": [ + { + "name": "c1", + "type": "INT64" + }, + { + "name": "c2", + "type": "INT64" + }, + { + "name": "c3", + "type": "INT64" + }, + { + "name": "c4", + "type": "VARCHAR" + } + ], + } + } +} +` +) + +func TestMain(m *testing.M) { + defer cluster.PanicHandler(nil) + flag.Parse() + + exitCode := func() int { + clusterInstance = cluster.NewCluster(cell, hostname) + defer clusterInstance.Teardown() + + // Start topo server + if err := clusterInstance.StartTopo(); err != nil { + return 1 + } + + // Start keyspace + Keyspace := &cluster.Keyspace{ + Name: KeyspaceName, + SchemaSQL: SchemaSQL, + VSchema: VSchema, + } + if err := clusterInstance.StartUnshardedKeyspace(*Keyspace, 0, false); err != nil { + return 1 + } + + // Start vtgate + if err := clusterInstance.StartVtgate(); err != nil { + return 1 + } + + return m.Run() + }() + os.Exit(exitCode) +} + +func TestSelectIntoAndLoadFrom(t *testing.T) { + defer cluster.PanicHandler(t) + ctx := context.Background() + vtParams := mysql.ConnParams{ + Host: "localhost", + Port: clusterInstance.VtgateMySQLPort, + } + conn, err := mysql.Connect(ctx, &vtParams) + require.Nil(t, err) + defer conn.Close() + + defer exec(t, conn, `delete from t1`) + exec(t, conn, `insert into t1(c1, c2, c3, c4) values (300,100,300,'abc')`) + + exec(t, conn, `select * from t1 into outfile 'x.txt'`) + execAssertError(t, conn, `load data infile 'x.txt' into table t1`, "ERROR 1062 (23000): Duplicate entry '300' for key 'PRIMARY'") + exec(t, conn, `delete from t1`) + exec(t, conn, `load data infile 'x.txt' into table t1`) + assertMatches(t, conn, `select c1,c2,c3 from t1`, `[[INT64(300) INT64(100) INT64(300)]]`) + exec(t, conn, `select * from t1 into dumpfile 'x1.txt'`) + exec(t, conn, `select * from t1 into outfile 'x2.txt' Fields terminated by ';' optionally enclosed by '"' escaped by '\t' lines terminated by '\n'`) + exec(t, conn, `load data infile 'x.txt' into replace table t1 Fields terminated by ';' optionally enclosed by '"' escaped by '\t' lines terminated by '\n'`) + assertMatches(t, conn, `select c1,c2,c3 from t1`, `[[INT64(300) INT64(100) INT64(300)]]`) +} + +func exec(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result { + t.Helper() + qr, err := conn.ExecuteFetch(query, 1000, true) + require.NoError(t, err) + return qr +} + +func execAssertError(t *testing.T, conn *mysql.Conn, query string, errorString string) { + t.Helper() + _, err := conn.ExecuteFetch(query, 1000, true) + require.Error(t, err) + assert.Contains(t, err.Error(), errorString) +} + +func assertMatches(t *testing.T, conn *mysql.Conn, query, expected string) { + t.Helper() + qr := exec(t, conn, query) + got := fmt.Sprintf("%v", qr.Rows) + diff := cmp.Diff(expected, got) + if diff != "" { + t.Errorf("Query: %s (-want +got):\n%s", query, diff) + } +} diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 1c594771fdb..07abacb4b7b 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -69,9 +69,23 @@ type ( OrderBy OrderBy Limit *Limit Lock Lock - IntoOutfileS3 string + Into *SelectInto } + // SelectInto is a struct that represent the INTO part of a select query + SelectInto struct { + Type SelectIntoType + FileName string + Charset string + FormatOption string + ExportOption string + Manifest string + Overwrite string + } + + // SelectIntoType is an enum for SelectInto.Type + SelectIntoType int8 + // Lock is an enum for the type of lock in the statement Lock int8 @@ -242,9 +256,8 @@ type ( // DDLAction is an enum for DDL.Action DDLAction int8 - // Load is for s3 statement + // Load represents a LOAD statement Load struct { - InfileS3 string } // ParenSelect is a parenthesized SELECT statement. @@ -1014,14 +1027,11 @@ func (node *Select) Format(buf *TrackedBuffer) { addIf(node.StraightJoinHint, StraightJoinHint) addIf(node.SQLCalcFoundRows, SQLCalcFoundRowsStr) - buf.astPrintf(node, "select %v%s%v from %v%v%v%v%v%v%s", + buf.astPrintf(node, "select %v%s%v from %v%v%v%v%v%v%s%v", node.Comments, options, node.SelectExprs, node.From, node.Where, node.GroupBy, node.Having, node.OrderBy, - node.Limit, node.Lock.ToString()) - if node.IntoOutfileS3 != "" { - buf.astPrintf(node, " into outfile s3 '%s'", node.IntoOutfileS3) - } + node.Limit, node.Lock.ToString(), node.Into) } // Format formats the node. @@ -2138,3 +2148,15 @@ func (node *ShowTableStatus) Format(buf *TrackedBuffer) { } buf.astPrintf(node, "%v", node.Filter) } + +// Format formats the node. +func (node *SelectInto) Format(buf *TrackedBuffer) { + if node == nil { + return + } + buf.astPrintf(node, "%s'%s'", node.Type.ToString(), node.FileName) + if node.Charset != "" { + buf.astPrintf(node, " character set %s", node.Charset) + } + buf.astPrintf(node, "%s%s%s%s", node.FormatOption, node.ExportOption, node.Manifest, node.Overwrite) +} diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index ec7bfa8a76c..00dda2ad570 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1122,6 +1122,19 @@ func (ty ExplainType) ToString() string { } } +func (sel SelectIntoType) ToString() string { + switch sel { + case IntoOutfile: + return IntoOutfileStr + case IntoOutfileS3: + return IntoOutfileS3Str + case IntoDumpfile: + return IntoDumpfileStr + default: + return "Unknown Select Into Type" + } +} + // AtCount represents the '@' count in ColIdent type AtCount int diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index bf3d9edc596..f2d7dfbdc21 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -156,6 +156,11 @@ const ( NaturalLanguageModeWithQueryExpansionStr = " in natural language mode with query expansion" QueryExpansionStr = " with query expansion" + // INTO OUTFILE + IntoOutfileStr = " into outfile " + IntoOutfileS3Str = " into outfile s3 " + IntoDumpfileStr = " into dumpfile " + // Order.Direction AscScr = "asc" DescScr = "desc" @@ -373,3 +378,10 @@ const ( TraditionalType AnalyzeType ) + +// Constant for Enum Type - SelectIntoType +const ( + IntoOutfile SelectIntoType = iota + IntoOutfileS3 + IntoDumpfile +) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index e9786bcf633..603026aa41d 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -26,6 +26,7 @@ import ( "sync" "testing" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -1051,12 +1052,6 @@ var ( output: "alter database d", }, { input: "create table a", - }, { - input: "load data from s3 'x.txt'", - output: "AST node missing for Load type", - }, { - input: "load data from s3 'x.txt' into table x", - output: "AST node missing for Load type", }, { input: "create table a (\n\t`a` int\n)", output: "create table a (\n\ta int\n)", @@ -2129,13 +2124,19 @@ func TestConvert(t *testing.T) { } } -func TestIntoOutfileS3(t *testing.T) { +func TestSelectInto(t *testing.T) { validSQL := []struct { input string output string }{{ input: "select * from t order by name limit 100 into outfile s3 'out_file_name'", output: "select * from t order by name asc limit 100 into outfile s3 'out_file_name'", + }, { + input: "select * from t into dumpfile 'out_file_name'", + }, { + input: "select * from t into outfile 'out_file_name' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + }, { + input: "select * from t into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", }, { input: "select * from (select * from t union select * from t2) as t3 where t3.name in (select col from t4) into outfile s3 'out_file_name'", }, { @@ -2155,9 +2156,7 @@ func TestIntoOutfileS3(t *testing.T) { continue } out := String(tree) - if out != tcase.output { - t.Errorf("out: %s, want %s", out, tcase.output) - } + assert.Equal(t, tcase.output, out) } invalidSQL := []struct { @@ -2275,6 +2274,19 @@ func TestSubStr(t *testing.T) { } } +func TestLoadData(t *testing.T) { + validSQL := []string{ + "load data from s3 'x.txt'", + "load data from s3 manifest 'x.txt'", + "load data from s3 file 'x.txt'", + "load data infile 'x.txt' into table 'c'", + "load data from s3 'x.txt' into table x"} + for _, tcase := range validSQL { + _, err := Parse(tcase) + require.NoError(t, err) + } +} + func TestCreateTable(t *testing.T) { validSQL := []string{ // test all the data types and options diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go index 9ff001624ca..27b2f918fb3 100644 --- a/go/vt/sqlparser/rewriter.go +++ b/go/vt/sqlparser/rewriter.go @@ -531,6 +531,10 @@ func replaceSelectHaving(newNode, parent SQLNode) { parent.(*Select).Having = newNode.(*Where) } +func replaceSelectInto(newNode, parent SQLNode) { + parent.(*Select).Into = newNode.(*SelectInto) +} + func replaceSelectLimit(newNode, parent SQLNode) { parent.(*Select).Limit = newNode.(*Limit) } @@ -1224,6 +1228,7 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { a.apply(node, n.From, replaceSelectFrom) a.apply(node, n.GroupBy, replaceSelectGroupBy) a.apply(node, n.Having, replaceSelectHaving) + a.apply(node, n.Into, replaceSelectInto) a.apply(node, n.Limit, replaceSelectLimit) a.apply(node, n.OrderBy, replaceSelectOrderBy) a.apply(node, n.SelectExprs, replaceSelectSelectExprs) @@ -1237,6 +1242,8 @@ func (a *application) apply(parent, node SQLNode, replacer replacerFunc) { replacerRef.inc() } + case *SelectInto: + case *Set: a.apply(node, n.Comments, replaceSetComments) a.apply(node, n.Exprs, replaceSetExprs) diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 83fcd26801a..6baa4f14cea 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -121,6 +121,7 @@ type yySymType struct { matchExprOption MatchExprOption orderDirection OrderDirection explainType ExplainType + selectInto *SelectInto } const LEX_ERROR = 57346 @@ -160,321 +161,332 @@ const OUTFILE = 57379 const S3 = 57380 const DATA = 57381 const LOAD = 57382 -const VALUES = 57383 -const LAST_INSERT_ID = 57384 -const NEXT = 57385 -const VALUE = 57386 -const SHARE = 57387 -const MODE = 57388 -const SQL_NO_CACHE = 57389 -const SQL_CACHE = 57390 -const SQL_CALC_FOUND_ROWS = 57391 -const JOIN = 57392 -const STRAIGHT_JOIN = 57393 -const LEFT = 57394 -const RIGHT = 57395 -const INNER = 57396 -const OUTER = 57397 -const CROSS = 57398 -const NATURAL = 57399 -const USE = 57400 -const FORCE = 57401 -const ON = 57402 -const USING = 57403 -const ID = 57404 -const AT_ID = 57405 -const AT_AT_ID = 57406 -const HEX = 57407 -const STRING = 57408 -const INTEGRAL = 57409 -const FLOAT = 57410 -const HEXNUM = 57411 -const VALUE_ARG = 57412 -const LIST_ARG = 57413 -const COMMENT = 57414 -const COMMENT_KEYWORD = 57415 -const BIT_LITERAL = 57416 -const NULL = 57417 -const TRUE = 57418 -const FALSE = 57419 -const OFF = 57420 -const OR = 57421 -const XOR = 57422 -const AND = 57423 -const NOT = 57424 -const BETWEEN = 57425 -const CASE = 57426 -const WHEN = 57427 -const THEN = 57428 -const ELSE = 57429 -const END = 57430 -const LE = 57431 -const GE = 57432 -const NE = 57433 -const NULL_SAFE_EQUAL = 57434 -const IS = 57435 -const LIKE = 57436 -const REGEXP = 57437 -const IN = 57438 -const SHIFT_LEFT = 57439 -const SHIFT_RIGHT = 57440 -const DIV = 57441 -const MOD = 57442 -const UNARY = 57443 -const COLLATE = 57444 -const BINARY = 57445 -const UNDERSCORE_BINARY = 57446 -const UNDERSCORE_UTF8MB4 = 57447 -const UNDERSCORE_UTF8 = 57448 -const UNDERSCORE_LATIN1 = 57449 -const INTERVAL = 57450 -const JSON_EXTRACT_OP = 57451 -const JSON_UNQUOTE_EXTRACT_OP = 57452 -const CREATE = 57453 -const ALTER = 57454 -const DROP = 57455 -const RENAME = 57456 -const ANALYZE = 57457 -const ADD = 57458 -const FLUSH = 57459 -const SCHEMA = 57460 -const TABLE = 57461 -const INDEX = 57462 -const VIEW = 57463 -const TO = 57464 -const IGNORE = 57465 -const IF = 57466 -const UNIQUE = 57467 -const PRIMARY = 57468 -const COLUMN = 57469 -const SPATIAL = 57470 -const FULLTEXT = 57471 -const KEY_BLOCK_SIZE = 57472 -const CHECK = 57473 -const INDEXES = 57474 -const ACTION = 57475 -const CASCADE = 57476 -const CONSTRAINT = 57477 -const FOREIGN = 57478 -const NO = 57479 -const REFERENCES = 57480 -const RESTRICT = 57481 -const SHOW = 57482 -const DESCRIBE = 57483 -const EXPLAIN = 57484 -const DATE = 57485 -const ESCAPE = 57486 -const REPAIR = 57487 -const OPTIMIZE = 57488 -const TRUNCATE = 57489 -const MAXVALUE = 57490 -const PARTITION = 57491 -const REORGANIZE = 57492 -const LESS = 57493 -const THAN = 57494 -const PROCEDURE = 57495 -const TRIGGER = 57496 -const VINDEX = 57497 -const VINDEXES = 57498 -const STATUS = 57499 -const VARIABLES = 57500 -const WARNINGS = 57501 -const SEQUENCE = 57502 -const BEGIN = 57503 -const START = 57504 -const TRANSACTION = 57505 -const COMMIT = 57506 -const ROLLBACK = 57507 -const SAVEPOINT = 57508 -const RELEASE = 57509 -const WORK = 57510 -const BIT = 57511 -const TINYINT = 57512 -const SMALLINT = 57513 -const MEDIUMINT = 57514 -const INT = 57515 -const INTEGER = 57516 -const BIGINT = 57517 -const INTNUM = 57518 -const REAL = 57519 -const DOUBLE = 57520 -const FLOAT_TYPE = 57521 -const DECIMAL = 57522 -const NUMERIC = 57523 -const TIME = 57524 -const TIMESTAMP = 57525 -const DATETIME = 57526 -const YEAR = 57527 -const CHAR = 57528 -const VARCHAR = 57529 -const BOOL = 57530 -const CHARACTER = 57531 -const VARBINARY = 57532 -const NCHAR = 57533 -const TEXT = 57534 -const TINYTEXT = 57535 -const MEDIUMTEXT = 57536 -const LONGTEXT = 57537 -const BLOB = 57538 -const TINYBLOB = 57539 -const MEDIUMBLOB = 57540 -const LONGBLOB = 57541 -const JSON = 57542 -const ENUM = 57543 -const GEOMETRY = 57544 -const POINT = 57545 -const LINESTRING = 57546 -const POLYGON = 57547 -const GEOMETRYCOLLECTION = 57548 -const MULTIPOINT = 57549 -const MULTILINESTRING = 57550 -const MULTIPOLYGON = 57551 -const NULLX = 57552 -const AUTO_INCREMENT = 57553 -const APPROXNUM = 57554 -const SIGNED = 57555 -const UNSIGNED = 57556 -const ZEROFILL = 57557 -const COLLATION = 57558 -const DATABASES = 57559 -const TABLES = 57560 -const VITESS_METADATA = 57561 -const VSCHEMA = 57562 -const FULL = 57563 -const PROCESSLIST = 57564 -const COLUMNS = 57565 -const FIELDS = 57566 -const ENGINES = 57567 -const PLUGINS = 57568 -const EXTENDED = 57569 -const KEYSPACES = 57570 -const VITESS_KEYSPACES = 57571 -const VITESS_SHARDS = 57572 -const VITESS_TABLETS = 57573 -const NAMES = 57574 -const CHARSET = 57575 -const GLOBAL = 57576 -const SESSION = 57577 -const ISOLATION = 57578 -const LEVEL = 57579 -const READ = 57580 -const WRITE = 57581 -const ONLY = 57582 -const REPEATABLE = 57583 -const COMMITTED = 57584 -const UNCOMMITTED = 57585 -const SERIALIZABLE = 57586 -const CURRENT_TIMESTAMP = 57587 -const DATABASE = 57588 -const CURRENT_DATE = 57589 -const CURRENT_TIME = 57590 -const LOCALTIME = 57591 -const LOCALTIMESTAMP = 57592 -const UTC_DATE = 57593 -const UTC_TIME = 57594 -const UTC_TIMESTAMP = 57595 -const REPLACE = 57596 -const CONVERT = 57597 -const CAST = 57598 -const SUBSTR = 57599 -const SUBSTRING = 57600 -const GROUP_CONCAT = 57601 -const SEPARATOR = 57602 -const TIMESTAMPADD = 57603 -const TIMESTAMPDIFF = 57604 -const MATCH = 57605 -const AGAINST = 57606 -const BOOLEAN = 57607 -const LANGUAGE = 57608 -const WITH = 57609 -const QUERY = 57610 -const EXPANSION = 57611 -const UNUSED = 57612 -const ARRAY = 57613 -const CUME_DIST = 57614 -const DESCRIPTION = 57615 -const DENSE_RANK = 57616 -const EMPTY = 57617 -const EXCEPT = 57618 -const FIRST_VALUE = 57619 -const GROUPING = 57620 -const GROUPS = 57621 -const JSON_TABLE = 57622 -const LAG = 57623 -const LAST_VALUE = 57624 -const LATERAL = 57625 -const LEAD = 57626 -const MEMBER = 57627 -const NTH_VALUE = 57628 -const NTILE = 57629 -const OF = 57630 -const OVER = 57631 -const PERCENT_RANK = 57632 -const RANK = 57633 -const RECURSIVE = 57634 -const ROW_NUMBER = 57635 -const SYSTEM = 57636 -const WINDOW = 57637 -const ACTIVE = 57638 -const ADMIN = 57639 -const BUCKETS = 57640 -const CLONE = 57641 -const COMPONENT = 57642 -const DEFINITION = 57643 -const ENFORCED = 57644 -const EXCLUDE = 57645 -const FOLLOWING = 57646 -const GEOMCOLLECTION = 57647 -const GET_MASTER_PUBLIC_KEY = 57648 -const HISTOGRAM = 57649 -const HISTORY = 57650 -const INACTIVE = 57651 -const INVISIBLE = 57652 -const LOCKED = 57653 -const MASTER_COMPRESSION_ALGORITHMS = 57654 -const MASTER_PUBLIC_KEY_PATH = 57655 -const MASTER_TLS_CIPHERSUITES = 57656 -const MASTER_ZSTD_COMPRESSION_LEVEL = 57657 -const NESTED = 57658 -const NETWORK_NAMESPACE = 57659 -const NOWAIT = 57660 -const NULLS = 57661 -const OJ = 57662 -const OLD = 57663 -const OPTIONAL = 57664 -const ORDINALITY = 57665 -const ORGANIZATION = 57666 -const OTHERS = 57667 -const PATH = 57668 -const PERSIST = 57669 -const PERSIST_ONLY = 57670 -const PRECEDING = 57671 -const PRIVILEGE_CHECKS_USER = 57672 -const PROCESS = 57673 -const RANDOM = 57674 -const REFERENCE = 57675 -const REQUIRE_ROW_FORMAT = 57676 -const RESOURCE = 57677 -const RESPECT = 57678 -const RESTART = 57679 -const RETAIN = 57680 -const REUSE = 57681 -const ROLE = 57682 -const SECONDARY = 57683 -const SECONDARY_ENGINE = 57684 -const SECONDARY_LOAD = 57685 -const SECONDARY_UNLOAD = 57686 -const SKIP = 57687 -const SRID = 57688 -const THREAD_PRIORITY = 57689 -const TIES = 57690 -const UNBOUNDED = 57691 -const VCPU = 57692 -const VISIBLE = 57693 -const FORMAT = 57694 -const TREE = 57695 -const VITESS = 57696 -const TRADITIONAL = 57697 +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 var yyToknames = [...]string{ "$end", @@ -517,6 +529,17 @@ var yyToknames = [...]string{ "S3", "DATA", "LOAD", + "LINES", + "TERMINATED", + "ESCAPED", + "ENCLOSED", + "DUMPFILE", + "CSV", + "HEADER", + "MANIFEST", + "OVERWRITE", + "STARTING", + "OPTIONALLY", "VALUES", "LAST_INSERT_ID", "NEXT", @@ -864,1821 +887,1790 @@ var yyExca = [...]int{ -2, 0, -1, 45, 34, 323, - 137, 323, - 149, 323, - 174, 337, - 175, 337, + 148, 323, + 160, 323, + 185, 337, + 186, 337, -2, 325, -1, 50, - 139, 347, + 150, 347, -2, 345, -1, 74, - 43, 383, + 54, 383, -2, 391, - -1, 405, - 125, 719, - -2, 715, - -1, 406, - 125, 720, - -2, 716, - -1, 421, - 43, 384, + -1, 416, + 136, 747, + -2, 743, + -1, 417, + 136, 748, + -2, 744, + -1, 432, + 54, 384, -2, 396, - -1, 422, - 43, 385, + -1, 433, + 54, 385, -2, 397, - -1, 442, - 93, 978, + -1, 453, + 104, 1015, -2, 76, - -1, 443, - 93, 891, + -1, 454, + 104, 923, -2, 77, - -1, 448, - 93, 857, - -2, 678, - -1, 450, - 93, 924, - -2, 680, - -1, 961, - 125, 722, - -2, 718, - -1, 1049, - 61, 58, - 63, 58, + -1, 459, + 104, 885, + -2, 706, + -1, 461, + 104, 959, + -2, 708, + -1, 972, + 136, 750, + -2, 746, + -1, 1059, + 72, 58, + 74, 58, -2, 62, - -1, 1409, + -1, 1420, 5, 635, 18, 635, 20, 635, 32, 635, - 64, 635, + 75, 635, -2, 422, + -1, 1616, + 44, 678, + -2, 676, } const yyPrivate = 57344 -const yyLast = 18610 +const yyLast = 19384 var yyAct = [...]int{ - 405, 1659, 1649, 1616, 1071, 1455, 1333, 1233, 1531, 1565, - 1517, 1389, 1253, 1425, 364, 708, 1043, 1390, 1234, 349, - 1115, 335, 1395, 577, 609, 1070, 748, 378, 1067, 414, - 1386, 948, 755, 1283, 1080, 1352, 447, 955, 1401, 882, - 94, 1169, 1220, 901, 295, 1310, 318, 295, 1300, 793, - 574, 1040, 94, 1084, 295, 786, 1022, 1045, 758, 73, - 3, 423, 71, 1029, 351, 753, 925, 981, 792, 776, - 29, 408, 1111, 573, 790, 340, 1051, 336, 775, 765, - 339, 1101, 94, 69, 783, 94, 295, 911, 295, 626, - 618, 896, 347, 74, 68, 8, 7, 721, 6, 1448, - 1527, 1652, 1636, 1647, 1624, 722, 1644, 1591, 670, 669, - 679, 680, 672, 673, 674, 675, 676, 677, 678, 671, - 1456, 1635, 681, 1095, 598, 1369, 76, 77, 78, 79, - 80, 81, 1485, 582, 1061, 429, 433, 1623, 1420, 1421, - 409, 283, 1062, 1063, 281, 390, 1137, 396, 397, 394, - 395, 393, 392, 391, 31, 1419, 441, 62, 35, 36, - 1136, 398, 399, 291, 287, 288, 289, 1270, 641, 794, - 1269, 795, 338, 1271, 636, 96, 97, 98, 637, 634, - 635, 337, 1291, 1094, 1520, 96, 97, 98, 1335, 1102, - 1476, 1474, 328, 910, 330, 96, 97, 98, 326, 31, - 32, 33, 62, 35, 36, 639, 1135, 631, 870, 869, - 61, 629, 630, 1337, 867, 1646, 1643, 1617, 1332, 66, - 781, 1023, 1609, 1663, 37, 56, 57, 1119, 59, 1119, - 640, 958, 1428, 60, 1119, 1667, 1254, 1256, 576, 1088, - 912, 913, 914, 284, 1336, 868, 615, 599, 617, 871, - 1574, 46, 1566, 584, 435, 61, 1338, 875, 644, 1132, - 1129, 1130, 858, 1128, 293, 1412, 1411, 1568, 1410, 282, - 1088, 628, 580, 587, 331, 96, 97, 98, 298, 286, - 614, 616, 295, 589, 590, 693, 694, 295, 1592, 600, - 285, 290, 1149, 295, 624, 1148, 1139, 1142, 1188, 295, - 607, 1598, 1499, 613, 1418, 1225, 579, 1329, 581, 1198, - 94, 1185, 1177, 1331, 1057, 769, 1068, 681, 1255, 94, - 706, 39, 40, 42, 41, 44, 1102, 58, 605, 1001, - 594, 94, 94, 1447, 671, 1266, 1134, 681, 1567, 902, - 619, 1607, 642, 1661, 661, 611, 1662, 1087, 1660, 1583, - 45, 65, 64, 444, 1399, 54, 55, 43, 1133, 655, - 656, 897, 1622, 1575, 1573, 1353, 96, 97, 98, 796, - 826, 47, 48, 612, 49, 50, 51, 52, 1087, 670, - 669, 679, 680, 672, 673, 674, 675, 676, 677, 678, - 671, 658, 650, 681, 1371, 620, 621, 623, 591, 654, - 592, 982, 1138, 593, 860, 84, 1355, 661, 643, 625, - 1612, 691, 693, 694, 601, 602, 603, 1140, 1289, 63, - 1439, 1330, 982, 1328, 1195, 693, 694, 791, 653, 651, - 903, 652, 94, 610, 762, 295, 1170, 295, 295, 1668, - 94, 745, 1627, 1357, 85, 1361, 94, 1356, 1526, 1354, - 709, 932, 898, 1091, 1359, 659, 660, 658, 814, 61, - 1092, 1525, 1304, 1358, 63, 930, 931, 929, 1303, 1292, - 746, 928, 1629, 661, 1608, 1544, 1360, 1362, 674, 675, - 676, 677, 678, 671, 1523, 759, 681, 1669, 774, 724, - 726, 728, 730, 732, 734, 735, 1489, 725, 727, 827, - 731, 733, 588, 736, 1301, 747, 583, 597, 1207, 439, - 1006, 1007, 895, 604, 659, 660, 658, 887, 873, 606, - 434, 595, 1373, 1571, 1645, 840, 843, 844, 845, 846, - 847, 848, 661, 849, 850, 851, 852, 853, 828, 829, - 830, 831, 812, 813, 841, 418, 815, 1580, 816, 817, - 818, 819, 820, 821, 822, 823, 824, 825, 832, 833, - 834, 835, 836, 837, 838, 839, 1579, 659, 660, 658, - 1162, 1163, 1164, 295, 1305, 1003, 1435, 854, 1398, 660, - 658, 856, 94, 1089, 859, 661, 861, 295, 295, 94, - 94, 94, 659, 660, 658, 295, 661, 585, 586, 295, - 436, 437, 295, 880, 881, 1495, 295, 1221, 94, 1025, - 661, 1631, 418, 94, 94, 94, 295, 94, 94, 1002, - 1221, 842, 672, 673, 674, 675, 676, 677, 678, 671, - 94, 94, 681, 886, 70, 1184, 657, 1320, 659, 660, - 658, 1026, 884, 920, 922, 923, 1582, 96, 97, 98, - 921, 950, 757, 1571, 1620, 773, 661, 1026, 785, 669, - 679, 680, 672, 673, 674, 675, 676, 677, 678, 671, - 1398, 857, 681, 1316, 1317, 1318, 1443, 905, 864, 865, - 866, 1026, 949, 876, 96, 97, 98, 1183, 1273, 1182, - 1274, 951, 926, 418, 659, 660, 658, 885, 96, 97, - 98, 1060, 889, 890, 891, 94, 893, 894, 659, 660, - 658, 444, 661, 367, 366, 369, 370, 371, 372, 899, - 900, 1053, 368, 373, 904, 1201, 661, 1571, 418, 927, - 907, 1571, 1599, 1200, 970, 973, 1571, 1570, 94, 94, - 983, 1387, 965, 961, 1398, 1319, 960, 1515, 1514, 31, - 1324, 1321, 1312, 1322, 1315, 31, 1311, 94, 1501, 418, - 1313, 1314, 1014, 709, 295, 1498, 418, 94, 1445, 1444, - 1054, 295, 1056, 295, 1323, 996, 1441, 1442, 991, 992, - 1228, 295, 295, 295, 1551, 1008, 952, 953, 411, 94, - 1229, 962, 94, 804, 1441, 1440, 1014, 418, 1026, 418, - 1053, 657, 418, 94, 94, 61, 961, 862, 863, 1020, - 72, 61, 1334, 803, 802, 872, 1260, 1052, 1052, 785, - 1004, 1016, 879, 874, 788, 61, 1637, 1086, 1031, 1034, - 1035, 1036, 1032, 1533, 1033, 1037, 892, 1096, 1402, 1403, - 1041, 418, 1015, 1506, 61, 1116, 1018, 1431, 855, 1054, - 31, 1052, 1402, 1403, 1641, 1278, 1534, 1014, 1059, 295, - 94, 1055, 94, 1058, 1141, 1112, 1107, 1050, 295, 295, - 295, 295, 295, 406, 1117, 295, 295, 1075, 1118, 295, - 94, 670, 669, 679, 680, 672, 673, 674, 675, 676, - 677, 678, 671, 1014, 1106, 681, 1122, 295, 1654, 1103, - 1104, 1105, 1650, 295, 295, 295, 61, 1433, 1405, 295, - 94, 1387, 1306, 95, 908, 878, 1245, 296, 1408, 1407, - 296, 1246, 1242, 1113, 1114, 95, 1155, 296, 1243, 1247, - 1159, 1035, 1036, 1244, 1241, 1634, 1097, 1098, 1099, 1100, - 1379, 1210, 966, 967, 756, 1639, 972, 975, 976, 1124, - 1219, 1126, 1108, 1109, 1110, 95, 1218, 926, 95, 296, - 407, 296, 1378, 424, 995, 1209, 1296, 801, 608, 1153, - 1288, 990, 1614, 424, 993, 994, 1613, 425, 959, 1031, - 1034, 1035, 1036, 1032, 1017, 1033, 1037, 425, 760, 761, - 427, 1021, 426, 1024, 927, 1179, 1165, 749, 421, 422, - 427, 978, 426, 1049, 1549, 1286, 1125, 1280, 1493, 750, - 1529, 379, 30, 999, 877, 979, 295, 1039, 412, 413, - 415, 1492, 416, 1208, 1217, 72, 1491, 295, 295, 295, - 295, 295, 1216, 409, 1178, 1214, 1382, 1221, 638, 295, - 1189, 959, 30, 295, 411, 1235, 1186, 295, 1194, 1656, - 1655, 1656, 295, 295, 770, 763, 295, 295, 295, 744, - 444, 1596, 1521, 444, 1226, 1000, 70, 1223, 75, 1272, - 1213, 94, 67, 1222, 1072, 1275, 1, 317, 1224, 1123, - 1279, 410, 1230, 1648, 1284, 1284, 1457, 1530, 1143, 1144, - 1145, 1146, 1147, 1131, 884, 1150, 1151, 1237, 1238, 1152, - 1240, 1248, 1252, 1261, 1258, 1236, 1259, 1263, 1239, 1615, - 1267, 1564, 1264, 1424, 1078, 1069, 83, 1154, 1285, 571, - 82, 1606, 622, 94, 94, 1158, 1277, 1077, 1076, 1160, - 1295, 1572, 1297, 1298, 1299, 1290, 1281, 1282, 679, 680, - 672, 673, 674, 675, 676, 677, 678, 671, 1093, 1309, - 681, 1519, 1432, 94, 1287, 296, 1302, 1611, 809, 807, - 296, 808, 806, 811, 810, 805, 296, 310, 909, 327, - 1038, 797, 296, 1121, 764, 1325, 86, 1327, 94, 1293, - 1294, 1326, 1127, 95, 949, 1446, 1090, 307, 1174, 1175, - 632, 633, 95, 312, 280, 689, 1215, 1268, 1340, 445, - 438, 1393, 1341, 998, 95, 95, 1351, 1005, 1342, 1192, - 752, 1350, 1490, 1308, 1348, 1363, 295, 1381, 1193, 718, - 1364, 980, 779, 350, 919, 1370, 94, 365, 362, 1377, - 363, 1009, 94, 94, 1227, 961, 1388, 663, 960, 348, - 342, 778, 1339, 1488, 771, 1030, 1028, 1027, 1235, 784, - 1404, 1400, 777, 1013, 420, 977, 1385, 1391, 94, 1590, - 1484, 295, 419, 53, 34, 332, 646, 428, 28, 23, - 22, 986, 21, 1262, 20, 94, 1397, 94, 1406, 94, - 1413, 1423, 1284, 1284, 670, 669, 679, 680, 672, 673, - 674, 675, 676, 677, 678, 671, 19, 1438, 681, 25, - 1422, 18, 1414, 1086, 1416, 95, 1417, 295, 296, 17, - 296, 296, 1415, 95, 1427, 1429, 1430, 16, 596, 95, - 38, 627, 1436, 1437, 27, 26, 15, 295, 14, 13, - 627, 12, 1450, 94, 11, 1458, 94, 94, 94, 295, - 10, 9, 1072, 5, 30, 417, 4, 1451, 649, 1453, - 24, 707, 2, 0, 0, 0, 0, 690, 692, 0, - 0, 0, 0, 0, 0, 1463, 1464, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1472, 0, - 1467, 0, 0, 0, 0, 0, 0, 0, 705, 0, - 0, 0, 710, 711, 712, 713, 714, 715, 716, 717, - 0, 720, 723, 723, 723, 729, 723, 723, 729, 723, - 737, 738, 739, 740, 741, 742, 743, 1503, 1235, 1494, - 0, 0, 30, 94, 0, 0, 0, 1275, 0, 0, - 1502, 0, 94, 0, 0, 0, 1380, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 296, 1512, 780, 1349, - 94, 0, 0, 0, 0, 95, 0, 94, 1513, 0, - 296, 296, 95, 95, 95, 0, 0, 0, 296, 0, - 1374, 1537, 296, 0, 0, 296, 0, 1469, 1470, 296, - 1471, 95, 0, 1473, 0, 1475, 95, 95, 95, 296, - 95, 95, 0, 0, 1535, 0, 0, 1349, 0, 94, - 94, 0, 94, 95, 95, 0, 0, 94, 1548, 94, - 94, 94, 295, 1550, 1543, 0, 94, 1557, 0, 1558, - 1560, 1561, 1522, 1391, 1524, 0, 0, 1449, 1562, 1569, - 0, 0, 1556, 0, 94, 295, 1576, 0, 0, 1528, - 0, 0, 1563, 0, 1584, 0, 1072, 1452, 1072, 0, - 1516, 1577, 1536, 1578, 0, 0, 0, 1552, 0, 1462, - 0, 0, 0, 1597, 0, 0, 0, 1605, 0, 0, - 0, 0, 94, 0, 1604, 1603, 0, 0, 95, 1391, - 0, 0, 0, 94, 94, 0, 0, 0, 1619, 0, - 0, 1618, 0, 627, 1482, 0, 0, 0, 0, 94, - 627, 627, 627, 0, 1625, 0, 0, 344, 0, 0, - 295, 95, 95, 0, 0, 0, 1235, 0, 94, 627, - 0, 0, 0, 0, 627, 627, 627, 1633, 627, 627, - 95, 0, 0, 0, 0, 1638, 0, 296, 94, 1640, - 95, 627, 627, 0, 296, 0, 296, 0, 1642, 0, - 0, 1653, 0, 0, 296, 296, 296, 0, 1664, 0, - 0, 0, 95, 0, 0, 95, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 95, 95, 670, 669, - 679, 680, 672, 673, 674, 675, 676, 677, 678, 671, - 0, 0, 681, 665, 1072, 668, 0, 96, 97, 98, - 0, 682, 683, 684, 685, 686, 687, 688, 0, 666, - 667, 664, 670, 669, 679, 680, 672, 673, 674, 675, - 676, 677, 678, 671, 0, 0, 681, 376, 1532, 0, - 0, 0, 296, 95, 0, 95, 0, 0, 0, 0, - 0, 296, 296, 296, 296, 296, 0, 0, 296, 296, - 0, 299, 296, 95, 0, 1585, 0, 0, 1481, 0, - 302, 0, 0, 0, 0, 0, 0, 93, 311, 0, - 296, 0, 1487, 0, 0, 0, 296, 296, 296, 329, - 0, 0, 296, 95, 0, 0, 0, 0, 0, 0, - 0, 0, 1042, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 309, 0, 0, 0, 0, 0, 316, 446, - 0, 0, 575, 670, 669, 679, 680, 672, 673, 674, - 675, 676, 677, 678, 671, 0, 0, 681, 0, 0, - 1628, 0, 0, 0, 0, 0, 0, 0, 300, 0, - 0, 0, 670, 669, 679, 680, 672, 673, 674, 675, - 676, 677, 678, 671, 1532, 1072, 681, 0, 0, 0, - 0, 1480, 0, 0, 0, 313, 303, 0, 314, 315, - 322, 627, 0, 627, 306, 308, 319, 304, 305, 324, - 323, 0, 301, 321, 320, 0, 0, 0, 0, 296, - 0, 627, 0, 0, 0, 0, 0, 1479, 0, 0, - 296, 296, 296, 296, 296, 0, 0, 0, 0, 0, - 0, 0, 296, 0, 0, 0, 296, 0, 0, 0, - 296, 0, 0, 0, 0, 296, 296, 0, 0, 296, - 296, 296, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 95, 670, 669, 679, 680, 672, - 673, 674, 675, 676, 677, 678, 671, 0, 0, 681, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 0, 1176, 0, 0, 410, 0, 0, 0, 1343, 963, - 964, 670, 669, 679, 680, 672, 673, 674, 675, 676, - 677, 678, 671, 0, 0, 681, 95, 95, 670, 669, - 679, 680, 672, 673, 674, 675, 676, 677, 678, 671, - 0, 0, 681, 0, 0, 0, 0, 0, 997, 0, - 0, 0, 0, 0, 0, 0, 95, 780, 0, 0, - 0, 0, 0, 0, 1231, 1232, 0, 446, 780, 780, - 780, 780, 780, 0, 0, 0, 446, 0, 1171, 0, - 0, 95, 0, 0, 1042, 0, 1257, 0, 645, 647, - 0, 0, 0, 780, 0, 0, 0, 780, 670, 669, - 679, 680, 672, 673, 674, 675, 676, 677, 678, 671, - 0, 0, 681, 0, 0, 0, 0, 0, 0, 296, + 416, 1712, 1702, 1466, 1670, 1343, 1638, 1243, 1081, 1616, + 360, 1560, 1543, 1581, 1400, 1077, 1263, 1244, 1529, 389, + 425, 375, 1401, 759, 1053, 1436, 1397, 766, 1230, 719, + 1125, 1293, 73, 3, 1412, 588, 1090, 1080, 637, 912, + 94, 1406, 1362, 1179, 306, 620, 329, 306, 1310, 346, + 1050, 893, 94, 458, 306, 1320, 959, 71, 966, 1094, + 585, 804, 792, 1032, 787, 1055, 1039, 786, 797, 434, + 29, 419, 764, 936, 769, 362, 803, 584, 992, 776, + 1061, 907, 94, 69, 1121, 94, 306, 629, 306, 351, + 794, 358, 922, 801, 74, 68, 733, 1613, 8, 1459, + 7, 6, 1539, 1562, 609, 347, 304, 294, 350, 1705, + 292, 1667, 1147, 1700, 1646, 732, 342, 1693, 1467, 1666, + 1645, 1379, 1496, 593, 1430, 639, 1146, 76, 77, 78, + 79, 80, 81, 302, 298, 299, 300, 805, 31, 806, + 420, 62, 35, 36, 1431, 1432, 1072, 1073, 590, 1071, + 592, 440, 444, 1607, 681, 680, 690, 691, 683, 684, + 685, 686, 687, 688, 689, 682, 645, 646, 692, 652, + 349, 348, 96, 97, 98, 452, 969, 96, 97, 98, + 1363, 1301, 1111, 1145, 401, 1104, 407, 408, 405, 406, + 404, 403, 402, 1280, 1532, 1345, 1279, 1648, 647, 1281, + 409, 410, 648, 645, 646, 61, 1112, 455, 1487, 295, + 96, 97, 98, 1485, 339, 921, 341, 337, 881, 640, + 641, 1365, 650, 642, 1347, 878, 1699, 880, 1692, 1631, + 1639, 651, 1342, 1033, 1129, 293, 1142, 1139, 1140, 1439, + 1138, 1129, 1720, 635, 610, 923, 924, 925, 626, 1716, + 628, 1346, 1582, 1129, 1264, 1266, 296, 587, 1367, 882, + 1371, 301, 1366, 879, 1364, 1590, 1339, 1584, 595, 1369, + 446, 1348, 1341, 1149, 1152, 886, 1098, 655, 1368, 869, + 598, 1098, 625, 627, 1423, 1422, 1421, 591, 309, 297, + 1620, 1370, 1372, 306, 600, 601, 1159, 605, 306, 1158, + 611, 704, 705, 1511, 306, 1198, 1429, 1235, 1208, 1187, + 306, 618, 1067, 1144, 624, 1195, 1078, 780, 717, 616, + 692, 94, 1276, 96, 97, 98, 913, 96, 97, 98, + 94, 1011, 943, 1458, 1608, 1143, 1265, 682, 1583, 1330, + 692, 630, 94, 94, 672, 1644, 941, 942, 940, 1629, + 1105, 1112, 1599, 908, 1410, 599, 1381, 634, 807, 665, + 608, 837, 84, 622, 993, 602, 615, 603, 654, 636, + 604, 1649, 617, 871, 653, 623, 661, 1721, 1634, 1148, + 1714, 1450, 993, 1715, 1205, 1713, 1326, 1327, 1328, 1591, + 1589, 1340, 669, 1338, 1150, 1097, 671, 669, 666, 667, + 1097, 85, 1101, 631, 632, 612, 613, 614, 672, 1102, + 1299, 1694, 773, 672, 63, 681, 680, 690, 691, 683, + 684, 685, 686, 687, 688, 689, 682, 643, 914, 692, + 704, 705, 1695, 702, 594, 429, 1722, 1658, 1686, 1538, + 704, 705, 664, 94, 662, 663, 306, 756, 306, 306, + 1537, 94, 802, 1314, 757, 909, 1313, 94, 1329, 1687, + 825, 720, 621, 1334, 1331, 1322, 1332, 1325, 755, 1321, + 1302, 1697, 1180, 1323, 1324, 681, 680, 690, 691, 683, + 684, 685, 686, 687, 688, 689, 682, 1333, 1696, 692, + 1688, 670, 671, 669, 1172, 1173, 1174, 1678, 785, 736, + 738, 838, 742, 744, 770, 747, 1660, 1387, 784, 672, + 445, 796, 96, 97, 98, 1630, 961, 758, 735, 737, + 739, 741, 743, 745, 746, 596, 597, 851, 854, 855, + 856, 857, 858, 859, 450, 860, 861, 862, 863, 864, + 839, 840, 841, 842, 823, 824, 852, 1556, 826, 1388, + 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, + 843, 844, 845, 846, 847, 848, 849, 850, 683, 684, + 685, 686, 687, 688, 689, 682, 455, 61, 692, 931, + 933, 934, 1535, 1500, 306, 1389, 932, 1311, 865, 939, + 447, 448, 867, 94, 906, 870, 898, 872, 306, 306, + 94, 94, 94, 670, 671, 669, 306, 884, 768, 606, + 306, 1383, 429, 306, 891, 892, 1596, 306, 1595, 94, + 1446, 672, 70, 853, 94, 94, 94, 306, 94, 94, + 1099, 868, 96, 97, 98, 1231, 1283, 1409, 875, 876, + 877, 94, 94, 96, 97, 98, 815, 690, 691, 683, + 684, 685, 686, 687, 688, 689, 682, 896, 1231, 692, + 873, 874, 900, 901, 902, 897, 904, 905, 883, 1270, + 895, 1062, 796, 1587, 1698, 890, 1193, 72, 1192, 910, + 911, 1662, 429, 1507, 916, 1587, 1642, 1587, 429, 903, + 1587, 1621, 429, 960, 668, 937, 1036, 670, 671, 669, + 887, 1598, 962, 1454, 685, 686, 687, 688, 689, 682, + 1315, 1499, 692, 1587, 1586, 672, 94, 1527, 1526, 1409, + 1016, 1017, 1513, 429, 31, 915, 1510, 429, 670, 671, + 669, 1456, 1455, 1452, 1453, 1024, 981, 984, 918, 1452, + 1451, 1036, 994, 1013, 1024, 429, 672, 1025, 976, 94, + 94, 938, 681, 680, 690, 691, 683, 684, 685, 686, + 687, 688, 689, 682, 1036, 429, 692, 1063, 94, 971, + 1567, 972, 668, 429, 720, 306, 417, 1006, 94, 1063, + 31, 1194, 306, 1284, 306, 814, 813, 1018, 670, 671, + 669, 61, 306, 306, 306, 1035, 963, 964, 1012, 1070, + 94, 1398, 973, 94, 1409, 1238, 672, 442, 1211, 1024, + 1002, 1003, 1210, 1024, 94, 94, 95, 670, 671, 669, + 307, 422, 1062, 307, 1051, 1014, 1239, 1064, 95, 1066, + 307, 885, 1030, 799, 972, 672, 61, 1027, 1036, 1064, + 1026, 1062, 1679, 970, 1031, 31, 1034, 61, 1545, 1106, + 1096, 670, 671, 669, 1518, 1126, 1059, 1028, 95, 1442, + 866, 95, 307, 1288, 307, 1413, 1414, 352, 1122, 672, + 306, 94, 1117, 94, 1116, 1151, 1065, 1069, 1344, 306, + 306, 306, 306, 306, 1060, 1546, 306, 306, 61, 1493, + 306, 94, 1085, 1068, 1132, 1127, 1707, 1703, 977, 978, + 1444, 1128, 983, 986, 987, 1416, 970, 1398, 306, 1134, + 1419, 1136, 61, 1316, 306, 306, 306, 919, 889, 1255, + 306, 94, 1418, 1252, 1256, 455, 1251, 1001, 455, 1163, + 1004, 1005, 1133, 1253, 1257, 1683, 1045, 1046, 1254, 1082, + 1665, 1153, 1154, 1155, 1156, 1157, 1123, 1124, 1160, 1161, + 1390, 1220, 1162, 767, 1681, 1229, 1228, 1654, 1165, 1651, + 937, 1685, 1169, 378, 377, 380, 381, 382, 383, 1669, + 1164, 1671, 379, 384, 1677, 1676, 1617, 1615, 1168, 418, + 1306, 812, 1170, 619, 681, 680, 690, 691, 683, 684, + 685, 686, 687, 688, 689, 682, 1218, 1189, 692, 1041, + 1044, 1045, 1046, 1042, 1219, 1043, 1047, 1298, 989, 1413, + 1414, 1113, 1114, 1115, 1175, 760, 938, 1041, 1044, 1045, + 1046, 1042, 990, 1043, 1047, 1636, 306, 761, 1635, 1565, + 1217, 1296, 1290, 1505, 1541, 1009, 1135, 306, 306, 306, + 306, 306, 1224, 888, 420, 1188, 1245, 1049, 1227, 306, + 423, 424, 426, 306, 1690, 1689, 1226, 306, 1674, 1655, + 1236, 1504, 306, 306, 427, 1240, 306, 306, 306, 307, + 1204, 72, 1503, 1393, 307, 1231, 1233, 649, 1199, 1282, + 307, 94, 1709, 1708, 1709, 1262, 307, 1223, 1196, 1285, + 1289, 422, 781, 774, 1294, 1294, 1234, 95, 1618, 1232, + 1533, 435, 1247, 1248, 1246, 1250, 95, 1249, 1010, 70, + 75, 67, 1271, 1, 1258, 436, 1273, 328, 95, 95, + 1701, 895, 1268, 1269, 1468, 1272, 1295, 1305, 1542, 1307, + 1308, 1309, 1277, 94, 94, 1274, 1141, 771, 772, 438, + 1637, 437, 435, 1580, 1184, 1185, 1287, 1435, 1088, 1079, + 83, 582, 1291, 1292, 82, 1628, 436, 633, 1087, 1086, + 1588, 1300, 673, 94, 1103, 1202, 1312, 1531, 1443, 1297, + 1633, 820, 1318, 818, 1107, 1108, 1109, 1110, 432, 433, + 438, 819, 437, 817, 822, 821, 816, 1319, 94, 321, + 1118, 1119, 1120, 920, 960, 1335, 338, 1048, 352, 808, + 1131, 1349, 997, 775, 1350, 86, 1082, 730, 1351, 1337, + 1336, 1137, 1457, 1361, 1100, 318, 1360, 644, 323, 95, + 1352, 291, 307, 700, 307, 307, 306, 95, 1225, 1278, + 1380, 456, 449, 95, 762, 765, 94, 1374, 1404, 1675, + 1652, 1650, 94, 94, 1614, 1358, 1399, 1561, 1653, 1245, + 1373, 1612, 1684, 1668, 1008, 1015, 763, 1396, 1502, 1402, + 971, 1392, 972, 1203, 729, 991, 790, 361, 94, 930, + 376, 306, 1408, 373, 374, 1019, 428, 1237, 674, 359, + 353, 789, 782, 1040, 1417, 94, 1038, 94, 1391, 94, + 1303, 1304, 1294, 1294, 1037, 1434, 795, 1415, 1425, 1411, + 1427, 788, 1428, 1023, 431, 988, 1606, 1449, 1495, 1424, + 430, 53, 34, 1359, 343, 657, 439, 306, 28, 1447, + 1448, 1426, 1433, 1440, 1441, 1096, 1438, 23, 22, 21, + 20, 19, 25, 18, 1384, 17, 16, 306, 607, 38, + 27, 26, 15, 94, 14, 1469, 94, 94, 94, 306, + 13, 12, 11, 10, 9, 5, 4, 660, 24, 718, + 307, 1359, 2, 0, 0, 0, 0, 0, 0, 95, + 1461, 0, 0, 0, 307, 307, 95, 95, 95, 1460, + 0, 1478, 307, 0, 0, 1462, 307, 1464, 0, 307, + 0, 0, 0, 307, 0, 95, 1474, 1475, 1483, 1463, + 95, 95, 95, 307, 95, 95, 0, 0, 0, 0, + 1082, 1473, 1082, 0, 0, 0, 0, 95, 95, 0, + 1245, 0, 0, 0, 0, 0, 1506, 1515, 0, 0, + 899, 0, 0, 0, 94, 0, 1514, 0, 0, 0, + 0, 0, 1285, 94, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1524, 0, 1525, 0, 917, 0, 0, + 0, 94, 0, 0, 0, 0, 390, 30, 94, 0, + 0, 0, 0, 0, 0, 0, 926, 927, 928, 929, + 0, 0, 1549, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 0, 0, 0, 0, 30, 0, 1540, + 0, 0, 1547, 0, 0, 0, 0, 0, 0, 0, + 0, 94, 94, 0, 94, 0, 1555, 0, 0, 94, + 0, 94, 94, 94, 306, 95, 95, 1402, 94, 0, + 1566, 979, 980, 0, 1564, 1572, 421, 1573, 0, 1574, + 1576, 1577, 1568, 0, 95, 1579, 94, 306, 1578, 0, + 1593, 307, 1594, 1585, 95, 1592, 0, 0, 307, 1082, + 307, 0, 0, 0, 1600, 0, 0, 0, 307, 307, + 307, 1501, 0, 0, 0, 0, 95, 0, 0, 95, + 0, 0, 1619, 1627, 0, 0, 0, 1402, 94, 0, + 95, 95, 0, 1544, 1626, 1625, 0, 0, 0, 94, + 94, 0, 0, 0, 0, 0, 0, 0, 1641, 1601, + 0, 1640, 0, 0, 0, 1076, 0, 0, 0, 0, + 0, 94, 0, 0, 1647, 0, 1656, 0, 0, 1245, + 0, 0, 306, 0, 1534, 0, 1536, 0, 0, 0, + 94, 0, 0, 0, 0, 0, 307, 95, 1664, 95, + 0, 0, 0, 0, 1672, 307, 307, 307, 307, 307, + 1673, 0, 307, 307, 1548, 0, 307, 95, 1682, 1680, + 0, 0, 0, 1492, 1130, 0, 0, 0, 0, 0, + 94, 0, 0, 1559, 307, 0, 0, 0, 0, 0, + 307, 307, 307, 0, 1659, 0, 307, 95, 1691, 0, + 0, 0, 0, 0, 1706, 0, 0, 0, 0, 0, + 0, 1717, 1498, 0, 1480, 1481, 0, 1482, 0, 676, + 1484, 679, 1486, 0, 1544, 1082, 0, 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, 681, 680, 690, 691, 683, 684, 685, + 686, 687, 688, 689, 682, 0, 0, 692, 681, 680, + 690, 691, 683, 684, 685, 686, 687, 688, 689, 682, + 0, 0, 692, 0, 0, 0, 0, 638, 1528, 0, + 0, 355, 0, 0, 1491, 0, 638, 0, 0, 0, + 0, 1206, 307, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 307, 307, 307, 307, 307, 0, 0, + 1221, 1222, 765, 701, 703, 307, 0, 0, 0, 307, + 0, 0, 0, 307, 0, 0, 0, 0, 307, 307, + 0, 0, 307, 307, 307, 1490, 0, 0, 0, 0, + 0, 0, 0, 0, 716, 0, 0, 95, 721, 722, + 723, 724, 725, 726, 727, 728, 0, 731, 734, 734, + 734, 740, 734, 734, 740, 734, 748, 749, 750, 751, + 752, 753, 754, 0, 0, 0, 0, 0, 30, 681, + 680, 690, 691, 683, 684, 685, 686, 687, 688, 689, + 682, 0, 0, 692, 0, 0, 0, 0, 0, 95, + 95, 0, 0, 0, 791, 0, 0, 0, 0, 0, + 0, 974, 975, 0, 0, 0, 0, 0, 0, 387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 95, 95, 670, 669, 679, - 680, 672, 673, 674, 675, 676, 677, 678, 671, 0, - 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 296, 627, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, - 95, 0, 95, 0, 0, 0, 0, 0, 0, 767, - 0, 0, 0, 0, 627, 0, 0, 446, 0, 0, - 0, 0, 0, 798, 0, 0, 0, 431, 0, 0, - 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 296, 0, 0, 0, 0, 0, 95, 0, 0, 95, - 95, 95, 296, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1172, 0, 0, 0, 1173, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 341, 1180, 1181, - 0, 1392, 0, 30, 1187, 0, 0, 1190, 1191, 0, - 0, 0, 0, 0, 0, 1197, 0, 0, 0, 1199, - 0, 0, 1202, 1203, 1204, 1205, 1206, 0, 0, 0, - 0, 924, 780, 0, 933, 934, 935, 936, 937, 938, - 939, 940, 941, 942, 943, 944, 945, 946, 947, 0, + 681, 680, 690, 691, 683, 684, 685, 686, 687, 688, + 689, 682, 0, 0, 692, 0, 0, 0, 0, 0, + 1007, 0, 1353, 0, 95, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 340, 681, 680, 690, 691, 683, 684, 685, 686, + 687, 688, 689, 682, 0, 0, 692, 0, 0, 0, + 1181, 0, 307, 0, 0, 0, 0, 0, 0, 0, + 0, 457, 95, 1382, 586, 0, 0, 0, 95, 95, + 681, 680, 690, 691, 683, 684, 685, 686, 687, 688, + 689, 682, 0, 0, 692, 0, 0, 0, 0, 1394, + 0, 0, 0, 0, 95, 0, 0, 307, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, + 0, 95, 0, 95, 0, 95, 638, 638, 638, 681, + 680, 690, 691, 683, 684, 685, 686, 687, 688, 689, + 682, 0, 0, 692, 0, 638, 0, 0, 0, 0, + 638, 638, 638, 307, 638, 638, 680, 690, 691, 683, + 684, 685, 686, 687, 688, 689, 682, 638, 638, 692, + 0, 0, 0, 307, 0, 0, 0, 0, 0, 95, + 0, 0, 95, 95, 95, 307, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 706, 707, 708, 709, 710, + 711, 712, 713, 714, 715, 1182, 0, 0, 0, 1183, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1190, 1191, 0, 0, 0, 0, 1197, 0, 0, 1200, + 1201, 1497, 0, 0, 0, 0, 0, 1207, 0, 0, + 0, 1209, 0, 0, 1212, 1213, 1214, 1215, 1216, 0, + 95, 352, 0, 0, 0, 0, 0, 0, 1516, 95, + 0, 1517, 0, 0, 1519, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 457, 0, 0, 1260, 1261, 0, 0, 0, 1052, 457, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 656, 658, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 95, 0, + 95, 0, 0, 0, 0, 95, 0, 95, 95, 95, + 307, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 1563, 352, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 95, 307, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 638, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 778, 0, 0, 95, 95, 0, 0, 0, + 457, 0, 0, 0, 0, 0, 809, 1356, 1357, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 31, 32, 33, 62, 35, 36, 0, 0, 307, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 446, - 0, 0, 1250, 1251, 0, 0, 446, 446, 446, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, - 95, 987, 0, 0, 0, 446, 0, 0, 0, 0, - 446, 446, 446, 0, 446, 446, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 446, 446, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 95, 95, 0, 95, 0, 0, 0, 0, - 95, 1483, 95, 95, 95, 296, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 95, 296, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1508, 1509, 1510, 0, 377, 0, 0, 0, - 0, 0, 954, 0, 446, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 95, 1346, 1347, 984, 0, - 0, 0, 0, 0, 0, 0, 95, 95, 0, 0, - 0, 627, 0, 0, 0, 988, 989, 0, 0, 0, - 294, 0, 95, 325, 0, 0, 0, 0, 0, 0, - 294, 0, 0, 296, 1010, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 767, 0, 0, 446, 0, 0, - 0, 0, 0, 432, 432, 0, 0, 1392, 0, 30, - 0, 95, 294, 0, 294, 0, 446, 0, 0, 446, - 0, 662, 0, 0, 1409, 0, 0, 0, 0, 0, - 446, 575, 0, 0, 0, 0, 0, 0, 1166, 1167, - 1168, 1581, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 341, 0, 0, - 0, 0, 0, 1392, 0, 0, 719, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 446, 0, 446, - 0, 0, 0, 751, 754, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 446, 0, 0, + 66, 0, 0, 0, 0, 37, 56, 57, 0, 59, + 0, 0, 0, 0, 60, 0, 0, 1186, 0, 0, + 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 0, 46, 0, 1420, 935, 61, 0, 944, + 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 0, 0, 0, 0, 0, 0, + 0, 0, 791, 0, 0, 0, 0, 0, 0, 1241, + 1242, 0, 0, 791, 791, 791, 791, 791, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1052, + 0, 1267, 457, 0, 0, 0, 998, 0, 791, 457, + 457, 457, 791, 39, 40, 42, 41, 44, 0, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 457, 0, + 0, 0, 0, 457, 457, 457, 0, 457, 457, 0, + 0, 1477, 45, 65, 64, 1479, 0, 54, 55, 43, + 457, 457, 0, 0, 0, 0, 1488, 1489, 0, 0, + 0, 0, 0, 47, 48, 0, 49, 50, 51, 52, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 638, 0, 0, 0, 0, 0, 1508, 1509, 0, 1512, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1523, 0, 638, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 965, 0, 457, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 995, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 63, 0, 999, 1000, + 0, 0, 0, 0, 0, 0, 96, 97, 98, 0, + 0, 0, 0, 0, 0, 0, 0, 1020, 0, 0, + 0, 0, 0, 0, 0, 0, 1403, 778, 30, 0, + 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1575, 0, 0, 0, 0, 0, 457, + 0, 0, 457, 1176, 1177, 1178, 0, 791, 388, 0, + 310, 0, 0, 457, 586, 0, 0, 0, 0, 313, + 0, 0, 0, 1602, 1603, 1604, 1605, 322, 1609, 0, + 1610, 1611, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1622, 0, 1623, + 1624, 0, 305, 0, 0, 336, 0, 0, 0, 0, + 0, 320, 305, 0, 0, 0, 0, 327, 0, 0, + 457, 0, 457, 0, 0, 0, 0, 0, 0, 1643, + 0, 0, 0, 0, 0, 443, 443, 0, 0, 0, + 457, 0, 0, 0, 305, 0, 305, 311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1466, 0, 0, 0, 1468, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1477, 1478, 1161, 0, 0, + 1661, 0, 0, 0, 0, 0, 1494, 0, 0, 0, + 1171, 0, 0, 0, 324, 314, 0, 325, 326, 333, + 0, 0, 0, 317, 319, 330, 315, 316, 335, 334, + 0, 312, 332, 331, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1520, 1521, + 1522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1651, 0, - 0, 0, 0, 0, 1496, 1497, 0, 1500, 0, 0, + 0, 0, 0, 1718, 1719, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 294, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 294, - 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 995, 0, 0, 0, 0, + 0, 0, 1354, 1355, 1403, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1375, 1376, 0, + 1377, 1378, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1385, 1386, 0, 0, 0, 0, 1597, 0, + 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 984, 0, 0, 0, 0, 0, 0, + 0, 305, 0, 0, 1403, 0, 305, 0, 0, 0, + 0, 0, 305, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1344, 1345, - 1559, 0, 0, 0, 0, 0, 0, 0, 0, 888, - 0, 0, 0, 1365, 1366, 0, 1367, 1368, 446, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1375, 1376, - 1586, 1587, 1588, 1589, 0, 1593, 906, 1594, 1595, 0, + 0, 0, 1317, 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1600, 0, 1601, 1602, 0, 915, 916, 917, 918, 0, - 0, 0, 0, 0, 0, 0, 0, 432, 0, 0, - 1307, 446, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 294, 1621, 294, 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 0, 0, 0, 0, 0, 0, 1630, 0, 0, - 968, 969, 0, 0, 0, 0, 1434, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, + 1445, 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, 446, 0, 0, 1665, - 1666, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1465, 0, 446, 0, 0, 984, 0, 0, 1394, - 1396, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1396, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, - 0, 0, 446, 0, 446, 0, 1426, 0, 0, 0, - 0, 0, 0, 294, 294, 0, 0, 0, 0, 0, - 0, 294, 0, 0, 0, 294, 0, 0, 294, 0, - 0, 0, 883, 1120, 0, 0, 0, 0, 0, 0, - 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 457, 0, + 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1454, 0, 0, 1459, 1460, 1461, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 457, 1704, 0, 995, 0, + 443, 1405, 1407, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 305, 0, 305, 798, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1538, 1539, 1540, - 1541, 1542, 0, 0, 0, 1545, 1546, 0, 0, 0, + 0, 0, 0, 0, 457, 0, 457, 0, 1437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 984, 0, 0, 0, - 0, 0, 432, 883, 0, 0, 0, 432, 432, 0, - 0, 432, 432, 432, 0, 0, 0, 985, 0, 0, - 446, 0, 0, 0, 0, 0, 0, 0, 0, 1518, - 1196, 0, 0, 0, 0, 0, 432, 432, 432, 432, - 432, 0, 0, 0, 0, 0, 0, 446, 0, 0, - 1211, 1212, 754, 0, 446, 0, 0, 0, 0, 0, - 294, 0, 0, 0, 0, 0, 883, 294, 0, 294, - 0, 0, 0, 0, 0, 0, 0, 294, 1047, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1553, 1554, 0, 1555, - 0, 0, 0, 0, 1518, 0, 1518, 1518, 1518, 0, - 0, 0, 0, 1426, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1657, - 0, 1518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, - 0, 0, 0, 0, 294, 294, 294, 294, 294, 1610, - 0, 294, 294, 0, 0, 294, 0, 0, 0, 0, - 446, 446, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 984, 0, 1626, 0, 0, 1156, - 1157, 294, 0, 0, 0, 294, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1632, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1518, 0, 0, 0, 0, - 0, 0, 0, 1372, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 432, 432, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1383, - 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, + 0, 0, 1465, 0, 0, 1470, 1471, 1472, 0, 0, + 0, 0, 1550, 1551, 1552, 1553, 1554, 0, 0, 0, + 1557, 1558, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 305, 305, 0, 995, + 0, 0, 0, 0, 305, 0, 0, 0, 305, 0, + 0, 305, 0, 0, 0, 894, 0, 0, 0, 0, + 0, 0, 0, 457, 0, 305, 0, 0, 0, 0, + 0, 0, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 432, 294, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 985, 294, 294, 294, 294, 294, 0, 0, - 0, 0, 0, 0, 0, 1249, 0, 0, 0, 294, - 0, 0, 0, 1047, 0, 0, 0, 0, 294, 294, - 0, 0, 294, 1265, 883, 0, 0, 0, 0, 0, + 457, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1569, 1570, 0, 1571, 0, 0, 0, 0, 1530, 0, + 1530, 1530, 1530, 0, 0, 443, 894, 1437, 0, 0, + 443, 443, 0, 0, 443, 443, 443, 0, 0, 0, + 996, 0, 0, 0, 0, 1530, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 443, + 443, 443, 443, 443, 0, 0, 1710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 305, 0, 0, 0, 1632, 0, 894, + 305, 0, 305, 0, 0, 0, 0, 0, 457, 457, + 305, 1057, 305, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 995, 0, + 1657, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 341, 0, 0, 0, 0, 0, 0, 1504, 0, 0, - 1505, 0, 0, 1507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 432, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 305, 1530, + 0, 0, 0, 0, 0, 0, 0, 305, 305, 305, + 305, 305, 0, 0, 305, 305, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, + 0, 0, 1166, 1167, 305, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 985, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1547, - 341, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 443, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 294, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 985, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1047, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 294, 0, 0, 557, 545, 0, 0, 501, 560, - 474, 491, 568, 492, 495, 532, 459, 514, 188, 489, - 0, 478, 454, 485, 455, 476, 503, 129, 507, 473, - 547, 517, 559, 158, 0, 479, 534, 228, 122, 165, - 566, 161, 523, 0, 236, 176, 0, 0, 0, 505, - 549, 512, 542, 500, 533, 464, 522, 561, 490, 530, - 562, 0, 0, 985, 96, 97, 98, 0, 1073, 1074, - 0, 0, 0, 0, 0, 118, 294, 527, 556, 487, - 529, 531, 570, 453, 524, 0, 457, 460, 567, 552, - 482, 483, 1276, 0, 0, 0, 0, 0, 0, 504, - 513, 539, 498, 0, 0, 0, 0, 0, 0, 0, - 0, 480, 0, 521, 0, 0, 0, 461, 458, 0, - 0, 0, 0, 502, 0, 0, 0, 463, 0, 481, - 540, 0, 451, 138, 544, 551, 499, 297, 555, 497, - 496, 558, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 548, 477, 486, 123, - 484, 217, 195, 257, 520, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 456, 0, 237, - 260, 279, 116, 472, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 468, 471, 466, 467, 515, 516, 563, 564, 565, - 541, 462, 0, 469, 470, 0, 546, 553, 554, 519, - 99, 108, 160, 276, 210, 134, 261, 452, 465, 127, - 475, 0, 0, 488, 493, 494, 506, 508, 509, 510, - 511, 518, 525, 526, 528, 535, 536, 537, 538, 543, - 550, 569, 101, 102, 109, 115, 121, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 557, 545, 0, 0, 501, 560, 474, 491, 568, - 492, 495, 532, 459, 514, 188, 489, 0, 478, 454, - 485, 455, 476, 503, 129, 507, 473, 547, 517, 559, - 158, 0, 479, 534, 228, 122, 165, 566, 161, 523, - 0, 236, 176, 0, 0, 0, 505, 549, 512, 542, - 500, 533, 464, 522, 561, 490, 530, 562, 0, 0, - 0, 96, 97, 98, 0, 1073, 1074, 0, 0, 0, - 0, 0, 118, 0, 527, 556, 487, 529, 531, 570, - 453, 524, 0, 457, 460, 567, 552, 482, 483, 0, - 0, 0, 0, 0, 0, 0, 504, 513, 539, 498, - 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, - 521, 0, 0, 0, 461, 458, 0, 0, 0, 0, - 502, 0, 0, 0, 463, 0, 481, 540, 0, 451, - 138, 544, 551, 499, 297, 555, 497, 496, 558, 207, - 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, - 185, 215, 219, 548, 477, 486, 123, 484, 217, 195, - 257, 520, 197, 216, 162, 246, 208, 256, 266, 267, - 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, - 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, - 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, - 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, - 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, - 178, 177, 179, 0, 456, 0, 237, 260, 279, 116, - 472, 244, 271, 274, 0, 209, 117, 137, 131, 204, - 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, - 163, 212, 277, 194, 218, 120, 259, 235, 468, 471, - 466, 467, 515, 516, 563, 564, 565, 541, 462, 0, - 469, 470, 0, 546, 553, 554, 519, 99, 108, 160, - 276, 210, 134, 261, 452, 465, 127, 475, 0, 0, - 488, 493, 494, 506, 508, 509, 510, 511, 518, 525, - 526, 528, 535, 536, 537, 538, 543, 550, 569, 101, - 102, 109, 115, 121, 126, 130, 133, 139, 143, 146, - 148, 149, 150, 153, 166, 169, 170, 171, 172, 182, - 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, - 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, - 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, - 247, 248, 258, 265, 268, 141, 255, 269, 557, 545, - 0, 0, 501, 560, 474, 491, 568, 492, 495, 532, - 459, 514, 188, 489, 0, 478, 454, 485, 455, 476, - 503, 129, 507, 473, 547, 517, 559, 158, 0, 479, - 534, 228, 122, 165, 566, 161, 523, 0, 236, 176, - 0, 0, 0, 505, 549, 512, 542, 500, 533, 464, - 522, 561, 490, 530, 562, 61, 0, 0, 96, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, - 0, 527, 556, 487, 529, 531, 570, 453, 524, 0, - 457, 460, 567, 552, 482, 483, 0, 0, 0, 0, - 0, 0, 0, 504, 513, 539, 498, 0, 0, 0, - 0, 0, 0, 0, 0, 480, 0, 521, 0, 0, - 0, 461, 458, 0, 0, 0, 0, 502, 0, 0, - 0, 463, 0, 481, 540, 0, 451, 138, 544, 551, - 499, 297, 555, 497, 496, 558, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 548, 477, 486, 123, 484, 217, 195, 257, 520, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 456, 0, 237, 260, 279, 116, 472, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 468, 471, 466, 467, 515, - 516, 563, 564, 565, 541, 462, 0, 469, 470, 0, - 546, 553, 554, 519, 99, 108, 160, 276, 210, 134, - 261, 452, 465, 127, 475, 0, 0, 488, 493, 494, - 506, 508, 509, 510, 511, 518, 525, 526, 528, 535, - 536, 537, 538, 543, 550, 569, 101, 102, 109, 115, - 121, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 557, 545, 0, 0, 501, - 560, 474, 491, 568, 492, 495, 532, 459, 514, 188, - 489, 0, 478, 454, 485, 455, 476, 503, 129, 507, - 473, 547, 517, 559, 158, 0, 479, 534, 228, 122, - 165, 566, 161, 523, 0, 236, 176, 0, 0, 0, - 505, 549, 512, 542, 500, 533, 464, 522, 561, 490, - 530, 562, 0, 0, 0, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 527, 556, - 487, 529, 531, 570, 453, 524, 0, 457, 460, 567, - 552, 482, 483, 0, 0, 0, 0, 0, 0, 0, - 504, 513, 539, 498, 0, 0, 0, 0, 0, 0, - 1384, 0, 480, 0, 521, 0, 0, 0, 461, 458, - 0, 0, 0, 0, 502, 0, 0, 0, 463, 0, - 481, 540, 0, 451, 138, 544, 551, 499, 297, 555, - 497, 496, 558, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 548, 477, 486, - 123, 484, 217, 195, 257, 520, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 456, 0, - 237, 260, 279, 116, 472, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 468, 471, 466, 467, 515, 516, 563, 564, - 565, 541, 462, 0, 469, 470, 0, 546, 553, 554, - 519, 99, 108, 160, 276, 210, 134, 261, 452, 465, - 127, 475, 0, 0, 488, 493, 494, 506, 508, 509, - 510, 511, 518, 525, 526, 528, 535, 536, 537, 538, - 543, 550, 569, 101, 102, 109, 115, 121, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 557, 545, 0, 0, 501, 560, 474, 491, - 568, 492, 495, 532, 459, 514, 188, 489, 0, 478, - 454, 485, 455, 476, 503, 129, 507, 473, 547, 517, - 559, 158, 0, 479, 534, 228, 122, 165, 566, 161, - 523, 0, 236, 176, 0, 0, 0, 505, 549, 512, - 542, 500, 533, 464, 522, 561, 490, 530, 562, 0, - 0, 0, 96, 97, 98, 0, 0, 0, 0, 0, - 0, 0, 0, 118, 0, 527, 556, 487, 529, 531, - 570, 453, 524, 0, 457, 460, 567, 552, 482, 483, - 0, 0, 0, 0, 0, 0, 0, 504, 513, 539, - 498, 0, 0, 0, 0, 0, 0, 1266, 0, 480, - 0, 521, 0, 0, 0, 461, 458, 0, 0, 0, - 0, 502, 0, 0, 0, 463, 0, 481, 540, 0, - 451, 138, 544, 551, 499, 297, 555, 497, 496, 558, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 548, 477, 486, 123, 484, 217, - 195, 257, 520, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 456, 0, 237, 260, 279, - 116, 472, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 468, - 471, 466, 467, 515, 516, 563, 564, 565, 541, 462, - 0, 469, 470, 0, 546, 553, 554, 519, 99, 108, - 160, 276, 210, 134, 261, 452, 465, 127, 475, 0, - 0, 488, 493, 494, 506, 508, 509, 510, 511, 518, - 525, 526, 528, 535, 536, 537, 538, 543, 550, 569, - 101, 102, 109, 115, 121, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 557, - 545, 0, 0, 501, 560, 474, 491, 568, 492, 495, - 532, 459, 514, 188, 489, 0, 478, 454, 485, 455, - 476, 503, 129, 507, 473, 547, 517, 559, 158, 0, - 479, 534, 228, 122, 165, 566, 161, 523, 0, 236, - 176, 0, 0, 0, 505, 549, 512, 542, 500, 533, - 464, 522, 561, 490, 530, 562, 0, 0, 0, 96, - 97, 98, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 527, 556, 487, 529, 531, 570, 453, 524, - 0, 457, 460, 567, 552, 482, 483, 0, 0, 0, - 0, 0, 0, 0, 504, 513, 539, 498, 0, 0, - 0, 0, 0, 0, 1019, 0, 480, 0, 521, 0, - 0, 0, 461, 458, 0, 0, 0, 0, 502, 0, - 0, 0, 463, 0, 481, 540, 0, 451, 138, 544, - 551, 499, 297, 555, 497, 496, 558, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 548, 477, 486, 123, 484, 217, 195, 257, 520, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 456, 0, 237, 260, 279, 116, 472, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 468, 471, 466, 467, - 515, 516, 563, 564, 565, 541, 462, 0, 469, 470, - 0, 546, 553, 554, 519, 99, 108, 160, 276, 210, - 134, 261, 452, 465, 127, 475, 0, 0, 488, 493, - 494, 506, 508, 509, 510, 511, 518, 525, 526, 528, - 535, 536, 537, 538, 543, 550, 569, 101, 102, 109, - 115, 121, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 557, 545, 0, 0, - 501, 560, 474, 491, 568, 492, 495, 532, 459, 514, - 188, 489, 0, 478, 454, 485, 455, 476, 503, 129, - 507, 473, 547, 517, 559, 158, 0, 479, 534, 228, - 122, 165, 566, 161, 523, 0, 236, 176, 0, 0, - 0, 505, 549, 512, 542, 500, 533, 464, 522, 561, - 490, 530, 562, 0, 0, 0, 96, 97, 98, 0, - 0, 0, 0, 0, 0, 0, 0, 118, 0, 527, - 556, 487, 529, 531, 570, 453, 524, 0, 457, 460, - 567, 552, 482, 483, 0, 0, 0, 0, 0, 0, - 0, 504, 513, 539, 498, 0, 0, 0, 0, 0, - 0, 0, 0, 480, 0, 521, 0, 0, 0, 461, - 458, 0, 0, 0, 0, 502, 0, 0, 0, 463, - 0, 481, 540, 0, 451, 138, 544, 551, 499, 297, - 555, 497, 496, 558, 207, 0, 240, 142, 157, 114, - 154, 100, 110, 0, 140, 185, 215, 219, 548, 477, - 486, 123, 484, 217, 195, 257, 520, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 456, - 0, 237, 260, 279, 116, 472, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 468, 471, 466, 467, 515, 516, 563, - 564, 565, 541, 462, 0, 469, 470, 0, 546, 553, - 554, 519, 99, 108, 160, 276, 210, 134, 261, 452, - 465, 127, 475, 0, 0, 488, 493, 494, 506, 508, - 509, 510, 511, 518, 525, 526, 528, 535, 536, 537, - 538, 543, 550, 569, 101, 102, 109, 115, 121, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 557, 545, 0, 0, 501, 560, 474, - 491, 568, 492, 495, 532, 459, 514, 188, 489, 0, - 478, 454, 485, 455, 476, 503, 129, 507, 473, 547, - 517, 559, 158, 0, 479, 534, 228, 122, 165, 566, - 161, 523, 0, 236, 176, 0, 0, 0, 505, 549, - 512, 542, 500, 533, 464, 522, 561, 490, 530, 562, - 0, 0, 0, 96, 97, 98, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 0, 527, 556, 487, 529, - 531, 570, 453, 524, 0, 457, 460, 567, 552, 482, - 483, 0, 0, 0, 0, 0, 0, 0, 504, 513, - 539, 498, 0, 0, 0, 0, 0, 0, 0, 0, - 480, 0, 521, 0, 0, 0, 461, 458, 0, 0, - 0, 0, 502, 0, 0, 0, 463, 0, 481, 540, - 0, 451, 138, 544, 551, 499, 297, 555, 497, 496, - 558, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 548, 477, 486, 123, 484, - 217, 195, 257, 520, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 449, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 456, 0, 237, 260, - 279, 116, 472, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 450, 448, 443, - 442, 155, 163, 212, 277, 194, 218, 120, 259, 235, - 468, 471, 466, 467, 515, 516, 563, 564, 565, 541, - 462, 0, 469, 470, 0, 546, 553, 554, 519, 99, - 108, 160, 276, 210, 134, 261, 452, 465, 127, 475, - 0, 0, 488, 493, 494, 506, 508, 509, 510, 511, - 518, 525, 526, 528, 535, 536, 537, 538, 543, 550, - 569, 101, 102, 109, 115, 121, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, - 557, 545, 0, 0, 501, 560, 474, 491, 568, 492, - 495, 532, 459, 514, 188, 489, 0, 478, 454, 485, - 455, 476, 503, 129, 507, 473, 547, 517, 559, 158, - 0, 479, 534, 228, 122, 165, 566, 161, 523, 0, - 236, 176, 0, 0, 0, 505, 549, 512, 542, 500, - 533, 464, 522, 561, 490, 530, 562, 0, 0, 0, - 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 0, 527, 556, 487, 529, 531, 570, 453, - 524, 0, 457, 460, 567, 552, 482, 483, 0, 0, - 0, 0, 0, 0, 0, 504, 513, 539, 498, 0, - 0, 0, 0, 0, 0, 0, 0, 480, 0, 521, - 0, 0, 0, 461, 458, 0, 0, 0, 0, 502, - 0, 0, 0, 463, 0, 481, 540, 0, 451, 138, - 544, 551, 499, 297, 555, 497, 496, 558, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 548, 477, 486, 123, 484, 217, 195, 257, - 520, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 789, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 449, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 456, 0, 237, 260, 279, 116, 472, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 450, 448, 443, 442, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 468, 471, 466, - 467, 515, 516, 563, 564, 565, 541, 462, 0, 469, - 470, 0, 546, 553, 554, 519, 99, 108, 160, 276, - 210, 134, 261, 452, 465, 127, 475, 0, 0, 488, - 493, 494, 506, 508, 509, 510, 511, 518, 525, 526, - 528, 535, 536, 537, 538, 543, 550, 569, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 557, 545, 0, - 0, 501, 560, 474, 491, 568, 492, 495, 532, 459, - 514, 188, 489, 0, 478, 454, 485, 455, 476, 503, - 129, 507, 473, 547, 517, 559, 158, 0, 479, 534, - 228, 122, 165, 566, 161, 523, 0, 236, 176, 0, - 0, 0, 505, 549, 512, 542, 500, 533, 464, 522, - 561, 490, 530, 562, 0, 0, 0, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, - 527, 556, 487, 529, 531, 570, 453, 524, 0, 457, - 460, 567, 552, 482, 483, 0, 0, 0, 0, 0, - 0, 0, 504, 513, 539, 498, 0, 0, 0, 0, - 0, 0, 0, 0, 480, 0, 521, 0, 0, 0, - 461, 458, 0, 0, 0, 0, 502, 0, 0, 0, - 463, 0, 481, 540, 0, 451, 138, 544, 551, 499, - 297, 555, 497, 496, 558, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 548, - 477, 486, 123, 484, 217, 195, 257, 520, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 440, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 449, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 456, 0, 237, 260, 279, 116, 472, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 450, 448, 443, 442, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 468, 471, 466, 467, 515, 516, - 563, 564, 565, 541, 462, 0, 469, 470, 0, 546, - 553, 554, 519, 99, 108, 160, 276, 210, 134, 261, - 452, 465, 127, 475, 0, 0, 488, 493, 494, 506, - 508, 509, 510, 511, 518, 525, 526, 528, 535, 536, - 537, 538, 543, 550, 569, 101, 102, 109, 115, 121, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 956, 0, 346, - 0, 0, 0, 129, 0, 345, 0, 0, 0, 158, - 0, 957, 0, 228, 122, 165, 389, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, - 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, - 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, - 343, 360, 0, 388, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 357, 358, 430, 0, 0, 0, 403, - 0, 359, 0, 0, 352, 353, 355, 354, 356, 361, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 402, 0, 0, 297, 0, 0, 400, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 390, 401, 396, - 397, 394, 395, 393, 392, 391, 404, 382, 383, 384, - 385, 387, 0, 398, 399, 386, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, - 0, 0, 346, 0, 0, 0, 129, 0, 345, 0, - 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, - 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, - 380, 381, 0, 0, 0, 0, 0, 0, 1064, 0, - 61, 0, 0, 96, 97, 98, 367, 366, 369, 370, - 371, 372, 0, 0, 118, 368, 373, 374, 375, 1065, - 0, 0, 0, 343, 360, 0, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 357, 358, 0, 0, - 0, 0, 403, 0, 359, 0, 0, 352, 353, 355, - 354, 356, 361, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 402, 0, 0, 297, 0, 0, 400, - 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, - 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, - 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, - 390, 401, 396, 397, 394, 395, 393, 392, 391, 404, - 382, 383, 384, 385, 387, 0, 398, 399, 386, 99, - 108, 160, 276, 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, - 188, 0, 0, 0, 0, 346, 0, 0, 0, 129, - 0, 345, 0, 0, 0, 158, 0, 0, 0, 228, - 122, 165, 389, 161, 0, 0, 236, 176, 0, 0, - 0, 0, 0, 380, 381, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 418, 96, 97, 98, 367, - 366, 369, 370, 371, 372, 0, 0, 118, 368, 373, - 374, 375, 0, 0, 0, 0, 343, 360, 0, 388, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 357, - 358, 0, 0, 0, 0, 403, 0, 359, 0, 0, - 352, 353, 355, 354, 356, 361, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 402, 0, 0, 297, - 0, 0, 400, 0, 207, 0, 240, 142, 157, 114, - 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, - 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 0, - 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 390, 401, 396, 397, 394, 395, 393, - 392, 391, 404, 382, 383, 384, 385, 387, 0, 398, - 399, 386, 99, 108, 160, 276, 210, 134, 261, 0, - 0, 127, 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, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 188, 0, 0, 0, 0, 346, 0, - 0, 0, 129, 0, 345, 0, 0, 0, 158, 0, - 0, 0, 228, 122, 165, 389, 161, 0, 0, 236, - 176, 0, 0, 0, 0, 0, 380, 381, 0, 0, - 0, 0, 0, 0, 0, 0, 61, 0, 0, 96, - 97, 98, 367, 366, 369, 370, 371, 372, 0, 0, - 118, 368, 373, 374, 375, 0, 0, 0, 0, 343, - 360, 0, 388, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 357, 358, 430, 0, 0, 0, 403, 0, - 359, 0, 0, 352, 353, 355, 354, 356, 361, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 402, - 0, 0, 297, 0, 0, 400, 0, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 0, 0, 237, 260, 279, 116, 0, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 390, 401, 396, 397, - 394, 395, 393, 392, 391, 404, 382, 383, 384, 385, - 387, 0, 398, 399, 386, 99, 108, 160, 276, 210, - 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, - 0, 346, 0, 0, 0, 129, 0, 345, 0, 0, - 0, 158, 0, 0, 0, 228, 122, 165, 389, 161, - 0, 0, 236, 176, 0, 0, 0, 0, 0, 380, - 381, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 0, 96, 97, 98, 367, 974, 369, 370, 371, - 372, 0, 0, 118, 368, 373, 374, 375, 0, 0, - 0, 0, 343, 360, 0, 388, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 357, 358, 430, 0, 0, - 0, 403, 0, 359, 0, 0, 352, 353, 355, 354, - 356, 361, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 402, 0, 0, 297, 0, 0, 400, 0, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 0, 0, 237, 260, 279, - 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 390, - 401, 396, 397, 394, 395, 393, 392, 391, 404, 382, - 383, 384, 385, 387, 0, 398, 399, 386, 99, 108, - 160, 276, 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, - 0, 0, 0, 0, 346, 0, 0, 0, 129, 0, - 345, 0, 0, 0, 158, 0, 0, 0, 228, 122, - 165, 389, 161, 0, 0, 236, 176, 0, 0, 0, - 0, 0, 380, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 0, 96, 97, 98, 367, 971, - 369, 370, 371, 372, 0, 0, 118, 368, 373, 374, - 375, 0, 0, 0, 0, 343, 360, 0, 388, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 357, 358, - 430, 0, 0, 0, 403, 0, 359, 0, 0, 352, - 353, 355, 354, 356, 361, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 402, 0, 0, 297, 0, - 0, 400, 0, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, - 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 0, 0, - 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 390, 401, 396, 397, 394, 395, 393, 392, - 391, 404, 382, 383, 384, 385, 387, 0, 398, 399, - 386, 99, 108, 160, 276, 210, 134, 261, 0, 0, - 127, 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, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 411, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, - 346, 0, 0, 0, 129, 0, 345, 0, 0, 0, - 158, 0, 0, 0, 228, 122, 165, 389, 161, 0, - 0, 236, 176, 0, 0, 0, 0, 0, 380, 381, - 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, - 0, 96, 97, 98, 367, 366, 369, 370, 371, 372, - 0, 0, 118, 368, 373, 374, 375, 0, 0, 0, - 0, 343, 360, 0, 388, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 357, 358, 0, 0, 0, 0, - 403, 0, 359, 0, 0, 352, 353, 355, 354, 356, - 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 402, 0, 0, 297, 0, 0, 400, 0, 207, - 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, - 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, - 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, - 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, - 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, - 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, - 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, - 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, - 178, 177, 179, 0, 0, 0, 237, 260, 279, 116, - 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, - 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, - 163, 212, 277, 194, 218, 120, 259, 235, 390, 401, - 396, 397, 394, 395, 393, 392, 391, 404, 382, 383, - 384, 385, 387, 0, 398, 399, 386, 99, 108, 160, - 276, 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, - 148, 149, 150, 153, 166, 169, 170, 171, 172, 182, - 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, - 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, - 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, - 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, - 0, 0, 0, 346, 0, 0, 0, 129, 0, 345, - 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, - 389, 161, 0, 0, 236, 176, 0, 0, 0, 0, - 0, 380, 381, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 96, 97, 98, 367, 366, 369, - 370, 371, 372, 0, 0, 118, 368, 373, 374, 375, - 0, 0, 0, 0, 343, 360, 0, 388, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 357, 358, 0, - 0, 0, 0, 403, 0, 359, 0, 0, 352, 353, - 355, 354, 356, 361, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 138, 402, 0, 0, 297, 0, 0, - 400, 0, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, - 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 0, 0, 237, - 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 390, 401, 396, 397, 394, 395, 393, 392, 391, - 404, 382, 383, 384, 385, 387, 0, 398, 399, 386, - 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, - 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, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, - 228, 122, 165, 389, 161, 0, 0, 236, 176, 0, - 0, 0, 0, 0, 380, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 61, 0, 0, 96, 97, 98, - 367, 366, 369, 370, 371, 372, 0, 0, 118, 368, - 373, 374, 375, 0, 0, 0, 0, 0, 360, 0, - 388, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 357, 358, 0, 0, 0, 0, 403, 0, 359, 0, - 0, 352, 353, 355, 354, 356, 361, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 402, 0, 0, - 297, 0, 0, 400, 0, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, - 0, 0, 123, 0, 217, 195, 257, 1658, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 390, 401, 396, 397, 394, 395, - 393, 392, 391, 404, 382, 383, 384, 385, 387, 0, - 398, 399, 386, 99, 108, 160, 276, 210, 134, 261, - 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 102, 109, 115, 121, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, - 0, 0, 0, 228, 122, 165, 389, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 380, 381, 0, - 0, 0, 0, 0, 0, 0, 0, 61, 0, 418, - 96, 97, 98, 367, 366, 369, 370, 371, 372, 0, - 0, 118, 368, 373, 374, 375, 0, 0, 0, 0, - 0, 360, 0, 388, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 357, 358, 0, 0, 0, 0, 403, - 0, 359, 0, 0, 352, 353, 355, 354, 356, 361, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 402, 0, 0, 297, 0, 0, 400, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 390, 401, 396, - 397, 394, 395, 393, 392, 391, 404, 382, 383, 384, - 385, 387, 0, 398, 399, 386, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 158, 0, 0, 0, 228, 122, 165, 389, - 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, - 380, 381, 0, 0, 0, 0, 0, 0, 0, 0, - 61, 0, 0, 96, 97, 98, 367, 366, 369, 370, - 371, 372, 0, 0, 118, 368, 373, 374, 375, 0, - 0, 0, 0, 0, 360, 0, 388, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 357, 358, 0, 0, - 0, 0, 403, 0, 359, 0, 0, 352, 353, 355, - 354, 356, 361, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 402, 0, 0, 297, 0, 0, 400, - 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, - 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, - 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, - 390, 401, 396, 397, 394, 395, 393, 392, 391, 404, - 382, 383, 384, 385, 387, 0, 398, 399, 386, 99, - 108, 160, 276, 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, - 122, 165, 0, 161, 0, 0, 236, 176, 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, 670, 669, 679, 680, 672, - 673, 674, 675, 676, 677, 678, 671, 0, 0, 681, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 297, - 0, 0, 0, 0, 207, 0, 240, 142, 157, 114, - 154, 100, 110, 0, 140, 185, 215, 219, 0, 0, - 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 0, - 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 99, 108, 160, 276, 210, 134, 261, 0, - 0, 127, 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, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 188, 0, 0, 0, 766, 0, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, - 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, - 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, - 97, 98, 0, 768, 0, 0, 0, 0, 0, 0, - 118, 0, 0, 0, 0, 0, 659, 660, 658, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 0, 0, 237, 260, 279, 116, 0, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 108, 160, 276, 210, - 134, 261, 0, 0, 127, 0, 0, 0, 0, 0, + 0, 0, 0, 443, 305, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 996, 305, 305, 305, 305, 305, + 0, 0, 0, 0, 0, 0, 0, 1259, 0, 0, + 0, 305, 0, 0, 0, 1057, 0, 0, 0, 0, + 305, 305, 0, 0, 305, 1275, 894, 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, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, - 0, 0, 236, 176, 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, 138, 90, 91, 0, 87, 0, 0, 0, 92, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 0, 0, 237, 260, 279, - 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 0, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, - 160, 276, 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 1088, - 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, - 165, 0, 161, 0, 0, 236, 176, 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, 443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 894, 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, 0, 996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 0, 1087, 297, 0, - 0, 0, 1083, 1081, 0, 1082, 142, 157, 578, 154, - 100, 110, 1079, 1085, 185, 215, 219, 0, 0, 0, - 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 0, 0, - 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 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, 99, 108, 160, 276, 210, 134, 261, 0, 0, - 127, 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, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 188, 0, 0, 0, 1046, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, - 98, 0, 1048, 0, 0, 0, 0, 0, 0, 118, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, - 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 108, 160, 276, 210, 134, - 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, - 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 996, 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, 138, 0, 0, 0, 297, 0, 0, - 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, - 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 0, 0, 237, - 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, 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, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 188, 0, 0, 0, 1046, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, - 228, 122, 165, 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, - 0, 1048, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 305, 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, 996, 96, 97, + 98, 0, 1083, 1084, 0, 0, 0, 0, 0, 118, + 305, 538, 567, 498, 540, 542, 581, 464, 535, 0, + 468, 471, 578, 563, 493, 494, 1286, 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, + 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, 1395, 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, 1276, 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, + 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, 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, 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, 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, 138, 0, 0, 0, - 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, - 0, 0, 123, 0, 217, 195, 257, 0, 1044, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 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, 1711, + 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, 99, 108, 160, 276, 210, 134, 261, - 0, 0, 127, 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, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 141, 255, 269, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, - 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 97, 98, 0, 0, 1011, 0, 0, 1012, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, - 0, 0, 0, 297, 0, 0, 0, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 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, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 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, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 800, 0, - 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, - 161, 0, 0, 236, 176, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 97, 98, 0, 799, 0, 0, - 0, 0, 0, 0, 118, 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, 138, 0, 0, 0, 297, 0, 0, 0, - 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, - 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, - 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, + 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, 0, 0, 99, - 108, 160, 276, 210, 134, 261, 0, 0, 127, 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, 101, 102, 109, 115, 121, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 0, 0, 0, 0, 0, 158, 0, 0, 0, 228, - 122, 165, 0, 161, 0, 0, 236, 176, 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, 572, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 0, 0, 297, - 0, 0, 0, 0, 207, 0, 240, 142, 157, 578, - 154, 100, 110, 576, 140, 185, 215, 219, 0, 0, - 0, 123, 0, 217, 195, 257, 0, 197, 216, 162, - 246, 208, 256, 266, 267, 243, 264, 275, 233, 103, - 242, 254, 119, 227, 0, 0, 0, 105, 252, 239, - 174, 151, 152, 104, 0, 213, 128, 136, 125, 187, - 249, 250, 124, 278, 111, 263, 107, 112, 262, 181, - 245, 253, 175, 168, 106, 251, 173, 167, 156, 132, - 144, 205, 164, 206, 145, 178, 177, 179, 0, 0, - 0, 237, 260, 279, 116, 0, 244, 271, 274, 0, - 209, 117, 137, 131, 204, 135, 159, 270, 272, 273, - 180, 113, 147, 234, 155, 163, 212, 277, 194, 218, - 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 99, 108, 160, 276, 210, 134, 261, 0, - 0, 127, 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, 126, - 130, 133, 139, 143, 146, 148, 149, 150, 153, 166, - 169, 170, 171, 172, 182, 183, 184, 186, 189, 190, - 191, 192, 193, 196, 198, 199, 200, 201, 202, 203, - 211, 214, 220, 221, 222, 223, 224, 225, 226, 229, - 230, 231, 232, 238, 241, 247, 248, 258, 265, 268, - 141, 255, 269, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 158, 0, - 0, 0, 228, 122, 165, 0, 161, 0, 0, 236, - 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 418, 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, 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, 138, 0, - 0, 0, 297, 0, 0, 0, 0, 207, 0, 240, - 142, 157, 114, 154, 100, 110, 0, 140, 185, 215, - 219, 0, 0, 0, 123, 0, 217, 195, 257, 0, - 197, 216, 162, 246, 208, 256, 266, 267, 243, 264, - 275, 233, 103, 242, 254, 119, 227, 0, 0, 0, - 105, 252, 239, 174, 151, 152, 104, 0, 213, 128, - 136, 125, 187, 249, 250, 124, 278, 111, 263, 107, - 112, 262, 181, 245, 253, 175, 168, 106, 251, 173, - 167, 156, 132, 144, 205, 164, 206, 145, 178, 177, - 179, 0, 0, 0, 237, 260, 279, 116, 0, 244, - 271, 274, 0, 209, 117, 137, 131, 204, 135, 159, - 270, 272, 273, 180, 113, 147, 234, 155, 163, 212, - 277, 194, 218, 120, 259, 235, 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, 99, 108, 160, 276, 210, - 134, 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, 148, 149, - 150, 153, 166, 169, 170, 171, 172, 182, 183, 184, - 186, 189, 190, 191, 192, 193, 196, 198, 199, 200, - 201, 202, 203, 211, 214, 220, 221, 222, 223, 224, - 225, 226, 229, 230, 231, 232, 238, 241, 247, 248, - 258, 265, 268, 141, 255, 269, 188, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 158, 0, 0, 0, 228, 122, 165, 0, 161, - 0, 0, 236, 176, 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, 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, 138, 0, 0, 0, 297, 0, 0, 0, 0, - 207, 0, 240, 142, 157, 114, 154, 100, 110, 0, - 140, 185, 215, 219, 0, 0, 0, 123, 0, 217, - 195, 257, 0, 197, 216, 162, 246, 208, 256, 266, - 267, 243, 264, 275, 233, 103, 242, 254, 119, 227, - 0, 0, 0, 105, 252, 239, 174, 151, 152, 104, - 0, 213, 128, 136, 125, 187, 249, 250, 124, 278, - 111, 263, 107, 112, 262, 181, 245, 253, 175, 168, - 106, 251, 173, 167, 156, 132, 144, 205, 164, 206, - 145, 178, 177, 179, 0, 0, 0, 237, 260, 279, - 116, 0, 244, 271, 274, 0, 209, 117, 137, 131, - 204, 135, 159, 270, 272, 273, 180, 113, 147, 234, - 155, 163, 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 108, - 160, 276, 210, 134, 261, 0, 0, 127, 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, - 101, 102, 109, 115, 121, 126, 130, 133, 139, 143, - 146, 148, 149, 150, 153, 166, 169, 170, 171, 172, - 182, 183, 184, 186, 189, 190, 191, 192, 193, 196, - 198, 199, 200, 201, 202, 203, 211, 214, 220, 221, - 222, 223, 224, 225, 226, 229, 230, 231, 232, 238, - 241, 247, 248, 258, 265, 268, 141, 255, 269, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 0, 0, 0, 0, 158, 0, 0, 0, 228, 122, - 165, 0, 161, 0, 0, 236, 176, 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, 0, 0, 0, 0, 96, 97, 98, 0, 1048, - 0, 0, 0, 0, 0, 0, 118, 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, 0, 138, 0, 0, 0, 297, 0, - 0, 0, 0, 207, 0, 240, 142, 157, 114, 154, - 100, 110, 0, 140, 185, 215, 219, 0, 0, 0, - 123, 0, 217, 195, 257, 0, 197, 216, 162, 246, - 208, 256, 266, 267, 243, 264, 275, 233, 103, 242, - 254, 119, 227, 0, 0, 0, 105, 252, 239, 174, - 151, 152, 104, 0, 213, 128, 136, 125, 187, 249, - 250, 124, 278, 111, 263, 107, 112, 262, 181, 245, - 253, 175, 168, 106, 251, 173, 167, 156, 132, 144, - 205, 164, 206, 145, 178, 177, 179, 0, 0, 0, - 237, 260, 279, 116, 0, 244, 271, 274, 0, 209, - 117, 137, 131, 204, 135, 159, 270, 272, 273, 180, - 113, 147, 234, 155, 163, 212, 277, 194, 218, 120, - 259, 235, 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, - 0, 99, 108, 160, 276, 210, 134, 261, 0, 0, - 127, 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, 101, 102, 109, 115, 121, 126, 130, - 133, 139, 143, 146, 148, 149, 150, 153, 166, 169, - 170, 171, 172, 182, 183, 184, 186, 189, 190, 191, - 192, 193, 196, 198, 199, 200, 201, 202, 203, 211, - 214, 220, 221, 222, 223, 224, 225, 226, 229, 230, - 231, 232, 238, 241, 247, 248, 258, 265, 268, 141, - 255, 269, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, + 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, 768, 0, 0, 0, 0, 0, 0, 118, + 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, 138, 0, 0, - 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 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, 160, 276, 210, 134, - 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 782, 0, 0, 0, 0, - 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 158, 0, 0, - 0, 228, 122, 165, 0, 161, 0, 0, 236, 176, + 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, 96, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 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, 0, 138, 0, 0, - 0, 297, 0, 0, 0, 0, 207, 0, 240, 142, - 157, 114, 154, 100, 110, 0, 140, 185, 215, 219, - 0, 0, 0, 123, 0, 217, 195, 257, 0, 197, - 216, 162, 246, 208, 256, 266, 267, 243, 264, 275, - 233, 103, 242, 254, 119, 227, 0, 0, 0, 105, - 252, 239, 174, 151, 152, 104, 0, 213, 128, 136, - 125, 187, 249, 250, 124, 278, 111, 263, 107, 112, - 262, 181, 245, 253, 175, 168, 106, 251, 173, 167, - 156, 132, 144, 205, 164, 206, 145, 178, 177, 179, - 0, 0, 0, 237, 260, 279, 116, 0, 244, 271, - 274, 0, 209, 117, 137, 131, 204, 135, 159, 270, - 272, 273, 180, 113, 147, 234, 155, 163, 212, 277, - 194, 218, 120, 259, 235, 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, 99, 108, 160, 276, 210, 134, - 261, 0, 0, 127, 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, 126, 130, 133, 139, 143, 146, 148, 149, 150, - 153, 166, 169, 170, 171, 172, 182, 183, 184, 186, - 189, 190, 191, 192, 193, 196, 198, 199, 200, 201, - 202, 203, 211, 214, 220, 221, 222, 223, 224, 225, - 226, 229, 230, 231, 232, 238, 241, 247, 248, 258, - 265, 268, 141, 255, 269, 188, 0, 0, 0, 0, - 0, 0, 0, 772, 129, 0, 0, 0, 0, 0, - 158, 0, 0, 0, 228, 122, 165, 0, 161, 0, - 0, 236, 176, 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, 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, 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, - 138, 0, 0, 0, 297, 0, 0, 0, 0, 207, - 0, 240, 142, 157, 114, 154, 100, 110, 0, 140, - 185, 215, 219, 0, 0, 0, 123, 0, 217, 195, - 257, 0, 197, 216, 162, 246, 208, 256, 266, 267, - 243, 264, 275, 233, 103, 242, 254, 119, 227, 0, - 0, 0, 105, 252, 239, 174, 151, 152, 104, 0, - 213, 128, 136, 125, 187, 249, 250, 124, 278, 111, - 263, 107, 112, 262, 181, 245, 253, 175, 168, 106, - 251, 173, 167, 156, 132, 144, 205, 164, 206, 145, - 178, 177, 179, 0, 0, 0, 237, 260, 279, 116, - 0, 244, 271, 274, 0, 209, 117, 137, 131, 204, - 135, 159, 270, 272, 273, 180, 113, 147, 234, 155, - 163, 212, 277, 194, 218, 120, 259, 235, 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, - 0, 0, 0, 0, 0, 0, 0, 99, 108, 160, - 276, 210, 134, 261, 0, 0, 127, 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, 101, - 102, 109, 115, 121, 126, 130, 133, 139, 143, 146, - 148, 149, 150, 153, 166, 169, 170, 171, 172, 182, - 183, 184, 186, 189, 190, 191, 192, 193, 196, 198, - 199, 200, 201, 202, 203, 211, 214, 220, 221, 222, - 223, 224, 225, 226, 229, 230, 231, 232, 238, 241, - 247, 248, 258, 265, 268, 141, 255, 269, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 0, 158, 0, 0, 0, 228, 122, 165, - 0, 161, 0, 0, 236, 176, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 96, 97, 98, 0, 648, 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, 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, 138, 0, 0, 0, 297, 0, 0, - 0, 0, 207, 0, 240, 142, 157, 114, 154, 100, - 110, 0, 140, 185, 215, 219, 0, 0, 0, 123, - 0, 217, 195, 257, 0, 197, 216, 162, 246, 208, - 256, 266, 267, 243, 264, 275, 233, 103, 242, 254, - 119, 227, 0, 0, 0, 105, 252, 239, 174, 151, - 152, 104, 0, 213, 128, 136, 125, 187, 249, 250, - 124, 278, 111, 263, 107, 112, 262, 181, 245, 253, - 175, 168, 106, 251, 173, 167, 156, 132, 144, 205, - 164, 206, 145, 178, 177, 179, 0, 0, 0, 237, - 260, 279, 116, 0, 244, 271, 274, 0, 209, 117, - 137, 131, 204, 135, 159, 270, 272, 273, 180, 113, - 147, 234, 155, 163, 212, 277, 194, 218, 120, 259, - 235, 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, - 99, 108, 160, 276, 210, 134, 261, 0, 0, 127, 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, 101, 102, 109, 115, 121, 126, 130, 133, - 139, 143, 146, 148, 149, 150, 153, 166, 169, 170, - 171, 172, 182, 183, 184, 186, 189, 190, 191, 192, - 193, 196, 198, 199, 200, 201, 202, 203, 211, 214, - 220, 221, 222, 223, 224, 225, 226, 229, 230, 231, - 232, 238, 241, 247, 248, 258, 265, 268, 141, 255, - 269, 188, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 0, 0, 158, 0, 0, 0, - 228, 122, 165, 0, 161, 0, 0, 236, 176, 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, @@ -2687,69 +2679,144 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 334, 0, 138, 0, 0, 0, - 297, 0, 0, 0, 0, 207, 0, 240, 142, 157, - 114, 154, 100, 110, 0, 140, 185, 215, 219, 0, - 0, 0, 123, 0, 217, 195, 257, 0, 197, 216, - 162, 246, 208, 256, 266, 267, 243, 264, 275, 233, - 103, 242, 254, 119, 227, 0, 0, 0, 105, 252, - 239, 174, 151, 152, 104, 0, 213, 128, 136, 125, - 187, 249, 250, 124, 278, 111, 263, 107, 112, 262, - 181, 245, 253, 175, 168, 106, 251, 173, 167, 156, - 132, 144, 205, 164, 206, 145, 178, 177, 179, 0, - 0, 0, 237, 260, 279, 116, 0, 244, 271, 274, - 0, 209, 117, 137, 131, 204, 135, 159, 270, 272, - 273, 180, 113, 147, 234, 155, 163, 212, 277, 194, - 218, 120, 259, 235, 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, 160, 276, 210, 134, 261, - 0, 0, 127, 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, - 126, 130, 133, 139, 143, 146, 148, 149, 150, 153, - 166, 169, 170, 171, 172, 182, 183, 184, 186, 189, - 190, 191, 192, 193, 196, 198, 199, 200, 201, 202, - 203, 211, 214, 220, 221, 222, 223, 224, 225, 226, - 229, 230, 231, 232, 238, 241, 247, 248, 258, 265, - 268, 333, 255, 269, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 158, - 0, 0, 0, 228, 122, 165, 0, 161, 0, 0, - 236, 176, 0, 0, 0, 0, 0, 0, 0, 0, + 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, - 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, - 0, 118, 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, 138, - 0, 292, 0, 297, 0, 0, 0, 0, 207, 0, - 240, 142, 157, 114, 154, 100, 110, 0, 140, 185, - 215, 219, 0, 0, 0, 123, 0, 217, 195, 257, - 0, 197, 216, 162, 246, 208, 256, 266, 267, 243, - 264, 275, 233, 103, 242, 254, 119, 227, 0, 0, - 0, 105, 252, 239, 174, 151, 152, 104, 0, 213, - 128, 136, 125, 187, 249, 250, 124, 278, 111, 263, - 107, 112, 262, 181, 245, 253, 175, 168, 106, 251, - 173, 167, 156, 132, 144, 205, 164, 206, 145, 178, - 177, 179, 0, 0, 0, 237, 260, 279, 116, 0, - 244, 271, 274, 0, 209, 117, 137, 131, 204, 135, - 159, 270, 272, 273, 180, 113, 147, 234, 155, 163, - 212, 277, 194, 218, 120, 259, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 99, 108, 160, 276, - 210, 134, 261, 0, 0, 127, 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, 0, 101, 102, - 109, 115, 121, 126, 130, 133, 139, 143, 146, 148, - 149, 150, 153, 166, 169, 170, 171, 172, 182, 183, - 184, 186, 189, 190, 191, 192, 193, 196, 198, 199, - 200, 201, 202, 203, 211, 214, 220, 221, 222, 223, - 224, 225, 226, 229, 230, 231, 232, 238, 241, 247, - 248, 258, 265, 268, 141, 255, 269, 188, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 158, 0, 0, 0, 228, 122, 165, 0, - 161, 0, 0, 236, 176, 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, 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, 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, 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, @@ -2758,43 +2825,80 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 0, 0, 297, 0, 0, 0, - 0, 207, 0, 240, 142, 157, 114, 154, 100, 110, - 0, 140, 185, 215, 219, 0, 0, 0, 123, 0, - 217, 195, 257, 0, 197, 216, 162, 246, 208, 256, - 266, 267, 243, 264, 275, 233, 103, 242, 254, 119, - 227, 0, 0, 0, 105, 252, 239, 174, 151, 152, - 104, 0, 213, 128, 136, 125, 187, 249, 250, 124, - 278, 111, 263, 107, 112, 262, 181, 245, 253, 175, - 168, 106, 251, 173, 167, 156, 132, 144, 205, 164, - 206, 145, 178, 177, 179, 0, 0, 0, 237, 260, - 279, 116, 0, 244, 271, 274, 0, 209, 117, 137, - 131, 204, 135, 159, 270, 272, 273, 180, 113, 147, - 234, 155, 163, 212, 277, 194, 218, 120, 259, 235, + 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, 160, 276, 210, 134, 261, 0, 0, 127, 0, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 101, 102, 109, 115, 121, 126, 130, 133, 139, - 143, 146, 148, 149, 150, 153, 166, 169, 170, 171, - 172, 182, 183, 184, 186, 189, 190, 191, 192, 193, - 196, 198, 199, 200, 201, 202, 203, 211, 214, 220, - 221, 222, 223, 224, 225, 226, 229, 230, 231, 232, - 238, 241, 247, 248, 258, 265, 268, 141, 255, 269, + 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, } var yyPact = [...]int{ - 193, -1000, -279, 1061, -1000, -1000, -1000, -1000, -1000, -1000, + 2394, -1000, -289, 1104, -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, 1009, - 844, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 343, 12217, - 6, 143, 28, 17885, 142, 1632, 18238, -1000, 18, -1000, - 7, 18238, 11, 17532, -1000, -1000, -54, -63, -1000, 10099, - 921, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 782, - 997, 1002, 1005, 629, 951, -1000, 8674, 8674, 114, 114, - 114, 7262, -1000, -1000, 14701, 18238, 135, 18238, -138, 112, - 112, 112, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1055, + 839, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 289, 12793, + -39, 142, -13, 18637, 141, 2610, 19001, -1000, 26, -1000, + 18, 19001, 22, 18273, -1000, -1000, -75, -76, -1000, 10609, + 940, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 815, + 1029, 1034, 1047, 617, 1120, -1000, 9140, 9140, 119, 119, + 119, 7684, -1000, -1000, 15354, 19001, 139, 19001, -159, 116, + 116, 116, -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, -1000, -1000, @@ -2813,23 +2917,25 @@ 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, - 137, 18238, 633, 633, 270, 452, 18238, 106, 633, 106, - 106, 106, 18238, -1000, 203, -1000, -1000, -1000, 18238, 633, - 937, 332, 110, 239, 239, 239, -1000, 260, -1000, 4693, - 37, 33, -61, 1025, 30, -5, -1000, 332, 4693, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 119, -1000, -1000, - 18238, 17179, 148, 306, -1000, -1000, -1000, -1000, -1000, -1000, - 573, 373, -1000, 10099, 1608, 763, 763, -1000, -1000, 159, - -1000, -1000, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, - 11158, 11158, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 763, 195, -1000, 9746, - 763, 763, 763, 763, 763, 763, 763, 763, 10099, 763, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 133, 19001, 567, 567, 226, 529, 19001, 92, 567, + 92, 92, 92, 19001, -1000, 183, -1000, -1000, -1000, 19001, + 567, 952, 350, 101, 229, 229, 229, -1000, 209, -1000, + 5038, 34, 38, -48, 1064, 36, -15, -1000, 350, 5038, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 127, -1000, + -1000, 19001, 17909, 132, 255, -1000, -1000, -1000, -1000, -1000, + -1000, 620, 398, -1000, 10609, 1623, 763, 763, -1000, -1000, + 164, -1000, -1000, 11701, 11701, 11701, 11701, 11701, 11701, 11701, + 11701, 11701, 11701, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 763, 182, -1000, + 10245, 763, 763, 763, 763, 763, 763, 763, 763, 10609, 763, 763, 763, 763, 763, 763, 763, 763, 763, 763, - 763, 763, 763, 763, 763, -1000, -1000, 1047, 1009, -1000, - 844, -1000, -1000, -1000, 977, 10099, 10099, 1009, -1000, 901, - 8674, -1000, -1000, 941, -1000, -1000, -1000, -1000, 359, 1043, - -1000, 11864, 190, 1042, 16826, -1000, 15407, 16473, 761, 6895, - -84, -1000, -1000, -1000, 276, 14348, -1000, -1000, -1000, 936, + 763, 763, 763, 763, 763, 763, -1000, -1000, -1000, 1055, + -1000, 839, -1000, -1000, -1000, 995, 10609, 10609, 1055, -1000, + 899, 9140, -1000, -1000, 1079, -1000, -1000, -1000, -1000, 326, + 1081, -1000, 12429, 181, 1080, 17545, -1000, 16082, 17181, 759, + 7306, -127, -1000, -1000, -1000, 254, 14990, -1000, -1000, -1000, + 950, -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, -1000, -1000, -1000, @@ -2841,194 +2947,199 @@ 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, 711, 19001, -1000, -1000, 330, 567, -1000, 787, + -1000, 567, 5038, 130, 567, 277, 567, 19001, 19001, 5038, + 5038, 5038, 42, 80, 71, 19001, 527, 757, 125, 19001, + 1019, 847, 19001, 567, 567, -1000, 6550, -1000, 5038, 350, + -1000, 516, 10609, 5038, 5038, 5038, 19001, 5038, 5038, -1000, + 514, -1000, -1000, 341, -1000, -1000, -1000, -1000, -1000, -1000, + 5038, 5038, 314, 341, 314, -1000, -1000, -1000, -1000, 10609, + 229, -1000, 846, -1000, -1000, 21, -1000, -1000, -1000, -1000, + -1000, 1104, -1000, -1000, -1000, -136, -1000, -1000, 10609, 10609, + 10609, 10609, 490, 233, 11701, 504, 234, 11701, 11701, 11701, + 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, 11701, + 11701, 11701, 436, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 567, -1000, 1085, 884, 884, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 12065, 8048, 6550, 617, 698, + 1055, 9140, 9140, 10609, 10609, 9868, 9504, 9140, 986, 264, + 398, 19001, -1000, -1000, 11337, -1000, -1000, -1000, -1000, -1000, + 537, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19001, 19001, + 9140, 9140, 9140, 9140, 9140, -1000, 1034, 617, 1079, 1008, + 1098, 217, 724, 751, -1000, 695, 1034, 14626, 735, -1000, + 1079, -1000, -1000, -1000, 19001, -1000, -1000, 16810, -1000, -1000, + 6172, 19001, 56, 19001, -1000, 764, 956, -1000, -1000, -1000, + 1024, 13898, 14262, 19001, 767, 755, -1000, -1000, 176, 6928, + -127, -1000, 6928, 725, -1000, -116, -121, 8412, 187, -1000, + -1000, -1000, -1000, 4660, 13157, 555, 313, -57, -1000, -1000, + -1000, 776, -1000, 776, 776, 776, 776, -11, -11, -11, + -11, -1000, -1000, -1000, -1000, -1000, 801, 799, -1000, 776, + 776, 776, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 750, 18238, -1000, -1000, 339, 633, -1000, 786, -1000, - 633, 4693, 124, 633, 319, 633, 18238, 18238, 4693, 4693, - 4693, 42, 73, 72, 18238, 449, 760, 118, 18238, 990, - 855, 18238, 633, 633, -1000, 6161, -1000, 4693, 332, -1000, - 448, 10099, 4693, 4693, 4693, 18238, 4693, 4693, -1000, 443, - -1000, -1000, 349, -1000, -1000, -1000, -1000, -1000, -1000, 4693, - 4693, 327, 349, 327, -1000, -1000, -1000, -1000, 10099, 239, - -1000, 854, -1000, -1000, 10, -1000, -1000, -1000, -1000, -1000, - 1061, -1000, -1000, -1000, -130, -1000, -1000, 10099, 10099, 10099, - 10099, 565, 244, 11158, 397, 364, 11158, 11158, 11158, 11158, - 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, 11158, - 11158, 582, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 633, -1000, 1038, 645, 645, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 11511, 7615, 6161, 629, 738, 1009, - 8674, 8674, 10099, 10099, 9380, 9027, 8674, 979, 312, 373, - 18238, -1000, -1000, 10805, -1000, -1000, -1000, -1000, -1000, 481, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 18238, 18238, 8674, - 8674, 8674, 8674, 8674, 926, 1002, 629, 941, 986, 1055, - 226, 556, 757, -1000, 485, 1002, 13995, 830, -1000, 941, - -1000, -1000, -1000, 18238, -1000, -1000, 16113, -1000, -1000, 5794, - 18238, 55, 18238, -1000, 578, 929, -1000, -1000, -1000, 994, - 13289, 13642, 18238, 788, 709, -1000, -1000, 189, 6528, -84, - -1000, 6528, 638, -1000, -120, -114, 7968, 198, -1000, -1000, - -1000, -1000, 4326, 12570, 519, 375, -48, -1000, -1000, -1000, - 775, -1000, 775, 775, 775, 775, -17, -17, -17, -17, - -1000, -1000, -1000, -1000, -1000, 832, 804, -1000, 775, 775, - 775, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 803, - 803, 803, 783, 783, 81, 10099, 835, -1000, 18238, 4693, - 982, 4693, -1000, 130, -1000, -1000, -1000, 18238, 18238, 18238, - 18238, 18238, 162, -1000, 18238, 18238, 754, -1000, 18238, 4693, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 373, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 18238, -1000, -1000, -1000, - -1000, 332, 18238, 18238, 18238, 332, 373, -1000, 18238, 18238, - -1000, -1000, -1000, -1000, -1000, 373, 244, 496, 307, -1000, - -1000, 492, -1000, -1000, 2003, -1000, -1000, -1000, -1000, 397, - 11158, 11158, 11158, 275, 2003, 1964, 1032, 554, 199, 368, - 368, 219, 219, 219, 219, 219, 514, 514, -1000, -1000, - -1000, 481, -1000, -1000, -1000, 481, 8674, 8674, 699, 763, - 187, -1000, 782, -1000, -1000, 1002, 733, 733, 626, 612, - 299, 1034, 733, 286, 1028, 733, 733, 8674, -1000, -1000, - 333, -1000, 10099, 481, -1000, 184, -1000, 777, 670, 662, - 733, 481, 481, 733, 733, 439, 977, -1000, -1000, 928, - -1000, 896, 10099, 10099, 10099, -1000, -1000, -1000, 977, 1012, - -1000, 915, 909, 1024, 8674, 15407, 941, -1000, -1000, -1000, - 180, 1024, 749, 763, -1000, 18238, 15407, 15407, 15407, 15407, - 15407, -1000, 884, 872, -1000, 878, 866, 879, 18238, -1000, - 735, 629, 13289, 178, 763, -1000, 15760, -1000, -1000, 55, - 755, 15407, 18238, -1000, -1000, 15407, 18238, 5427, -1000, 638, - -84, -88, -1000, -1000, -1000, -1000, 373, -1000, 619, 627, - 3959, -1000, -1000, -1000, -1000, 86, -1000, -1000, 793, 633, - -1000, 978, 241, 210, 633, 976, -1000, -1000, -1000, -1000, - 940, -1000, 340, -50, -1000, -1000, 399, -17, -17, -1000, - -1000, 198, 935, 198, 198, 198, 435, 435, -1000, -1000, - -1000, -1000, 398, -1000, -1000, -1000, 392, -1000, -1000, 786, - 510, 852, 18238, 4693, -1000, -1000, -1000, -1000, 608, 608, - 284, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 52, 751, -1000, -1000, -1000, -1000, 16, 41, - 117, -1000, 4693, -1000, 327, -1000, -1000, -1000, 327, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 275, 2003, 1894, -1000, - 11158, 11158, -1000, -1000, 733, 733, 8674, 6161, 1009, 977, - -1000, -1000, 246, 582, 246, 11158, 11158, -1000, 11158, 11158, - -1000, -156, 794, 302, -1000, 10099, 432, -1000, 6161, -1000, - 11158, 11158, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 924, - 894, 373, 373, -1000, -1000, 18238, -1000, -1000, -1000, -1000, - 1022, 10099, -1000, 618, -1000, 5060, 1002, 851, 18238, 763, - 1061, 13289, 18238, 607, -1000, 261, 929, 792, 848, 778, - -1000, -1000, -1000, -1000, 869, -1000, 868, -1000, -1000, -1000, - -1000, -1000, 629, -1000, 131, 129, 128, 18238, -1000, 1024, - 15407, 594, -1000, 594, -1000, 179, -1000, -1000, -1000, -100, - -121, -1000, -1000, -1000, 4326, -1000, 4326, -1000, 18238, 79, - -1000, 633, 633, -1000, -1000, -1000, 785, 847, 11158, -1000, - -1000, -1000, 512, 198, 198, -1000, 301, -1000, -1000, -1000, - 731, -1000, 713, 613, 705, 14, 18238, -1000, -1000, -1000, + 795, 795, 795, 782, 782, 82, 10609, 822, -1000, 19001, + 5038, 1012, 5038, -1000, 96, -1000, -1000, -1000, 19001, 19001, + 19001, 19001, 19001, 155, -1000, 19001, 19001, 748, -1000, 19001, + 5038, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 398, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19001, -1000, -1000, + -1000, -1000, 350, 19001, 19001, 19001, 350, 398, -1000, 19001, + 19001, -1000, -1000, -1000, -1000, -1000, 398, 233, 302, 297, + -1000, -1000, 405, -1000, -1000, 1954, -1000, -1000, -1000, -1000, + 504, 11701, 11701, 11701, 300, 1954, 1905, 530, 1980, 191, + 583, 583, 211, 211, 211, 211, 211, 449, 449, -1000, + -1000, -1000, 537, -1000, -1000, -1000, 537, 9140, 9140, 739, + 763, 173, -1000, 815, -1000, -1000, 1034, 670, 670, 604, + 758, 303, 1076, 670, 293, 1066, 670, 670, 9140, -1000, + -1000, 282, -1000, 10609, 537, -1000, 172, -1000, 360, 738, + 734, 670, 537, 537, 670, 670, 995, -1000, -1000, 959, + -1000, 895, 10609, 10609, 10609, -1000, -1000, -1000, 995, 1036, + -1000, 904, 903, 1062, 9140, 16082, 1079, -1000, -1000, -1000, + 171, 1062, 774, 763, -1000, 19001, 16082, 16082, 16082, 16082, + 16082, -1000, 865, 862, -1000, 872, 858, 873, 19001, -1000, + 690, 617, 13898, 185, 763, -1000, 16446, -1000, -1000, 56, + 597, 16082, 19001, -1000, -1000, 16082, 19001, 5794, -1000, 725, + -127, -73, -1000, -1000, -1000, -1000, 398, -1000, 556, 709, + 4282, -1000, -1000, -1000, -1000, 94, -1000, -1000, 790, 567, + -1000, 1003, 252, 247, 567, 1002, -1000, -1000, -1000, -1000, + 977, -1000, 321, -62, -1000, -1000, 389, -11, -11, -1000, + -1000, 187, 949, 187, 187, 187, 507, 507, -1000, -1000, + -1000, -1000, 375, -1000, -1000, -1000, 372, -1000, -1000, 787, + 635, 842, 19001, 5038, -1000, -1000, -1000, -1000, 310, 310, + 243, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 55, 806, -1000, -1000, -1000, -1000, 12, 41, + 121, -1000, 5038, -1000, 314, -1000, -1000, -1000, 314, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 300, 1954, 1867, -1000, + 11701, 11701, -1000, -1000, 670, 670, 9140, 6550, 1055, 995, + -1000, -1000, 50, 436, 50, 11701, 11701, -1000, 11701, 11701, + -1000, -171, 661, 253, -1000, 10609, 510, -1000, 6550, -1000, + 11701, 11701, -1000, -1000, -1000, -1000, -1000, -1000, 469, 505, + 893, 398, 398, -1000, -1000, 19001, -1000, -1000, -1000, -1000, + 1059, 10609, -1000, 667, -1000, 5416, 1034, 836, 19001, 763, + 1104, 13898, 19001, 645, -1000, 250, 956, 794, 834, 938, + -1000, -1000, -1000, -1000, 861, -1000, 849, -1000, -1000, -1000, + -1000, -1000, 617, -1000, 138, 137, 136, 19001, -1000, 1062, + 16082, 622, -1000, 622, -1000, 170, -1000, -1000, -1000, -142, + -126, -1000, -1000, -1000, 4660, -1000, 4660, -1000, 19001, 75, + -1000, 567, 567, -1000, -1000, -1000, 786, 829, 11701, -1000, + -1000, -1000, 545, 187, 187, -1000, 251, -1000, -1000, -1000, + 665, -1000, 659, 629, 657, 3, 19001, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 18238, -1000, -1000, -1000, - -1000, -1000, 18238, -164, 633, 18238, 18238, 18238, 18238, -1000, - 332, 332, -1000, 11158, 2003, 2003, -1000, -1000, 481, -1000, - 1002, -1000, 481, 775, 775, -1000, 775, 783, -1000, 775, - 0, 775, -1, 481, 481, 1877, 1841, 1738, 1574, 763, - -145, -1000, 373, 10099, -1000, 1709, 1180, -1000, 427, -1000, - -1000, 1011, 1004, 373, -1000, -1000, -1000, 980, 681, 542, - -1000, -1000, 8321, 702, 177, 695, -1000, 1009, 18238, 10099, - -1000, -1000, 10099, 781, -1000, 10099, -1000, -1000, -1000, 1009, - 763, 763, 763, 695, 1009, 594, -1000, -1000, 225, -1000, - -1000, -1000, 3959, -1000, 684, -1000, 775, -1000, 976, -1000, - -1000, 18238, -44, 1052, 2003, -1000, -1000, -1000, -1000, -1000, - -17, 415, -17, 391, -1000, 378, -1000, -1000, -219, 4693, - -1000, -1000, -1000, -1000, 983, -1000, 6161, -1000, -1000, 771, - 795, -1000, -1000, -1000, -1000, 2003, -1000, 977, -1000, -1000, - 120, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 11158, - 11158, 11158, 11158, 11158, 1002, 406, 373, 11158, 11158, -1000, - -1000, 10099, 10099, 975, -1000, 763, -1000, 743, 18238, 18238, - -1000, 18238, 1002, -1000, 373, 373, 18238, 373, 15054, 18238, - 18238, 12923, 1002, -1000, 191, 18238, -1000, 673, -1000, 221, - -1000, -117, 198, -1000, 198, 502, 483, -1000, -1000, 763, - 583, -1000, 256, 18238, 18238, -1000, -1000, -1000, 777, 777, - 777, 777, 4, 481, -1000, 777, 777, 373, 573, 1051, - -1000, 763, 1061, 176, -1000, -1000, -1000, 668, 664, -1000, - 664, 664, 178, -1000, 191, -1000, 633, 248, 405, -1000, - 67, 18238, 334, 947, -1000, 943, -1000, -1000, -1000, -1000, - -1000, 51, 6161, 4326, 590, -1000, -1000, -1000, -1000, -1000, - 481, 80, -181, -1000, -1000, -1000, 18238, 542, 18238, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 372, -1000, -1000, 18238, - -1000, -1000, 403, -1000, -1000, 548, -1000, 18238, -1000, -1000, - 751, -1000, 889, -162, -184, 515, -1000, -1000, 764, -1000, - -1000, 51, 904, -164, -1000, 808, -1000, 18238, -1000, 48, - -1000, -178, 460, 46, -182, 842, 763, -185, 838, -1000, - 1039, 10452, -1000, -1000, 1041, 192, 192, 777, 481, -1000, - -1000, -1000, 85, 409, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 19001, -1000, -1000, -1000, + -1000, -1000, 19001, -177, 567, 19001, 19001, 19001, 19001, -1000, + 350, 350, -1000, 11701, 1954, 1954, -1000, -1000, 537, -1000, + 1034, -1000, 537, 776, 776, -1000, 776, 782, -1000, 776, + 11, 776, 6, 537, 537, 1825, 1774, 1653, 869, 763, + -166, -1000, 398, 10609, -1000, 1638, 637, 503, -11, -1000, + -1000, -1000, 1057, 1044, 398, -1000, -1000, -1000, 1005, 730, + 609, -1000, -1000, 8776, 652, 167, 648, -1000, 1055, 19001, + 10609, -1000, -1000, 10609, 781, -1000, 10609, -1000, -1000, -1000, + 1055, 763, 763, 763, 648, 1055, 622, -1000, -1000, 201, + -1000, -1000, -1000, 4282, -1000, 643, -1000, 776, -1000, 1002, + -1000, -1000, 19001, -45, 1090, 1954, -1000, -1000, -1000, -1000, + -1000, -11, 502, -11, 369, -1000, 358, -1000, -1000, -228, + 5038, -1000, -1000, -1000, -1000, 1007, -1000, 6550, -1000, -1000, + 775, 813, -1000, -1000, -1000, -1000, 1954, -1000, 995, -1000, + -1000, 134, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 11701, 11701, 11701, 11701, 11701, 1034, 467, 398, 11701, 11701, + -11, -85, -1000, 10609, 10609, 1000, -1000, 763, -1000, 718, + 19001, 19001, -1000, 19001, 1034, -1000, 398, 398, 19001, 398, + 15718, 19001, 19001, 13521, 1034, -1000, 180, 19001, -1000, 639, + -1000, 236, -1000, -89, 187, -1000, 187, 543, 541, -1000, + -1000, 763, 627, -1000, 248, 19001, 19001, -1000, -1000, -1000, + 360, 360, 360, 360, 39, 537, -1000, 360, 360, -283, + -1000, 936, 934, 398, 620, 1088, -1000, 763, 1104, 154, + -1000, -1000, -1000, 616, 613, -1000, 613, 613, 185, -1000, + 180, -1000, 567, 245, 435, -1000, 63, 19001, 291, 999, + -1000, 996, -1000, -1000, -1000, -1000, -1000, 53, 6550, 4660, + 611, -1000, -1000, -1000, -1000, -1000, 537, 52, -182, -1000, + -1000, -1000, -85, 151, -1000, 909, 906, 1042, 19001, 609, + 19001, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 356, -1000, + -1000, 19001, -1000, -1000, 426, -1000, -1000, 607, -1000, 19001, + -1000, -1000, 806, -1000, 883, -175, -186, 921, 924, 924, + 934, 1041, 932, 930, -1000, 417, 563, -1000, -1000, 769, + -1000, -1000, 53, 902, -177, -1000, 878, -1000, 912, 367, + -1000, -1000, -1000, -1000, 410, -1000, 1038, 1037, -1000, 19001, + -1000, 49, -1000, -178, -1000, 340, -1000, -1000, -1000, 408, + 391, 599, 46, -183, -1000, -1000, -1000, -1000, 826, 763, + -188, 825, -1000, 1072, 10973, -1000, -1000, 1074, 218, 218, + 360, 537, -1000, -1000, -1000, 81, 347, -1000, -1000, -1000, + -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1352, 1351, 59, 70, 71, 1350, 1348, 1346, 1343, - 98, 96, 95, 1341, 1340, 1334, 1331, 1329, 1328, 1326, - 1325, 1324, 1320, 1318, 1317, 1309, 1301, 1299, 1296, 1274, - 1272, 1270, 1269, 1268, 93, 1267, 1266, 1265, 1264, 83, - 1263, 1262, 1260, 1259, 1255, 41, 231, 37, 58, 1254, - 61, 2177, 1253, 51, 78, 69, 1252, 38, 1251, 1250, - 84, 1249, 1247, 63, 1246, 1245, 220, 1244, 55, 1241, - 12, 42, 1240, 1239, 1237, 1234, 92, 1607, 1231, 1230, - 14, 1228, 1227, 105, 1224, 66, 15, 11, 27, 17, - 1223, 64, 1222, 19, 1221, 67, 1219, 1218, 1217, 1212, - 32, 1210, 65, 1207, 29, 1203, 26, 1201, 10, 56, - 22, 30, 7, 1200, 1199, 18, 74, 49, 68, 1197, - 1196, 1195, 520, 1194, 1193, 43, 1191, 1190, 1187, 24, - 90, 124, 506, 1186, 1185, 1182, 1181, 1177, 1176, 36, - 873, 1727, 271, 79, 1174, 1173, 1171, 2426, 39, 57, - 16, 1170, 1169, 1168, 21, 89, 31, 427, 1167, 35, - 1165, 1164, 1163, 1162, 1161, 1159, 1158, 123, 1157, 1154, - 1152, 81, 28, 72, 20, 1151, 1148, 1135, 1131, 48, - 73, 1128, 1127, 50, 53, 1122, 91, 33, 1121, 1120, - 1119, 1116, 1115, 25, 4, 1114, 13, 1113, 9, 1111, - 34, 23, 1109, 3, 1093, 8, 1087, 5, 0, 1086, - 6, 45, 1, 1083, 2, 1077, 1076, 1072, 1011, 1271, - 76, 1068, 97, + 0, 1362, 1359, 32, 70, 71, 1358, 1357, 1356, 1355, + 101, 100, 98, 1354, 1353, 1352, 1351, 1350, 1344, 1342, + 1341, 1340, 1339, 1338, 1336, 1335, 1333, 1332, 1331, 1330, + 1329, 1328, 1327, 1318, 94, 1316, 1315, 1314, 1312, 83, + 1311, 1310, 1308, 1306, 1305, 43, 176, 58, 74, 1304, + 69, 807, 1303, 50, 67, 64, 1301, 34, 1299, 1297, + 90, 1296, 1294, 66, 1286, 1283, 62, 1282, 68, 1281, + 16, 28, 1280, 1279, 1278, 1277, 91, 1791, 1275, 1274, + 21, 1273, 1270, 96, 1269, 73, 29, 14, 19, 22, + 1267, 75, 1266, 10, 1265, 78, 1264, 1263, 1261, 1258, + 27, 1256, 72, 1255, 20, 1254, 4, 11, 1253, 1252, + 1251, 1248, 1247, 1244, 9, 1241, 1240, 1239, 23, 1238, + 18, 63, 41, 26, 7, 1232, 1231, 17, 93, 61, + 76, 1229, 1228, 1223, 510, 1221, 1218, 39, 1217, 103, + 1215, 45, 87, 104, 434, 1214, 1212, 1211, 1210, 1209, + 1205, 53, 776, 1929, 125, 79, 1203, 1200, 1199, 2738, + 51, 65, 24, 1197, 1196, 1193, 49, 38, 56, 452, + 1189, 42, 1186, 1185, 1184, 1183, 1181, 1173, 1171, 350, + 1170, 1169, 1168, 182, 15, 84, 30, 1167, 1164, 1161, + 1160, 48, 77, 1159, 1158, 60, 59, 1157, 81, 31, + 1155, 1154, 1151, 1150, 1149, 37, 8, 1148, 25, 1147, + 13, 1143, 36, 35, 1140, 6, 1136, 12, 1128, 3, + 0, 1124, 5, 55, 1, 1120, 2, 1117, 1113, 1111, + 1466, 1202, 80, 1110, 115, } var yyR1 = [...]int{ - 0, 216, 217, 217, 1, 1, 1, 1, 1, 1, + 0, 228, 229, 229, 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, 208, 208, 208, 21, 33, 3, 3, 3, 3, + 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, 220, 220, 60, 60, - 61, 61, 109, 109, 13, 14, 14, 118, 118, 117, - 117, 117, 119, 119, 119, 119, 157, 157, 15, 15, - 15, 15, 15, 15, 15, 210, 210, 209, 207, 207, - 206, 206, 205, 22, 189, 191, 191, 190, 190, 190, - 190, 190, 190, 180, 160, 160, 160, 160, 163, 163, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 162, - 162, 162, 162, 162, 164, 164, 164, 164, 164, 165, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, - 165, 165, 165, 165, 166, 166, 166, 166, 166, 166, - 166, 166, 179, 179, 167, 167, 173, 173, 174, 174, - 174, 176, 176, 177, 177, 133, 133, 133, 169, 169, - 170, 170, 175, 175, 171, 171, 171, 172, 172, 172, - 178, 178, 178, 178, 178, 168, 168, 181, 181, 199, - 199, 198, 198, 198, 188, 188, 195, 195, 195, 195, - 195, 185, 185, 185, 186, 186, 184, 184, 187, 187, - 197, 197, 196, 182, 182, 183, 183, 200, 200, 200, - 200, 200, 201, 213, 214, 212, 212, 212, 212, 212, - 134, 134, 134, 192, 192, 192, 193, 193, 193, 194, - 194, 194, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 204, 202, 202, 203, 203, 17, 23, + 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, 126, - 126, 215, 215, 128, 128, 124, 124, 127, 127, 125, - 125, 125, 129, 129, 129, 130, 130, 158, 158, 158, - 26, 26, 28, 28, 29, 30, 30, 152, 152, 153, - 153, 31, 32, 37, 37, 37, 37, 37, 37, 40, + 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, 221, 34, 35, 35, + 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, 144, 144, - 144, 143, 143, 52, 52, 53, 53, 54, 54, 55, - 55, 55, 92, 69, 69, 108, 108, 110, 110, 56, - 56, 56, 56, 57, 57, 58, 58, 59, 59, 151, - 151, 150, 150, 150, 149, 149, 62, 62, 62, 64, + 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, 121, 121, 73, 73, + 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, @@ -3038,60 +3149,63 @@ var yyR1 = [...]int{ 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, 222, 222, + 80, 80, 80, 80, 80, 80, 80, 80, 234, 234, 83, 82, 82, 82, 82, 82, 82, 82, 43, 43, - 43, 43, 43, 156, 156, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 96, 96, + 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, 106, 106, 106, - 105, 105, 75, 75, 75, 75, 107, 107, 107, 107, - 111, 111, 87, 87, 89, 89, 88, 90, 112, 112, - 115, 113, 113, 116, 116, 116, 116, 116, 114, 114, - 114, 146, 146, 146, 120, 120, 131, 131, 132, 132, - 122, 122, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 123, 123, 123, 136, 136, 136, 137, 137, - 138, 138, 138, 145, 145, 141, 141, 142, 142, 147, - 147, 148, 148, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 218, 219, 154, 155, 155, - 155, + 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, 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, 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, 230, 231, 166, 167, 167, 167, } var yyR2 = [...]int{ 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 2, 6, 5, 6, 6, 7, + 0, 1, 1, 1, 2, 3, 5, 6, 6, 7, 4, 6, 5, 7, 8, 1, 3, 7, 8, 1, 1, 9, 9, 8, 7, 7, 1, 1, 1, 3, 1, 3, 0, 4, 3, 5, 4, 1, 3, 3, @@ -3153,13 +3267,16 @@ var yyR2 = [...]int{ 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, 4, 2, 1, 5, 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, + 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, 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, 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, @@ -3190,364 +3307,376 @@ 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, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -216, -1, -3, -8, -9, -10, -11, -12, -13, + -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, - -218, 6, 7, 8, -38, 10, 11, 31, -22, 128, - 129, 131, 130, 164, 132, 157, 58, 178, 179, 181, - 182, 183, 184, -40, 162, 163, 32, 33, 134, 35, - 40, 62, 9, 271, 159, 158, 26, -217, 373, -39, - 5, -100, 16, -3, -34, -221, -34, -34, -34, -34, - -34, -34, -189, -191, 62, 101, -138, 138, 82, 263, - 135, 136, 142, -141, -208, -140, 65, 66, 67, 281, - 150, 313, 314, 178, 192, 186, 213, 205, 282, 315, - 151, 203, 206, 250, 148, 316, 233, 240, 76, 181, - 259, 317, 39, 160, 201, 197, 318, 290, 195, 28, - 319, 242, 218, 320, 286, 244, 196, 241, 134, 321, - 153, 369, 146, 322, 219, 223, 323, 251, 324, 325, - 326, 190, 191, 327, 149, 253, 217, 147, 34, 245, - 283, 42, 168, 254, 221, 40, 328, 216, 212, 329, - 330, 331, 332, 215, 189, 211, 46, 225, 224, 226, - 249, 208, 333, 334, 335, 154, 336, 198, 19, 337, - 338, 339, 340, 341, 257, 163, 342, 166, 343, 344, - 345, 346, 347, 348, 243, 220, 222, 143, 170, 239, - 285, 349, 255, 194, 350, 155, 167, 162, 258, 156, - 351, 352, 353, 354, 355, 356, 357, 182, 38, 358, - 359, 360, 361, 177, 252, 261, 45, 230, 362, 188, - 145, 363, 179, 174, 235, 209, 169, 364, 365, 199, - 200, 214, 187, 210, 180, 370, 171, 164, 366, 260, - 231, 287, 207, 204, 175, 367, 172, 173, 368, 371, - 246, 236, 247, 248, 237, 176, 284, 256, 202, 232, - -123, 138, 263, 135, 237, 284, 136, 136, 137, 138, - 263, 135, 136, -66, -147, -208, -140, 138, 136, 119, - 206, 250, 128, 234, 245, 246, 242, -128, 243, 170, - -158, 136, -124, 233, 236, 237, 176, -215, -208, 244, - 252, 251, 238, 248, 247, -147, 180, -152, 185, -141, - 183, -66, -37, 369, 132, -154, -154, 235, 235, -154, - -86, -51, -72, 85, -77, 30, 24, -76, -73, -93, - -90, -91, 119, 120, 122, 121, 123, 108, 109, 116, - 86, 124, -81, -79, -80, -82, 69, 68, 77, 70, - 71, 72, 73, 78, 79, 80, -141, -147, -88, -218, - 52, 53, 272, 273, 274, 275, 280, 276, 88, 41, - 262, 270, 269, 268, 266, 267, 264, 265, 278, 279, - 141, 263, 135, 114, 271, -208, -140, 39, -5, -4, - -218, 6, 21, 22, -104, 18, 17, -219, 64, -41, - -49, 47, 48, -50, 22, 36, 51, 49, -35, -48, - 110, -51, -147, -48, -122, 140, -122, -122, -113, -157, - 180, -116, 252, 251, -142, -114, -141, -139, 250, 206, - 249, 133, 288, 84, 23, 25, 228, 87, 119, 17, - 88, 118, 272, 128, 56, 289, 264, 265, 262, 274, - 275, 263, 234, 30, 11, 291, 26, 158, 22, 36, - 112, 130, 91, 92, 161, 24, 159, 80, 294, 20, - 59, 12, 14, 295, 296, 15, 141, 140, 103, 137, - 54, 9, 124, 27, 100, 50, 297, 29, 298, 299, - 300, 301, 52, 101, 18, 266, 267, 32, 302, 280, - 165, 114, 57, 43, 85, 303, 304, 78, 305, 81, - 60, 82, 16, 55, 37, 306, 307, 308, 309, 102, - 131, 271, 53, 310, 135, 6, 277, 31, 157, 51, - 311, 136, 90, 278, 279, 139, 79, 5, 142, 33, - 10, 58, 61, 268, 269, 270, 41, 89, 13, 312, - 83, -190, 101, -180, -183, -141, 152, -201, 148, -66, - 137, -66, 271, -132, 141, -132, -132, 136, -66, -208, - -208, 128, 130, 133, 60, 69, -23, -66, -131, 141, - -208, -131, -131, -131, -66, 125, -66, -208, 31, -129, - 101, 13, 263, -208, 170, 136, 171, 138, -130, 101, - -130, -130, -185, 137, 34, 149, -155, -218, -142, 174, - 175, 174, -127, -126, 240, 241, 235, 239, 13, 175, - 235, 173, -129, -155, 139, -141, -36, -141, 69, -7, - -3, -11, -10, -12, 93, -154, -154, 63, 84, 82, - 83, 100, -51, -74, 103, 85, 101, 102, 87, 105, - 104, 115, 108, 109, 110, 111, 112, 113, 114, 106, - 107, 118, 93, 94, 95, 96, 97, 98, 99, -121, - -218, -91, -218, 126, 127, -77, -77, -77, -77, -77, - -77, -77, -77, -77, -77, -218, 125, -2, -86, -4, - -218, -218, -218, -218, -218, -218, -218, -218, -96, -51, - -218, -222, -83, -218, -222, -83, -222, -83, -222, -218, - -222, -83, -222, -83, -222, -222, -83, -218, -218, -218, - -218, -218, -218, -218, 12, -100, -3, -34, -106, 20, - 32, -51, -101, -102, -51, -100, 43, -46, -48, -50, - 47, 48, 75, 12, -144, -143, 23, -141, 69, 125, - 12, -67, 27, -66, -53, -54, -55, -56, -69, -92, - -218, -66, 12, -60, -61, -66, -68, -147, 63, 180, - -116, -157, -118, -117, 253, 255, 93, -146, -141, 69, - 30, 31, 64, 63, -66, -160, -163, -165, -164, -166, - -161, -162, 203, 204, 119, 207, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 31, 160, 199, 200, - 201, 202, 219, 220, 221, 222, 223, 224, 225, 226, - 186, 205, 282, 187, 188, 189, 190, 191, 192, 194, - 195, 196, 197, 198, -208, 62, -208, -155, 138, -208, - 85, -208, -66, -66, -155, -155, -155, 172, 172, 136, - 136, 177, -66, 69, 63, 139, -60, 24, 60, -66, - -208, -208, -148, -147, -139, -155, -129, 69, -51, -155, - -155, -155, -66, -155, -155, 69, -186, 12, 103, -155, - -155, -125, 12, 103, -186, -125, -51, -130, 60, -153, - 183, 217, 370, 371, 372, -51, -51, -51, -51, -84, - 78, 85, 79, 80, -77, -85, -88, -91, 74, 103, - 101, 102, 87, -77, -77, -77, -77, -77, -77, -77, - -77, -77, -77, -77, -77, -77, -77, -77, -156, -208, - 69, -208, -76, -76, -141, -47, 22, 36, -46, -142, - -148, -139, -39, -219, -219, -100, -46, -46, -51, -51, - -93, 69, -46, -93, 69, -46, -46, -44, 22, 36, - -94, -95, 89, -93, -141, -147, -219, -77, -141, -141, - -46, -47, -47, -46, -46, 38, -104, -219, -105, 27, - 10, 103, 63, 19, 63, -103, 25, 26, -104, -78, - -141, 70, 73, -52, 63, 12, -50, -66, -143, 110, - -148, -66, -109, 166, -66, 31, 63, -62, -64, -63, - -65, 50, 54, 56, 51, 52, 53, 57, -151, 23, - -53, -3, -218, -150, 166, -149, 23, -147, 69, -66, - -60, -220, 63, 12, 61, -220, 63, 125, -116, -118, - 63, 254, 256, 257, 60, 81, -51, -172, 118, -192, - -193, -194, -142, 69, 70, -180, -181, -182, -195, 152, - -200, 143, 145, 142, -184, 153, -201, 137, 29, 64, - -133, 78, 85, -176, 231, -167, 62, -167, -167, -167, - -167, -171, 206, -171, -171, -171, 62, 62, -167, -167, - -167, -173, 62, -173, -173, -174, 62, -174, -201, 148, - -51, -145, 61, -66, -155, 24, -155, -135, 133, 130, - 131, -204, 129, 228, 206, 76, 30, 16, 272, 166, - 287, -208, 167, -66, -66, -66, -66, -66, 133, 130, - -66, -66, -66, -155, -66, -129, -147, -147, -66, -129, - -66, -141, 78, 79, 80, -85, -77, -77, -77, -45, - 161, 84, -219, -219, -46, -46, -218, 125, -5, -104, - -219, -219, 63, 61, 23, 12, 12, -219, 12, 12, - -219, -219, -46, -97, -95, 91, -51, -219, 125, -219, - 63, 63, -219, -219, -219, -219, -219, 69, -106, 37, - 45, -51, -51, -102, -106, -120, 20, 12, 41, 41, - -71, 13, -48, -53, -50, 125, -71, -75, 31, 41, - -3, -218, -218, -112, -115, -93, -54, -55, -55, -54, - -55, 50, 50, 50, 55, 50, 55, 50, -63, -147, - -219, -219, -3, -70, 58, 140, 59, -218, -149, -109, - 61, -53, -66, -53, -68, -147, 110, -117, -119, 258, - 255, 261, -208, 69, 63, -194, 93, -183, 62, -208, - 29, -184, -184, -187, -208, -187, 29, -169, 30, 78, - -177, 232, 70, -171, -171, -172, 31, -172, -172, -172, - -179, 69, -179, 70, 70, 64, 60, -141, -155, -154, - -211, 148, 144, 152, 153, 146, 65, 66, 67, 137, - 29, 143, 145, 166, 142, -211, -136, -137, 139, 23, - 137, 29, 166, -210, 61, 172, 228, 172, 139, -155, - -125, -125, -45, 84, -77, -77, -219, -219, -47, -142, - -100, -106, -159, 119, 203, 160, 201, 197, 217, 208, - 230, 199, 231, -156, -159, -77, -77, -77, -77, 281, - -100, 92, -51, 90, -142, -77, -77, -154, 38, 46, - -66, -98, 14, -51, 110, -104, -111, 60, -112, -87, - -89, -88, -218, -107, -141, -110, -141, -71, 63, 93, - -58, -57, 60, 61, -59, 60, -57, 50, 50, -219, - 137, 137, 137, -110, -71, -53, -71, -71, 125, 255, - 259, 260, -193, -194, -197, -196, -141, -200, 153, -187, - -187, 62, -170, 60, -77, 64, -172, -172, -208, 119, - 64, 63, 64, 63, 64, 63, -134, 319, 85, -66, - -154, -154, -66, -154, -141, -207, 284, -209, -208, -141, - -141, -141, -66, -129, -129, -77, -219, -104, -219, -167, - -167, -167, -174, -167, 191, -167, 191, -219, -219, 20, - 20, 20, 20, -218, -42, 277, -51, 63, 63, 69, - -99, 15, 17, 28, -111, 63, -219, -219, 63, 125, - -219, 63, -100, -115, -51, -51, 62, -51, -218, -218, - -218, -219, -100, -71, 64, 63, -167, -108, -141, -175, - 228, 10, -171, 69, -171, 70, 70, 319, -155, 27, - -206, -205, -142, 62, 61, -106, -171, -208, -77, -77, - -77, -77, -77, -104, 69, -77, -77, -51, -86, 29, - -89, 41, -3, -141, -141, -141, -104, -108, -108, -219, - -108, -108, -150, -104, -199, -198, 61, 147, 76, -196, - 64, 63, -178, 143, 29, 142, -80, -172, -172, 64, - 64, -218, 63, 93, -108, -66, -219, -219, -219, -219, - -43, 103, 284, -219, -219, -219, 10, -87, 125, 64, - -219, -219, -219, -70, -198, -208, -188, 93, 69, 155, - -141, -168, 76, 29, 29, -202, -203, 166, -205, -194, - 64, -219, 282, 57, 285, -112, -141, 70, -66, 69, - -219, 63, -141, -210, 46, 283, 286, 62, -203, 41, - -207, 46, -108, 168, 284, 64, 169, 285, -213, -214, - 60, -218, 286, -214, 60, 11, 10, -77, 165, -212, - 156, 151, 154, 31, -212, -219, -219, 150, 30, 78, + -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, -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, -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, 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, + -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, } 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, 710, - 702, 0, 0, 0, 0, -2, 341, 342, 0, 344, - -2, 0, 0, 353, 1027, 1027, 0, 0, 1027, 0, - 0, 1025, 49, 50, 359, 360, 361, 1, 3, 0, - 380, 643, 0, 0, -2, 378, 0, 0, 690, 690, - 690, 0, 78, 79, 0, 0, 0, 1010, 0, 688, - 688, 688, 711, 712, 715, 716, 31, 32, 33, 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, 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, 1011, 1012, 1013, 1014, - 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 0, 0, 0, 0, 0, 0, 0, 686, 0, 686, - 686, 686, 0, 287, 458, 719, 720, 1010, 0, 0, - 0, 332, 0, 335, 335, 335, 301, 0, 303, 1028, - 0, 0, 0, 310, 0, 0, 316, 332, 1028, 324, - 338, 339, 326, 321, 322, 340, 343, 0, 348, 351, - 0, 366, 0, 885, 358, 371, 372, 1027, 1027, 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, 667, 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, 0, 635, 45, - 0, 376, 381, 382, 647, 0, 0, 635, 1026, 0, - 0, -2, -2, 392, 398, 399, 400, 401, 377, 0, - 404, 408, 0, 0, 0, 691, 0, 0, 64, 0, - 998, 671, -2, -2, 0, 0, 717, 718, -2, 856, - -2, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, - 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, - 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, 0, 0, 97, 98, 0, 0, 216, 858, 95, - 0, 1028, 0, 0, 0, 0, 0, 0, 1028, 1028, - 1028, 0, 0, 0, 0, 703, 278, 0, 0, 0, - 0, 0, 0, 0, 286, 0, 288, 1028, 332, 291, - 0, 0, 1028, 1028, 1028, 0, 1028, 1028, 298, 0, - 299, 300, 0, 201, 202, 203, 304, 1029, 1030, 1028, - 1028, 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, 0, 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, 998, - 677, 0, 66, 67, 0, 0, 0, 177, 681, 682, - 683, 679, 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, 128, 144, 145, 146, 147, 148, 149, 150, 151, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 156, - 156, 156, 158, 158, 0, 0, 713, 81, 0, 1028, - 0, 1028, 93, 0, 247, 249, 250, 0, 0, 0, - 0, 0, 0, 704, 0, 0, 281, 687, 0, 1028, - 284, 285, 459, 721, 722, 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, 666, 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, 376, 376, 376, 376, 376, 376, 376, 0, 738, + 730, 0, 0, 0, 0, -2, 341, 342, 0, 344, + -2, 0, 0, 353, 1066, 1066, 0, 0, 1066, 0, + 0, 1064, 49, 50, 359, 360, 361, 1, 3, 0, + 380, 643, 0, 0, -2, 378, 0, 0, 718, 718, + 718, 0, 78, 79, 0, 0, 0, 1049, 0, 716, + 716, 716, 739, 740, 743, 744, 31, 32, 33, 871, + 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, 1050, 1051, 1052, + 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, + 1063, 0, 0, 0, 0, 0, 0, 0, 714, 0, + 714, 714, 714, 0, 287, 458, 747, 748, 1049, 0, + 0, 0, 332, 0, 335, 335, 335, 301, 0, 303, + 1067, 0, 0, 0, 310, 0, 0, 316, 332, 1067, + 324, 338, 339, 326, 321, 322, 340, 343, 0, 348, + 351, 0, 366, 0, 917, 358, 371, 372, 1066, 1066, + 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, 695, + 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, 1066, 635, + 45, 0, 376, 381, 382, 647, 0, 0, 635, 1065, + 0, 0, -2, -2, 392, 398, 399, 400, 401, 377, + 0, 404, 408, 0, 0, 0, 719, 0, 0, 64, + 0, 1037, 699, -2, -2, 0, 0, 745, 746, -2, + 884, -2, 751, 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, 0, 0, 97, 98, 0, 0, 216, 886, + 95, 0, 1067, 0, 0, 0, 0, 0, 0, 1067, + 1067, 1067, 0, 0, 0, 0, 731, 278, 0, 0, + 0, 0, 0, 0, 0, 286, 0, 288, 1067, 332, + 291, 0, 0, 1067, 1067, 1067, 0, 1067, 1067, 298, + 0, 299, 300, 0, 201, 202, 203, 304, 1068, 1069, + 1067, 1067, 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, + 1037, 705, 0, 66, 67, 0, 0, 0, 177, 709, + 710, 711, 707, 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, 128, 144, 145, 146, 147, 148, 149, 150, + 151, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 156, 156, 156, 158, 158, 0, 0, 741, 81, 0, + 1067, 0, 1067, 93, 0, 247, 249, 250, 0, 0, + 0, 0, 0, 0, 732, 0, 0, 281, 715, 0, + 1067, 284, 285, 459, 749, 750, 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, 694, 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, 941, 442, 0, 444, 445, -2, - 0, 0, 0, 56, 57, 0, 0, 0, 672, 65, - 0, 0, 70, 71, 673, 674, 675, 676, 0, 94, + 0, 0, 0, 461, 978, 442, 0, 444, 445, -2, + 0, 0, 0, 56, 57, 0, 0, 0, 700, 65, + 0, 0, 70, 71, 701, 702, 703, 704, 0, 94, 234, 236, 239, 240, 241, 99, 101, 102, 0, 0, - 214, 951, 984, 208, 208, 884, 221, 206, 207, 96, + 214, 988, 1021, 208, 208, 916, 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, 119, 0, 120, 121, 122, 0, 123, 215, 0, - 0, 0, 0, 1028, 83, 689, 84, 1027, 0, 0, - 705, 248, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 701, 0, 85, 252, 254, 253, 257, 0, 0, - 0, 279, 1028, 283, 329, 306, 330, 331, 329, 308, + 0, 0, 0, 1067, 83, 717, 84, 1066, 0, 0, + 733, 248, 720, 721, 722, 723, 724, 725, 726, 727, + 728, 729, 0, 85, 252, 254, 253, 257, 0, 0, + 0, 279, 1067, 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, 1027, 38, 0, - 0, 645, 646, 638, 37, 0, 684, 685, 629, 630, - 631, 0, 403, 414, 395, 0, 643, 660, 0, 0, - 653, 0, 0, 466, 668, 0, 416, 435, 437, 0, + 0, 0, 581, 582, 583, 584, 585, 38, 0, 0, + 0, 645, 646, 638, 37, 0, 712, 713, 629, 630, + 631, 0, 403, 414, 395, 0, 643, 688, 0, 0, + 681, 0, 0, 466, 696, 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, 714, 82, 242, - 1027, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 1027, 0, 1027, 706, 707, - 708, 709, 0, 88, 0, 0, 0, 0, 0, 282, + 0, 152, 0, 0, 0, 230, 0, 742, 82, 242, + 1066, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 1066, 0, 1066, 734, 735, + 736, 737, 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, 35, 0, 649, - 39, 633, 0, 467, 407, 43, 47, 0, 660, 652, - 662, 664, 0, 0, 656, 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, 1028, - 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, 651, - 44, 0, 0, 0, 48, 0, 665, 0, 0, 0, - 63, 0, 643, 669, 670, 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, 634, 632, 0, - 663, 0, 655, 658, 657, 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, 0, 654, 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, 661, 659, 192, 0, 186, - 273, 0, 0, 88, 589, 0, 592, 0, 275, 0, - 255, 590, 0, 0, 0, 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, + 610, 560, 616, 0, 618, 0, 0, 0, 174, 652, + 649, 39, 633, 0, 467, 407, 43, 47, 0, 688, + 680, 690, 692, 0, 0, 684, 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, + 1067, 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, 693, 0, + 0, 0, 63, 0, 643, 697, 698, 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, 691, 0, 683, 686, + 685, 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, 689, 687, 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, } 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, 86, 3, 3, 3, 113, 105, 3, - 62, 64, 110, 108, 63, 109, 125, 111, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 373, - 94, 93, 95, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 115, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 126, 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, 104, 3, 116, + 3, 3, 3, 3, 115, 3, 127, } var yyTok2 = [...]int{ @@ -3557,12 +3686,12 @@ var yyTok2 = [...]int{ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 87, 88, 89, 90, 91, 92, 96, 97, 98, - 99, 100, 101, 102, 103, 106, 107, 112, 114, 117, - 118, 119, 120, 121, 122, 123, 124, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 76, 77, 78, 79, 80, 81, 82, 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, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, @@ -3598,7 +3727,9 @@ var yyTok3 = [...]int{ 57680, 355, 57681, 356, 57682, 357, 57683, 358, 57684, 359, 57685, 360, 57686, 361, 57687, 362, 57688, 363, 57689, 364, 57690, 365, 57691, 366, 57692, 367, 57693, 368, 57694, 369, - 57695, 370, 57696, 371, 57697, 372, 0, + 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, } var yyErrorMessages = [...]struct { @@ -3940,94 +4071,94 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:361 +//line sql.y:365 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:366 +//line sql.y:370 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:367 +//line sql.y:371 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:371 +//line sql.y:375 { yyVAL.statement = yyDollar[1].selStmt } case 30: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:400 +//line sql.y:404 { setParseTree(yylex, nil) } case 31: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:406 +//line sql.y:410 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), NoAt) } case 32: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:410 +//line sql.y:414 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), SingleAt) } case 33: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:414 +//line sql.y:418 { yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), DoubleAt) } case 34: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:420 +//line sql.y:424 { yyVAL.statement = &OtherAdmin{} } case 35: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:426 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:430 { - yyVAL.statement = &Load{InfileS3: string(yyDollar[5].bytes)} + yyVAL.statement = &Load{} } case 36: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:432 +//line sql.y:436 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy sel.Limit = yyDollar[3].limit sel.Lock = yyDollar[4].lock - sel.IntoOutfileS3 = yyDollar[5].str + sel.Into = yyDollar[5].selectInto yyVAL.selStmt = sel } case 37: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:441 +//line sql.y:445 { 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:445 +//line sql.y:449 { 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:449 +//line sql.y:453 { 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:472 +//line sql.y:476 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -4037,43 +4168,43 @@ yydefault: } case 41: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:480 +//line sql.y:484 { 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:486 +//line sql.y:490 { 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:492 +//line sql.y:496 { 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:500 +//line sql.y:504 { 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:506 +//line sql.y:510 { yyVAL.selStmt = yyDollar[1].selStmt } case 46: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:510 +//line sql.y:514 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 47: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:517 +//line sql.y:521 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -4087,7 +4218,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:529 +//line sql.y:533 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -4099,186 +4230,186 @@ yydefault: } case 49: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:541 +//line sql.y:545 { yyVAL.insertAction = InsertAct } case 50: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:545 +//line sql.y:549 { yyVAL.insertAction = ReplaceAct } case 51: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:551 +//line sql.y:555 { 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:557 +//line sql.y:561 { 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:561 +//line sql.y:565 { 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:565 +//line sql.y:569 { 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:569 +//line sql.y:573 { 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:574 +//line sql.y:578 { } case 57: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:575 +//line sql.y:579 { } case 58: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:579 +//line sql.y:583 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 59: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:583 +//line sql.y:587 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 60: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:589 +//line sql.y:593 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 61: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:593 +//line sql.y:597 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 62: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:598 +//line sql.y:602 { yyVAL.partitions = nil } case 63: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:602 +//line sql.y:606 { yyVAL.partitions = yyDollar[3].partitions } case 64: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:608 +//line sql.y:612 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 65: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:614 +//line sql.y:618 { 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:618 +//line sql.y:622 { 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:624 +//line sql.y:628 { yyVAL.characteristics = []Characteristic{yyDollar[1].characteristic} } case 68: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:628 +//line sql.y:632 { yyVAL.characteristics = append(yyVAL.characteristics, yyDollar[3].characteristic) } case 69: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:634 +//line sql.y:638 { yyVAL.characteristic = yyDollar[3].isolationLevel } case 70: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:638 +//line sql.y:642 { yyVAL.characteristic = ReadWrite } case 71: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:642 +//line sql.y:646 { yyVAL.characteristic = ReadOnly } case 72: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:648 +//line sql.y:652 { yyVAL.isolationLevel = RepeatableRead } case 73: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:652 +//line sql.y:656 { yyVAL.isolationLevel = ReadCommitted } case 74: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:656 +//line sql.y:660 { yyVAL.isolationLevel = ReadUncommitted } case 75: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:660 +//line sql.y:664 { yyVAL.isolationLevel = Serializable } case 76: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:666 +//line sql.y:670 { yyVAL.scope = SessionScope } case 77: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:670 +//line sql.y:674 { yyVAL.scope = GlobalScope } case 78: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:676 +//line sql.y:680 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } case 79: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:681 +//line sql.y:685 { // Create table [name] like [name] yyDollar[1].ddl.OptLike = yyDollar[2].optLike @@ -4286,153 +4417,153 @@ yydefault: } case 80: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:687 +//line sql.y:691 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[7].tableName} } case 81: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:692 +//line sql.y:696 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 82: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:696 +//line sql.y:700 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[5].tableName.ToViewName()} } case 83: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:700 +//line sql.y:704 { 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:704 +//line sql.y:708 { 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:709 +//line sql.y:713 { yyVAL.colIdent = NewColIdent("") } case 86: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:713 +//line sql.y:717 { yyVAL.colIdent = yyDollar[2].colIdent } case 87: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:719 +//line sql.y:723 { yyVAL.colIdent = yyDollar[1].colIdent } case 88: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:724 +//line sql.y:728 { var v []VindexParam yyVAL.vindexParams = v } case 89: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:729 +//line sql.y:733 { yyVAL.vindexParams = yyDollar[2].vindexParams } case 90: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:735 +//line sql.y:739 { 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:740 +//line sql.y:744 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } case 92: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:746 +//line sql.y:750 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 93: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:752 +//line sql.y:756 { yyVAL.ddl = &DDL{Action: CreateDDLAction, Table: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } case 94: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:759 +//line sql.y:763 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } case 95: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:766 +//line sql.y:770 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} } case 96: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:770 +//line sql.y:774 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} } case 97: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:776 +//line sql.y:780 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:781 +//line sql.y:785 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddConstraint(yyDollar[1].constraintDefinition) } case 99: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:786 +//line sql.y:790 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } case 100: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:790 +//line sql.y:794 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) yyVAL.TableSpec.AddConstraint(yyDollar[4].constraintDefinition) } case 101: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:795 +//line sql.y:799 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } case 102: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:799 +//line sql.y:803 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 103: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:805 +//line sql.y:809 { yyDollar[2].columnType.NotNull = yyDollar[3].boolean yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -4444,7 +4575,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:816 +//line sql.y:820 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolean @@ -4452,74 +4583,74 @@ yydefault: } case 108: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:827 +//line sql.y:831 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literal } case 109: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:832 +//line sql.y:836 { yyVAL.columnType = yyDollar[1].columnType } case 110: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:838 +//line sql.y:842 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 111: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:842 +//line sql.y:846 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 112: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:846 +//line sql.y:850 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 113: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:850 +//line sql.y:854 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 114: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:854 +//line sql.y:858 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 115: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:858 +//line sql.y:862 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 116: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:862 +//line sql.y:866 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:866 +//line sql.y:870 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 118: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:870 +//line sql.y:874 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 119: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:876 +//line sql.y:880 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4527,7 +4658,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:882 +//line sql.y:886 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4535,7 +4666,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:888 +//line sql.y:892 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4543,7 +4674,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:894 +//line sql.y:898 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4551,7 +4682,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:900 +//line sql.y:904 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4559,206 +4690,206 @@ yydefault: } case 124: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:908 +//line sql.y:912 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 125: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:912 +//line sql.y:916 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 126: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:916 +//line sql.y:920 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 127: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:920 +//line sql.y:924 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 128: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:924 +//line sql.y:928 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 129: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:930 +//line sql.y:934 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 130: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:934 +//line sql.y:938 { 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:938 +//line sql.y:942 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 132: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:942 +//line sql.y:946 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 133: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:946 +//line sql.y:950 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 134: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:950 +//line sql.y:954 { 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:954 +//line sql.y:958 { 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:958 +//line sql.y:962 { 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:962 +//line sql.y:966 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 138: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:966 +//line sql.y:970 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 139: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:970 +//line sql.y:974 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:974 +//line sql.y:978 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 141: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:978 +//line sql.y:982 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 142: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:982 +//line sql.y:986 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 143: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:987 +//line sql.y:991 { 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:993 +//line sql.y:997 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 145: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:997 +//line sql.y:1001 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 146: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1001 +//line sql.y:1005 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 147: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1005 +//line sql.y:1009 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 148: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1009 +//line sql.y:1013 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 149: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1013 +//line sql.y:1017 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 150: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1017 +//line sql.y:1021 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 151: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1021 +//line sql.y:1025 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 152: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1027 +//line sql.y:1031 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } case 153: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1032 +//line sql.y:1036 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } case 154: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1037 +//line sql.y:1041 { yyVAL.literal = nil } case 155: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1041 +//line sql.y:1045 { yyVAL.literal = NewIntLiteral(yyDollar[2].bytes) } case 156: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1046 +//line sql.y:1050 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 157: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1050 +//line sql.y:1054 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -4767,13 +4898,13 @@ yydefault: } case 158: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1058 +//line sql.y:1062 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 159: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1062 +//line sql.y:1066 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -4781,7 +4912,7 @@ yydefault: } case 160: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1068 +//line sql.y:1072 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -4790,550 +4921,550 @@ yydefault: } case 161: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1076 +//line sql.y:1080 { yyVAL.boolean = false } case 162: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1080 +//line sql.y:1084 { yyVAL.boolean = true } case 163: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1085 +//line sql.y:1089 { yyVAL.boolean = false } case 164: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1089 +//line sql.y:1093 { yyVAL.boolean = true } case 165: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1095 +//line sql.y:1099 { yyVAL.boolean = false } case 166: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1099 +//line sql.y:1103 { yyVAL.boolean = false } case 167: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1103 +//line sql.y:1107 { yyVAL.boolean = true } case 168: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1108 +//line sql.y:1112 { yyVAL.optVal = nil } case 169: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1112 +//line sql.y:1116 { yyVAL.optVal = yyDollar[2].expr } case 170: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1117 +//line sql.y:1121 { yyVAL.optVal = nil } case 171: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1121 +//line sql.y:1125 { yyVAL.optVal = yyDollar[3].expr } case 172: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1126 +//line sql.y:1130 { yyVAL.boolean = false } case 173: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1130 +//line sql.y:1134 { yyVAL.boolean = true } case 174: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1135 +//line sql.y:1139 { yyVAL.str = "" } case 175: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1139 +//line sql.y:1143 { yyVAL.str = string(yyDollar[3].colIdent.String()) } case 176: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1143 +//line sql.y:1147 { yyVAL.str = string(yyDollar[3].bytes) } case 177: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1148 +//line sql.y:1152 { yyVAL.str = "" } case 178: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1152 +//line sql.y:1156 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 179: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1156 +//line sql.y:1160 { yyVAL.str = string(yyDollar[2].bytes) } case 180: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1161 +//line sql.y:1165 { yyVAL.colKeyOpt = colKeyNone } case 181: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1165 +//line sql.y:1169 { yyVAL.colKeyOpt = colKeyPrimary } case 182: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1169 +//line sql.y:1173 { yyVAL.colKeyOpt = colKey } case 183: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1173 +//line sql.y:1177 { yyVAL.colKeyOpt = colKeyUniqueKey } case 184: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1177 +//line sql.y:1181 { yyVAL.colKeyOpt = colKeyUnique } case 185: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1182 +//line sql.y:1186 { yyVAL.literal = nil } case 186: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1186 +//line sql.y:1190 { yyVAL.literal = NewStrLiteral(yyDollar[2].bytes) } case 187: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1192 +//line sql.y:1196 { 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:1196 +//line sql.y:1200 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } case 189: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1202 +//line sql.y:1206 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 190: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1206 +//line sql.y:1210 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } case 191: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1212 +//line sql.y:1216 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].colIdent.String())} } case 192: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1216 +//line sql.y:1220 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } case 193: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1221 +//line sql.y:1225 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)} } case 194: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1227 +//line sql.y:1231 { yyVAL.str = "" } case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1231 +//line sql.y:1235 { yyVAL.str = string(yyDollar[1].bytes) } case 196: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1237 +//line sql.y:1241 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 197: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1241 +//line sql.y:1245 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } case 198: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1245 +//line sql.y:1249 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } case 199: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1249 +//line sql.y:1253 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } case 200: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1253 +//line sql.y:1257 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } case 201: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1259 +//line sql.y:1263 { yyVAL.str = string(yyDollar[1].bytes) } case 202: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1263 +//line sql.y:1267 { yyVAL.str = string(yyDollar[1].bytes) } case 203: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1267 +//line sql.y:1271 { yyVAL.str = string(yyDollar[1].bytes) } case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1274 +//line sql.y:1278 { yyVAL.str = string(yyDollar[1].bytes) } case 205: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1278 +//line sql.y:1282 { yyVAL.str = string(yyDollar[1].bytes) } case 206: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1284 +//line sql.y:1288 { yyVAL.str = string(yyDollar[1].bytes) } case 207: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1288 +//line sql.y:1292 { yyVAL.str = string(yyDollar[1].bytes) } case 208: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1293 +//line sql.y:1297 { yyVAL.str = "" } case 209: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1297 +//line sql.y:1301 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 210: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1303 +//line sql.y:1307 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 211: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1307 +//line sql.y:1311 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } case 212: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1313 +//line sql.y:1317 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal} } case 213: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1319 +//line sql.y:1323 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 214: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1323 +//line sql.y:1327 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 215: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1329 +//line sql.y:1333 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 216: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1333 +//line sql.y:1337 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 217: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1339 +//line sql.y:1343 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } case 218: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1343 +//line sql.y:1347 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } case 219: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1347 +//line sql.y:1351 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } case 220: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1351 +//line sql.y:1355 { 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: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1355 +//line sql.y:1359 { yyVAL.constraintInfo = yyDollar[1].constraintInfo } case 222: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1361 +//line sql.y:1365 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } case 223: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1367 +//line sql.y:1371 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 224: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1373 +//line sql.y:1377 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 225: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1379 +//line sql.y:1383 { yyVAL.ReferenceAction = Restrict } case 226: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1383 +//line sql.y:1387 { yyVAL.ReferenceAction = Cascade } case 227: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1387 +//line sql.y:1391 { yyVAL.ReferenceAction = NoAction } case 228: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1391 +//line sql.y:1395 { yyVAL.ReferenceAction = SetDefault } case 229: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1395 +//line sql.y:1399 { yyVAL.ReferenceAction = SetNull } case 230: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1400 +//line sql.y:1404 { yyVAL.boolean = true } case 231: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1404 +//line sql.y:1408 { yyVAL.boolean = true } case 232: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1408 +//line sql.y:1412 { yyVAL.boolean = false } case 233: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1413 +//line sql.y:1417 { yyVAL.str = "" } case 234: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1417 +//line sql.y:1421 { yyVAL.str = " " + string(yyDollar[1].str) } case 235: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1421 +//line sql.y:1425 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } case 236: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1429 +//line sql.y:1433 { yyVAL.str = yyDollar[1].str } case 237: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1433 +//line sql.y:1437 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } case 238: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1437 +//line sql.y:1441 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1443 +//line sql.y:1447 { yyVAL.str = yyDollar[1].colIdent.String() } case 240: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1447 +//line sql.y:1451 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } case 241: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1451 +//line sql.y:1455 { yyVAL.str = string(yyDollar[1].bytes) } case 242: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1457 +//line sql.y:1461 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 243: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1461 +//line sql.y:1465 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 244: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1465 +//line sql.y:1469 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 245: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1469 +//line sql.y:1473 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} } case 246: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1474 +//line sql.y:1478 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName} } case 247: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1479 +//line sql.y:1483 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 248: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1483 +//line sql.y:1487 { yyVAL.statement = &DDL{Action: AlterDDLAction, OnlineHint: yyDollar[2].OnlineDDLHint, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } case 249: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1487 +//line sql.y:1491 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } case 250: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1491 +//line sql.y:1495 { yyVAL.statement = &DBDDL{Action: AlterDBDDLAction, DBName: string(yyDollar[3].colIdent.String())} } case 251: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1495 +//line sql.y:1499 { yyVAL.statement = &DDL{ Action: CreateVindexDDLAction, @@ -5347,7 +5478,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1507 +//line sql.y:1511 { yyVAL.statement = &DDL{ Action: DropVindexDDLAction, @@ -5359,19 +5490,19 @@ yydefault: } case 253: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1517 +//line sql.y:1521 { yyVAL.statement = &DDL{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 254: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1521 +//line sql.y:1525 { yyVAL.statement = &DDL{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 255: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1525 +//line sql.y:1529 { yyVAL.statement = &DDL{ Action: AddColVindexDDLAction, @@ -5386,7 +5517,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1538 +//line sql.y:1542 { yyVAL.statement = &DDL{ Action: DropColVindexDDLAction, @@ -5398,13 +5529,13 @@ yydefault: } case 257: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1548 +//line sql.y:1552 { yyVAL.statement = &DDL{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } case 258: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:1552 +//line sql.y:1556 { yyVAL.statement = &DDL{ Action: AddAutoIncDDLAction, @@ -5417,49 +5548,49 @@ yydefault: } case 273: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1581 +//line sql.y:1585 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } case 274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1587 +//line sql.y:1591 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } case 275: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1591 +//line sql.y:1595 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } case 276: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1597 +//line sql.y:1601 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } case 277: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1601 +//line sql.y:1605 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } case 278: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1607 +//line sql.y:1611 { yyVAL.statement = yyDollar[3].ddl } case 279: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1613 +//line sql.y:1617 { yyVAL.ddl = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } case 280: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1617 +//line sql.y:1621 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) @@ -5467,176 +5598,176 @@ yydefault: } case 281: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1625 +//line sql.y:1629 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } case 282: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1629 +//line sql.y:1633 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[5].tableName} } case 283: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1634 +//line sql.y:1638 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: yyDollar[3].boolean} } case 284: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1638 +//line sql.y:1642 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } case 285: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1642 +//line sql.y:1646 { yyVAL.statement = &DBDDL{Action: DropDBDDLAction, DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } case 286: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1648 +//line sql.y:1652 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[3].tableName} } case 287: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1652 +//line sql.y:1656 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[2].tableName} } case 288: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1657 +//line sql.y:1661 { yyVAL.statement = &OtherRead{} } case 289: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1663 +//line sql.y:1667 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 290: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1668 +//line sql.y:1672 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: CharsetStr, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1673 +//line sql.y:1677 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 292: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1678 +//line sql.y:1682 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 293: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1683 +//line sql.y:1687 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 294: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1687 +//line sql.y:1691 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 295: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1691 +//line sql.y:1695 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 296: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1695 +//line sql.y:1699 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 297: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1699 +//line sql.y:1703 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 298: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1703 +//line sql.y:1707 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 299: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1708 +//line sql.y:1712 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 300: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1713 +//line sql.y:1717 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1718 +//line sql.y:1722 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 302: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1722 +//line sql.y:1726 { 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: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1727 +//line sql.y:1731 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 304: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1731 +//line sql.y:1735 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 305: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1735 +//line sql.y:1739 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } case 306: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1739 +//line sql.y:1743 { yyVAL.statement = &Show{&ShowTableStatus{DatabaseName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 307: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1743 +//line sql.y:1747 { yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].str, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } case 308: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1747 +//line sql.y:1751 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5648,56 +5779,56 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1757 +//line sql.y:1761 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } case 310: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1761 +//line sql.y:1765 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 311: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1765 +//line sql.y:1769 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr, Scope: ImplicitScope}} } case 312: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1769 +//line sql.y:1773 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } case 313: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1774 +//line sql.y:1778 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 314: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1778 +//line sql.y:1782 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 315: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1782 +//line sql.y:1786 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } case 316: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1786 +//line sql.y:1790 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 317: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1791 +//line sql.y:1795 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now @@ -5706,806 +5837,806 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1805 +//line sql.y:1809 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1811 +//line sql.y:1815 { yyVAL.str = string(yyDollar[1].bytes) } case 320: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1815 +//line sql.y:1819 { yyVAL.str = string(yyDollar[1].bytes) } case 321: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1821 +//line sql.y:1825 { yyVAL.str = string(yyDollar[1].bytes) } case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1825 +//line sql.y:1829 { yyVAL.str = string(yyDollar[1].bytes) } case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1831 +//line sql.y:1835 { yyVAL.str = "" } case 324: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1835 +//line sql.y:1839 { yyVAL.str = "extended " } case 325: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1841 +//line sql.y:1845 { yyVAL.str = "" } case 326: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1845 +//line sql.y:1849 { yyVAL.str = "full " } case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1851 +//line sql.y:1855 { yyVAL.str = string(yyDollar[1].bytes) } case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1855 +//line sql.y:1859 { yyVAL.str = string(yyDollar[1].bytes) } case 329: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1861 +//line sql.y:1865 { yyVAL.str = "" } case 330: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1865 +//line sql.y:1869 { yyVAL.str = yyDollar[2].tableIdent.v } case 331: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1869 +//line sql.y:1873 { yyVAL.str = yyDollar[2].tableIdent.v } case 332: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1875 +//line sql.y:1879 { yyVAL.showFilter = nil } case 333: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1879 +//line sql.y:1883 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1883 +//line sql.y:1887 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 335: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1889 +//line sql.y:1893 { yyVAL.showFilter = nil } case 336: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1893 +//line sql.y:1897 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 337: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1899 +//line sql.y:1903 { yyVAL.scope = ImplicitScope } case 338: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1903 +//line sql.y:1907 { yyVAL.scope = SessionScope } case 339: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1907 +//line sql.y:1911 { yyVAL.scope = GlobalScope } case 340: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1913 +//line sql.y:1917 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 341: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1917 +//line sql.y:1921 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1923 +//line sql.y:1927 { yyVAL.statement = &Begin{} } case 343: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1927 +//line sql.y:1931 { yyVAL.statement = &Begin{} } case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1933 +//line sql.y:1937 { yyVAL.statement = &Commit{} } case 345: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1939 +//line sql.y:1943 { yyVAL.statement = &Rollback{} } case 346: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1943 +//line sql.y:1947 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1948 +//line sql.y:1952 { yyVAL.empty = struct{}{} } case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1950 +//line sql.y:1954 { yyVAL.empty = struct{}{} } case 349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1953 +//line sql.y:1957 { yyVAL.empty = struct{}{} } case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1955 +//line sql.y:1959 { yyVAL.empty = struct{}{} } case 351: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1960 +//line sql.y:1964 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } case 352: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1966 +//line sql.y:1970 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } case 353: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1971 +//line sql.y:1975 { yyVAL.explainType = EmptyType } case 354: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1975 +//line sql.y:1979 { yyVAL.explainType = JSONType } case 355: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1979 +//line sql.y:1983 { yyVAL.explainType = TreeType } case 356: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1983 +//line sql.y:1987 { yyVAL.explainType = VitessType } case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1987 +//line sql.y:1991 { yyVAL.explainType = TraditionalType } case 358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1991 +//line sql.y:1995 { yyVAL.explainType = AnalyzeType } case 359: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1997 +//line sql.y:2001 { yyVAL.bytes = yyDollar[1].bytes } case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2001 +//line sql.y:2005 { yyVAL.bytes = yyDollar[1].bytes } case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2005 +//line sql.y:2009 { yyVAL.bytes = yyDollar[1].bytes } case 362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2011 +//line sql.y:2015 { yyVAL.statement = yyDollar[1].selStmt } case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2015 +//line sql.y:2019 { yyVAL.statement = yyDollar[1].statement } case 364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2019 +//line sql.y:2023 { yyVAL.statement = yyDollar[1].statement } case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2023 +//line sql.y:2027 { yyVAL.statement = yyDollar[1].statement } case 366: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2028 +//line sql.y:2032 { yyVAL.str = "" } case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2032 +//line sql.y:2036 { yyVAL.str = "" } case 368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2036 +//line sql.y:2040 { yyVAL.str = "" } case 369: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2042 +//line sql.y:2046 { yyVAL.statement = &OtherRead{} } case 370: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2046 +//line sql.y:2050 { yyVAL.statement = &Explain{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } case 371: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2052 +//line sql.y:2056 { yyVAL.statement = &OtherAdmin{} } case 372: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2056 +//line sql.y:2060 { yyVAL.statement = &OtherAdmin{} } case 373: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2060 +//line sql.y:2064 { yyVAL.statement = &OtherAdmin{} } case 374: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2064 +//line sql.y:2068 { yyVAL.statement = &OtherAdmin{} } case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2070 +//line sql.y:2074 { yyVAL.statement = &DDL{Action: FlushDDLAction} } case 376: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2074 +//line sql.y:2078 { setAllowComments(yylex, true) } case 377: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2078 +//line sql.y:2082 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } case 378: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2084 +//line sql.y:2088 { yyVAL.bytes2 = nil } case 379: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2088 +//line sql.y:2092 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } case 380: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2094 +//line sql.y:2098 { yyVAL.unionType = UnionBasic } case 381: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2098 +//line sql.y:2102 { yyVAL.unionType = UnionAll } case 382: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2102 +//line sql.y:2106 { yyVAL.unionType = UnionDistinct } case 383: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2107 +//line sql.y:2111 { yyVAL.str = "" } case 384: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2111 +//line sql.y:2115 { yyVAL.str = SQLNoCacheStr } case 385: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2115 +//line sql.y:2119 { yyVAL.str = SQLCacheStr } case 386: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2120 +//line sql.y:2124 { yyVAL.boolean = false } case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2124 +//line sql.y:2128 { yyVAL.boolean = true } case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2128 +//line sql.y:2132 { yyVAL.boolean = true } case 389: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2133 +//line sql.y:2137 { yyVAL.selectExprs = nil } case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2137 +//line sql.y:2141 { yyVAL.selectExprs = yyDollar[1].selectExprs } case 391: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2142 +//line sql.y:2146 { yyVAL.strs = nil } case 392: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2146 +//line sql.y:2150 { yyVAL.strs = []string{yyDollar[1].str} } case 393: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2150 +//line sql.y:2154 { // 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: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2154 +//line sql.y:2158 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } case 395: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2158 +//line sql.y:2162 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } case 396: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2164 +//line sql.y:2168 { yyVAL.str = SQLNoCacheStr } case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2168 +//line sql.y:2172 { yyVAL.str = SQLCacheStr } case 398: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2172 +//line sql.y:2176 { yyVAL.str = DistinctStr } case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2176 +//line sql.y:2180 { yyVAL.str = DistinctStr } case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2180 +//line sql.y:2184 { yyVAL.str = StraightJoinHint } case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2184 +//line sql.y:2188 { yyVAL.str = SQLCalcFoundRowsStr } case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2190 +//line sql.y:2194 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 403: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2194 +//line sql.y:2198 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } case 404: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2200 +//line sql.y:2204 { yyVAL.selectExpr = &StarExpr{} } case 405: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2204 +//line sql.y:2208 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } case 406: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2208 +//line sql.y:2212 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } case 407: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2212 +//line sql.y:2216 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } case 408: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2217 +//line sql.y:2221 { yyVAL.colIdent = ColIdent{} } case 409: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2221 +//line sql.y:2225 { yyVAL.colIdent = yyDollar[1].colIdent } case 410: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2225 +//line sql.y:2229 { yyVAL.colIdent = yyDollar[2].colIdent } case 412: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2232 +//line sql.y:2236 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 413: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2237 +//line sql.y:2241 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } case 414: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2241 +//line sql.y:2245 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2247 +//line sql.y:2251 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 416: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2251 +//line sql.y:2255 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } case 419: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2261 +//line sql.y:2265 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } case 420: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2265 +//line sql.y:2269 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } case 421: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2269 +//line sql.y:2273 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2275 +//line sql.y:2279 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 423: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2281 +//line sql.y:2285 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } case 424: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2285 +//line sql.y:2289 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } case 425: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2291 +//line sql.y:2295 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2295 +//line sql.y:2299 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 427: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2301 +//line sql.y:2305 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } case 428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2305 +//line sql.y:2309 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } case 429: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2318 +//line sql.y:2322 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 430: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2322 +//line sql.y:2326 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 431: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2326 +//line sql.y:2330 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 432: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2330 +//line sql.y:2334 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } case 433: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2336 +//line sql.y:2340 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 434: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2338 +//line sql.y:2342 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } case 435: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2342 +//line sql.y:2346 { yyVAL.joinCondition = JoinCondition{} } case 436: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2344 +//line sql.y:2348 { yyVAL.joinCondition = yyDollar[1].joinCondition } case 437: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2348 +//line sql.y:2352 { yyVAL.joinCondition = JoinCondition{} } case 438: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2350 +//line sql.y:2354 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 439: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2353 +//line sql.y:2357 { yyVAL.empty = struct{}{} } case 440: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2355 +//line sql.y:2359 { yyVAL.empty = struct{}{} } case 441: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2358 +//line sql.y:2362 { yyVAL.tableIdent = NewTableIdent("") } case 442: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2362 +//line sql.y:2366 { yyVAL.tableIdent = yyDollar[1].tableIdent } case 443: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2366 +//line sql.y:2370 { yyVAL.tableIdent = yyDollar[2].tableIdent } case 445: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2373 +//line sql.y:2377 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 446: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2379 +//line sql.y:2383 { yyVAL.joinType = NormalJoinType } case 447: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2383 +//line sql.y:2387 { yyVAL.joinType = NormalJoinType } case 448: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2387 +//line sql.y:2391 { yyVAL.joinType = NormalJoinType } case 449: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2393 +//line sql.y:2397 { yyVAL.joinType = StraightJoinType } case 450: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2399 +//line sql.y:2403 { yyVAL.joinType = LeftJoinType } case 451: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2403 +//line sql.y:2407 { yyVAL.joinType = LeftJoinType } case 452: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2407 +//line sql.y:2411 { yyVAL.joinType = RightJoinType } case 453: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2411 +//line sql.y:2415 { yyVAL.joinType = RightJoinType } case 454: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2417 +//line sql.y:2421 { yyVAL.joinType = NaturalJoinType } case 455: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2421 +//line sql.y:2425 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -6515,487 +6646,487 @@ yydefault: } case 456: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2431 +//line sql.y:2435 { yyVAL.tableName = yyDollar[2].tableName } case 457: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2435 +//line sql.y:2439 { yyVAL.tableName = yyDollar[1].tableName } case 458: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2441 +//line sql.y:2445 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 459: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2445 +//line sql.y:2449 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2451 +//line sql.y:2455 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 461: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2456 +//line sql.y:2460 { yyVAL.indexHints = nil } case 462: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2460 +//line sql.y:2464 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } case 463: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2464 +//line sql.y:2468 { yyVAL.indexHints = &IndexHints{Type: UseOp} } case 464: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2468 +//line sql.y:2472 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } case 465: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2472 +//line sql.y:2476 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } case 466: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2477 +//line sql.y:2481 { yyVAL.expr = nil } case 467: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2481 +//line sql.y:2485 { yyVAL.expr = yyDollar[2].expr } case 468: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2487 +//line sql.y:2491 { yyVAL.expr = yyDollar[1].expr } case 469: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2491 +//line sql.y:2495 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 470: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2495 +//line sql.y:2499 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 471: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2499 +//line sql.y:2503 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 472: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2503 +//line sql.y:2507 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } case 473: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2507 +//line sql.y:2511 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } case 474: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2511 +//line sql.y:2515 { yyVAL.expr = yyDollar[1].expr } case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2515 +//line sql.y:2519 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } case 476: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2521 +//line sql.y:2525 { yyVAL.str = "" } case 477: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2525 +//line sql.y:2529 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 478: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2531 +//line sql.y:2535 { yyVAL.boolVal = BoolVal(true) } case 479: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2535 +//line sql.y:2539 { yyVAL.boolVal = BoolVal(false) } case 480: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2541 +//line sql.y:2545 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } case 481: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2545 +//line sql.y:2549 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } case 482: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2549 +//line sql.y:2553 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } case 483: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2553 +//line sql.y:2557 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } case 484: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2557 +//line sql.y:2561 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } case 485: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2561 +//line sql.y:2565 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } case 486: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2565 +//line sql.y:2569 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } case 487: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2569 +//line sql.y:2573 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } case 488: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2573 +//line sql.y:2577 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } case 489: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2577 +//line sql.y:2581 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 490: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2583 +//line sql.y:2587 { yyVAL.isExprOperator = IsNullOp } case 491: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2587 +//line sql.y:2591 { yyVAL.isExprOperator = IsNotNullOp } case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2591 +//line sql.y:2595 { yyVAL.isExprOperator = IsTrueOp } case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2595 +//line sql.y:2599 { yyVAL.isExprOperator = IsNotTrueOp } case 494: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2599 +//line sql.y:2603 { yyVAL.isExprOperator = IsFalseOp } case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2603 +//line sql.y:2607 { yyVAL.isExprOperator = IsNotFalseOp } case 496: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2609 +//line sql.y:2613 { yyVAL.comparisonExprOperator = EqualOp } case 497: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2613 +//line sql.y:2617 { yyVAL.comparisonExprOperator = LessThanOp } case 498: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2617 +//line sql.y:2621 { yyVAL.comparisonExprOperator = GreaterThanOp } case 499: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2621 +//line sql.y:2625 { yyVAL.comparisonExprOperator = LessEqualOp } case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2625 +//line sql.y:2629 { yyVAL.comparisonExprOperator = GreaterEqualOp } case 501: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2629 +//line sql.y:2633 { yyVAL.comparisonExprOperator = NotEqualOp } case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2633 +//line sql.y:2637 { yyVAL.comparisonExprOperator = NullSafeEqualOp } case 503: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2638 +//line sql.y:2642 { yyVAL.expr = nil } case 504: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2642 +//line sql.y:2646 { yyVAL.expr = yyDollar[2].expr } case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2648 +//line sql.y:2652 { yyVAL.colTuple = yyDollar[1].valTuple } case 506: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2652 +//line sql.y:2656 { yyVAL.colTuple = yyDollar[1].subquery } case 507: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2656 +//line sql.y:2660 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 508: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2662 +//line sql.y:2666 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2668 +//line sql.y:2672 { yyVAL.exprs = Exprs{yyDollar[1].expr} } case 510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2672 +//line sql.y:2676 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 511: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2678 +//line sql.y:2682 { yyVAL.expr = yyDollar[1].expr } case 512: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2682 +//line sql.y:2686 { yyVAL.expr = yyDollar[1].boolVal } case 513: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2686 +//line sql.y:2690 { yyVAL.expr = yyDollar[1].colName } case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2690 +//line sql.y:2694 { yyVAL.expr = yyDollar[1].expr } case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2694 +//line sql.y:2698 { yyVAL.expr = yyDollar[1].subquery } case 516: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2698 +//line sql.y:2702 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2702 +//line sql.y:2706 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } case 518: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2706 +//line sql.y:2710 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } case 519: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2710 +//line sql.y:2714 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } case 520: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2714 +//line sql.y:2718 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } case 521: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2718 +//line sql.y:2722 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } case 522: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2722 +//line sql.y:2726 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } case 523: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2726 +//line sql.y:2730 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } case 524: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2730 +//line sql.y:2734 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 525: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2734 +//line sql.y:2738 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 526: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2738 +//line sql.y:2742 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } case 527: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2742 +//line sql.y:2746 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } case 528: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2746 +//line sql.y:2750 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 529: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2750 +//line sql.y:2754 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 530: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2754 +//line sql.y:2758 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2758 +//line sql.y:2762 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } case 532: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2762 +//line sql.y:2766 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2766 +//line sql.y:2770 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2770 +//line sql.y:2774 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } case 535: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2774 +//line sql.y:2778 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2778 +//line sql.y:2782 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -7005,7 +7136,7 @@ yydefault: } case 537: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2786 +//line sql.y:2790 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -7021,19 +7152,19 @@ yydefault: } case 538: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2800 +//line sql.y:2804 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2804 +//line sql.y:2808 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } case 540: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2808 +//line sql.y:2812 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -7043,325 +7174,325 @@ yydefault: } case 545: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2826 +//line sql.y:2830 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 546: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2830 +//line sql.y:2834 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 547: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2834 +//line sql.y:2838 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 548: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2838 +//line sql.y:2842 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 549: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2848 +//line sql.y:2852 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 550: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2852 +//line sql.y:2856 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 551: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2856 +//line sql.y:2860 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 552: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2860 +//line sql.y:2864 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 553: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2864 +//line sql.y:2868 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 554: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2868 +//line sql.y:2872 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 555: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2872 +//line sql.y:2876 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 556: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2876 +//line sql.y:2880 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 557: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2880 +//line sql.y:2884 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 558: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2884 +//line sql.y:2888 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } case 559: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2888 +//line sql.y:2892 { 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: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2892 +//line sql.y:2896 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 561: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2896 +//line sql.y:2900 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2906 +//line sql.y:2910 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2910 +//line sql.y:2914 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 564: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2914 +//line sql.y:2918 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2919 +//line sql.y:2923 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2924 +//line sql.y:2928 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 567: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2929 +//line sql.y:2933 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2935 +//line sql.y:2939 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2940 +//line sql.y:2944 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 570: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2945 +//line sql.y:2949 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2949 +//line sql.y:2953 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 572: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2953 +//line sql.y:2957 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 573: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2958 +//line sql.y:2962 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 574: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2963 +//line sql.y:2967 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 575: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2968 +//line sql.y:2972 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 576: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2972 +//line sql.y:2976 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 577: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2976 +//line sql.y:2980 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 580: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2986 +//line sql.y:2990 { yyVAL.expr = yyDollar[2].expr } case 581: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2996 +//line sql.y:3000 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 582: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3000 +//line sql.y:3004 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 583: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3004 +//line sql.y:3008 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 584: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3008 +//line sql.y:3012 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 585: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3012 +//line sql.y:3016 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 586: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3016 +//line sql.y:3020 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 587: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3020 +//line sql.y:3024 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 588: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3026 +//line sql.y:3030 { yyVAL.matchExprOption = NoOption } case 589: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3030 +//line sql.y:3034 { yyVAL.matchExprOption = BooleanModeOpt } case 590: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3034 +//line sql.y:3038 { yyVAL.matchExprOption = NaturalLanguageModeOpt } case 591: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3038 +//line sql.y:3042 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3042 +//line sql.y:3046 { yyVAL.matchExprOption = QueryExpansionOpt } case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3048 +//line sql.y:3052 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 594: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3052 +//line sql.y:3056 { yyVAL.str = string(yyDollar[1].bytes) } case 595: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3058 +//line sql.y:3062 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 596: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3062 +//line sql.y:3066 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } case 597: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3066 +//line sql.y:3070 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3070 +//line sql.y:3074 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 599: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3074 +//line sql.y:3078 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 600: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3078 +//line sql.y:3082 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length @@ -7369,169 +7500,169 @@ yydefault: } case 601: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3084 +//line sql.y:3088 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 602: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3088 +//line sql.y:3092 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3092 +//line sql.y:3096 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 604: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3096 +//line sql.y:3100 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 605: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3100 +//line sql.y:3104 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 606: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3104 +//line sql.y:3108 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3108 +//line sql.y:3112 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 608: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3113 +//line sql.y:3117 { yyVAL.expr = nil } case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3117 +//line sql.y:3121 { yyVAL.expr = yyDollar[1].expr } case 610: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3122 +//line sql.y:3126 { yyVAL.str = string("") } case 611: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3126 +//line sql.y:3130 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3132 +//line sql.y:3136 { yyVAL.whens = []*When{yyDollar[1].when} } case 613: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3136 +//line sql.y:3140 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } case 614: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3142 +//line sql.y:3146 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } case 615: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3147 +//line sql.y:3151 { yyVAL.expr = nil } case 616: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3151 +//line sql.y:3155 { yyVAL.expr = yyDollar[2].expr } case 617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3157 +//line sql.y:3161 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } case 618: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3161 +//line sql.y:3165 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } case 619: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3165 +//line sql.y:3169 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3171 +//line sql.y:3175 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3175 +//line sql.y:3179 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } case 622: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3179 +//line sql.y:3183 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3183 +//line sql.y:3187 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3187 +//line sql.y:3191 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3191 +//line sql.y:3195 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3195 +//line sql.y:3199 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3199 +//line sql.y:3203 { yyVAL.expr = &NullVal{} } case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3205 +//line sql.y:3209 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7542,235 +7673,403 @@ yydefault: } case 629: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3214 +//line sql.y:3218 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3218 +//line sql.y:3222 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 631: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3223 +//line sql.y:3227 { yyVAL.exprs = nil } case 632: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3227 +//line sql.y:3231 { yyVAL.exprs = yyDollar[3].exprs } case 633: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3232 +//line sql.y:3236 { yyVAL.expr = nil } case 634: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3236 +//line sql.y:3240 { yyVAL.expr = yyDollar[2].expr } case 635: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3241 +//line sql.y:3245 { yyVAL.orderBy = nil } case 636: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3245 +//line sql.y:3249 { yyVAL.orderBy = yyDollar[3].orderBy } case 637: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3251 +//line sql.y:3255 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } case 638: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3255 +//line sql.y:3259 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } case 639: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3261 +//line sql.y:3265 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } case 640: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3266 +//line sql.y:3270 { yyVAL.orderDirection = AscOrder } case 641: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3270 +//line sql.y:3274 { yyVAL.orderDirection = AscOrder } case 642: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3274 +//line sql.y:3278 { yyVAL.orderDirection = DescOrder } case 643: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3279 +//line sql.y:3283 { yyVAL.limit = nil } case 644: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3283 +//line sql.y:3287 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } case 645: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3287 +//line sql.y:3291 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } case 646: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3291 +//line sql.y:3295 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } case 647: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3296 +//line sql.y:3300 { yyVAL.lock = NoLock } case 648: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3300 +//line sql.y:3304 { yyVAL.lock = ForUpdateLock } case 649: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3304 +//line sql.y:3308 { yyVAL.lock = ShareModeLock } case 650: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3309 +//line sql.y:3313 { - yyVAL.str = "" + yyVAL.selectInto = nil } case 651: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3313 + yyDollar = yyS[yypt-9 : yypt+1] +//line sql.y:3317 { - yyVAL.str = string(yyDollar[4].bytes) + 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: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3321 + { + yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} + } + case 653: + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:3325 + { + yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} + } + case 654: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3330 + { + yyVAL.str = "" + } + case 655: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3334 + { + yyVAL.str = " format csv" + yyDollar[3].str + } + case 656: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3338 + { + yyVAL.str = " format text" + yyDollar[3].str + } + case 657: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3343 + { + yyVAL.str = "" + } + case 658: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3347 + { + yyVAL.str = " header" + } + case 659: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3352 + { + yyVAL.str = "" + } + case 660: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3326 +//line sql.y:3356 + { + yyVAL.str = " manifest on" + } + case 661: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3360 + { + yyVAL.str = " manifest off" + } + case 662: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3365 + { + yyVAL.str = "" + } + case 663: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3369 + { + yyVAL.str = " overwrite on" + } + case 664: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3373 + { + yyVAL.str = " overwrite off" + } + case 665: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3379 + { + yyVAL.str = yyDollar[1].str + yyDollar[2].str + } + case 666: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3384 + { + yyVAL.str = "" + } + case 667: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3388 + { + yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str + } + case 668: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3393 + { + yyVAL.str = "" + } + case 669: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3397 + { + yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" + } + case 670: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3402 + { + yyVAL.str = "" + } + case 671: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3406 + { + yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" + } + case 672: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3411 + { + yyVAL.str = "" + } + case 673: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3415 + { + yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str + } + case 674: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3420 + { + yyVAL.str = "" + } + case 675: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3424 + { + yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" + } + case 676: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3429 + { + yyVAL.str = "" + } + case 677: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3433 + { + yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" + } + case 678: + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:3438 + { + yyVAL.str = "" + } + case 679: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3442 + { + yyVAL.str = " optionally" + } + case 680: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3455 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 653: + case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3330 +//line sql.y:3459 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 654: + case 682: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3334 +//line sql.y:3463 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 655: + case 683: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3338 +//line sql.y:3467 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 656: + case 684: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3344 +//line sql.y:3473 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 657: + case 685: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3348 +//line sql.y:3477 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 658: + case 686: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3352 +//line sql.y:3481 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 659: + case 687: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3356 +//line sql.y:3485 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 660: + case 688: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3361 +//line sql.y:3490 { yyVAL.updateExprs = nil } - case 661: + case 689: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3365 +//line sql.y:3494 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 662: + case 690: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3371 +//line sql.y:3500 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 663: + case 691: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3375 +//line sql.y:3504 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 664: + case 692: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3381 +//line sql.y:3510 { yyVAL.valTuple = yyDollar[1].valTuple } - case 665: + case 693: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3385 +//line sql.y:3514 { yyVAL.valTuple = ValTuple{} } - case 666: + case 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3391 +//line sql.y:3520 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 667: + case 695: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3397 +//line sql.y:3526 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -7778,342 +8077,342 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 668: + case 696: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3407 +//line sql.y:3536 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 669: + case 697: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3411 +//line sql.y:3540 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 670: + case 698: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3417 +//line sql.y:3546 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 671: + case 699: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3423 +//line sql.y:3552 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 672: + case 700: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3427 +//line sql.y:3556 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 673: + case 701: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3433 +//line sql.y:3562 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } - case 674: + case 702: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3437 +//line sql.y:3566 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } - case 675: + case 703: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3441 +//line sql.y:3570 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } - case 676: + case 704: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3445 +//line sql.y:3574 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } - case 677: + case 705: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3449 +//line sql.y:3578 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } - case 679: + case 707: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3457 +//line sql.y:3586 { yyVAL.bytes = []byte("charset") } - case 681: + case 709: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3464 +//line sql.y:3593 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } - case 682: + case 710: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3468 +//line sql.y:3597 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } - case 683: + case 711: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3472 +//line sql.y:3601 { yyVAL.expr = &Default{} } - case 686: + case 714: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3481 +//line sql.y:3610 { yyVAL.boolean = false } - case 687: + case 715: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3483 +//line sql.y:3612 { yyVAL.boolean = true } - case 688: + case 716: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3486 +//line sql.y:3615 { yyVAL.boolean = false } - case 689: + case 717: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3488 +//line sql.y:3617 { yyVAL.boolean = true } - case 690: + case 718: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3491 +//line sql.y:3620 { yyVAL.ignore = false } - case 691: + case 719: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3493 +//line sql.y:3622 { yyVAL.ignore = true } - case 692: + case 720: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3497 +//line sql.y:3626 { yyVAL.empty = struct{}{} } - case 693: + case 721: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3499 +//line sql.y:3628 { yyVAL.empty = struct{}{} } - case 694: + case 722: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3501 +//line sql.y:3630 { yyVAL.empty = struct{}{} } - case 695: + case 723: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3503 +//line sql.y:3632 { yyVAL.empty = struct{}{} } - case 696: + case 724: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3505 +//line sql.y:3634 { yyVAL.empty = struct{}{} } - case 697: + case 725: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3507 +//line sql.y:3636 { yyVAL.empty = struct{}{} } - case 698: + case 726: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3509 +//line sql.y:3638 { yyVAL.empty = struct{}{} } - case 699: + case 727: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3511 +//line sql.y:3640 { yyVAL.empty = struct{}{} } - case 700: + case 728: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3513 +//line sql.y:3642 { yyVAL.empty = struct{}{} } - case 701: + case 729: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3515 +//line sql.y:3644 { yyVAL.empty = struct{}{} } - case 702: + case 730: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3519 +//line sql.y:3648 { yyVAL.OnlineDDLHint = &OnlineDDLHint{} } - case 703: + case 731: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3523 +//line sql.y:3652 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), } } - case 704: + case 732: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3529 +//line sql.y:3658 { yyVAL.OnlineDDLHint = &OnlineDDLHint{ Strategy: DDLStrategy(yyDollar[2].bytes), Options: string(yyDollar[3].bytes), } } - case 705: + case 733: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3537 +//line sql.y:3666 { yyVAL.empty = struct{}{} } - case 706: + case 734: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3539 +//line sql.y:3668 { yyVAL.empty = struct{}{} } - case 707: + case 735: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3541 +//line sql.y:3670 { yyVAL.empty = struct{}{} } - case 708: + case 736: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3545 +//line sql.y:3674 { yyVAL.empty = struct{}{} } - case 709: + case 737: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3547 +//line sql.y:3676 { yyVAL.empty = struct{}{} } - case 710: + case 738: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3550 +//line sql.y:3679 { yyVAL.empty = struct{}{} } - case 711: + case 739: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3552 +//line sql.y:3681 { yyVAL.empty = struct{}{} } - case 712: + case 740: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3554 +//line sql.y:3683 { yyVAL.empty = struct{}{} } - case 713: + case 741: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3557 +//line sql.y:3686 { yyVAL.colIdent = ColIdent{} } - case 714: + case 742: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3559 +//line sql.y:3688 { yyVAL.colIdent = yyDollar[2].colIdent } - case 715: + case 743: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3563 +//line sql.y:3692 { yyVAL.colIdent = yyDollar[1].colIdent } - case 716: + case 744: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3567 +//line sql.y:3696 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 718: + case 746: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3574 +//line sql.y:3703 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 719: + case 747: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3580 +//line sql.y:3709 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 720: + case 748: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3584 +//line sql.y:3713 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 722: + case 750: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3591 +//line sql.y:3720 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1025: + case 1064: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3919 +//line sql.y:4059 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1026: + case 1065: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3928 +//line sql.y:4068 { decNesting(yylex) } - case 1027: + case 1066: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3933 +//line sql.y:4073 { skipToEnd(yylex) } - case 1028: + case 1067: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3938 +//line sql.y:4078 { skipToEnd(yylex) } - case 1029: + case 1068: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3942 +//line sql.y:4082 { skipToEnd(yylex) } - case 1030: + case 1069: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3946 +//line sql.y:4086 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 8981c380c95..0a49dcc27aa 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -131,6 +131,7 @@ func skipToEnd(yylex interface{}) { matchExprOption MatchExprOption orderDirection OrderDirection explainType ExplainType + selectInto *SelectInto } %token LEX_ERROR @@ -138,7 +139,8 @@ func skipToEnd(yylex interface{}) { %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 OUTFILE S3 DATA LOAD +%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 @@ -288,7 +290,9 @@ func skipToEnd(yylex interface{}) { %type order %type asc_desc_opt %type limit_opt -%type into_outfile_s3_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 lock_opt %type ins_column_list column_list %type opt_partition_clause partition_list @@ -422,19 +426,19 @@ do_statement: } load_statement: - LOAD DATA FROM S3 STRING skip_to_end + LOAD DATA skip_to_end { - $$ = &Load{InfileS3 : string($5)} + $$ = &Load{} } select_statement: - base_select order_by_opt limit_opt lock_opt into_outfile_s3_opt + base_select order_by_opt limit_opt lock_opt into_option { sel := $1.(*Select) sel.OrderBy = $2 sel.Limit = $3 sel.Lock = $4 - sel.IntoOutfileS3 = $5 + sel.Into = $5 $$ = sel } | openb select_statement closeb order_by_opt limit_opt lock_opt @@ -3305,13 +3309,138 @@ lock_opt: $$ = ShareModeLock } -into_outfile_s3_opt: +into_option: + { + $$ = nil + } +| INTO OUTFILE S3 STRING charset_opt format_opt export_options manifest_opt overwrite_opt + { + $$ = &SelectInto{Type:IntoOutfileS3, FileName:string($4), Charset:$5, FormatOption:$6, ExportOption:$7, Manifest:$8, Overwrite:$9} + } +| INTO DUMPFILE STRING + { + $$ = &SelectInto{Type:IntoDumpfile, FileName:string($3), Charset:"", FormatOption:"", ExportOption:"", Manifest:"", Overwrite:""} + } +| INTO OUTFILE STRING charset_opt export_options + { + $$ = &SelectInto{Type:IntoOutfile, FileName:string($3), Charset:$4, FormatOption:"", ExportOption:$5, Manifest:"", Overwrite:""} + } + +format_opt: + { + $$ = "" + } +| FORMAT CSV header_opt + { + $$ = " format csv" + $3 + } +| FORMAT TEXT header_opt + { + $$ = " format text" + $3 + } + +header_opt: + { + $$ = "" + } +| HEADER + { + $$ = " header" + } + +manifest_opt: + { + $$ = "" + } +| MANIFEST ON + { + $$ = " manifest on" + } +| MANIFEST OFF + { + $$ = " manifest off" + } + +overwrite_opt: + { + $$ = "" + } +| OVERWRITE ON + { + $$ = " overwrite on" + } +| OVERWRITE OFF + { + $$ = " overwrite off" + } + +export_options: + fields_opt lines_opt + { + $$ = $1 + $2 + } + +lines_opt: + { + $$ = "" + } +| LINES starting_by_opt terminated_by_opt + { + $$ = " lines" + $2 + $3 + } + +starting_by_opt: + { + $$ = "" + } +| STARTING BY STRING + { + $$ = " starting by '" + string($3) + "'" + } + +terminated_by_opt: + { + $$ = "" + } +| TERMINATED BY STRING + { + $$ = " terminated by '" + string($3) + "'" + } + +fields_opt: + { + $$ = "" + } +| columns_or_fields terminated_by_opt enclosed_by_opt escaped_by_opt + { + $$ = " " + $1 + $2 + $3 + $4 + } + +escaped_by_opt: + { + $$ = "" + } +| ESCAPED BY STRING + { + $$ = " escaped by '" + string($3) + "'" + } + +enclosed_by_opt: + { + $$ = "" + } +| optionally_opt ENCLOSED BY STRING + { + $$ = $1 + " enclosed by '" + string($4) + "'" + } + +optionally_opt: { $$ = "" } -| INTO OUTFILE S3 STRING +| OPTIONALLY { - $$ = string($4) + $$ = " optionally" } // insert_data expands all combinations into a single rule. @@ -3754,6 +3883,7 @@ non_reserved_keyword: | COMMIT | COMMITTED | COMPONENT +| CSV | DATA | DATE | DATETIME @@ -3761,10 +3891,13 @@ non_reserved_keyword: | DEFINITION | DESCRIPTION | DOUBLE +| DUMPFILE | DUPLICATE +| ENCLOSED | ENFORCED | ENGINES | ENUM +| ESCAPED | EXCLUDE | EXPANSION | EXTENDED @@ -3780,6 +3913,7 @@ non_reserved_keyword: | GEOMETRYCOLLECTION | GET_MASTER_PUBLIC_KEY | GLOBAL +| HEADER | HISTOGRAM | HISTORY | INACTIVE @@ -3796,11 +3930,13 @@ non_reserved_keyword: | LAST_INSERT_ID | LESS | LEVEL +| LINES | LINESTRING | LOAD | LOCKED | LONGBLOB | LONGTEXT +| MANIFEST | MASTER_COMPRESSION_ALGORITHMS | MASTER_PUBLIC_KEY_PATH | MASTER_TLS_CIPHERSUITES @@ -3824,11 +3960,13 @@ non_reserved_keyword: | OJ | OLD | OPTIONAL +| OPTIONALLY | ORDINALITY | ORGANIZATION | ONLY | OPTIMIZE | OTHERS +| OVERWRITE | PARTITION | PATH | PERSIST @@ -3875,8 +4013,10 @@ non_reserved_keyword: | SPATIAL | SRID | START +| STARTING | STATUS | TABLES +| TERMINATED | TEXT | THAN | THREAD_PRIORITY diff --git a/go/vt/sqlparser/token.go b/go/vt/sqlparser/token.go index 2c3747be742..be9cd17e428 100644 --- a/go/vt/sqlparser/token.go +++ b/go/vt/sqlparser/token.go @@ -135,6 +135,7 @@ var keywords = map[string]int{ "substring": SUBSTRING, "create": CREATE, "cross": CROSS, + "csv": CSV, "current_date": CURRENT_DATE, "current_time": CURRENT_TIME, "current_timestamp": CURRENT_TIMESTAMP, @@ -164,16 +165,17 @@ var keywords = map[string]int{ "double": DOUBLE, "do": DO, "drop": DROP, + "dumpfile": DUMPFILE, "duplicate": DUPLICATE, "each": UNUSED, "else": ELSE, "elseif": UNUSED, - "enclosed": UNUSED, + "enclosed": ENCLOSED, "end": END, "engines": ENGINES, "enum": ENUM, "escape": ESCAPE, - "escaped": UNUSED, + "escaped": ESCAPED, "exists": EXISTS, "exit": UNUSED, "explain": EXPLAIN, @@ -202,6 +204,7 @@ var keywords = map[string]int{ "group": GROUP, "group_concat": GROUP_CONCAT, "having": HAVING, + "header": HEADER, "high_priority": UNUSED, "hour_microsecond": UNUSED, "hour_minute": UNUSED, @@ -246,7 +249,7 @@ var keywords = map[string]int{ "like": LIKE, "limit": LIMIT, "linear": UNUSED, - "lines": UNUSED, + "lines": LINES, "linestring": LINESTRING, "load": LOAD, "localtime": LOCALTIME, @@ -257,6 +260,7 @@ var keywords = map[string]int{ "longtext": LONGTEXT, "loop": UNUSED, "low_priority": UNUSED, + "manifest": MANIFEST, "master_bind": UNUSED, "match": MATCH, "maxvalue": MAXVALUE, @@ -288,12 +292,13 @@ var keywords = map[string]int{ "optimize": OPTIMIZE, "optimizer_costs": UNUSED, "option": UNUSED, - "optionally": UNUSED, + "optionally": OPTIONALLY, "or": OR, "order": ORDER, "out": UNUSED, "outer": OUTER, "outfile": OUTFILE, + "overwrite": OVERWRITE, "partition": PARTITION, "plugins": PLUGINS, "point": POINT, @@ -354,7 +359,7 @@ var keywords = map[string]int{ "sql_small_result": UNUSED, "ssl": UNUSED, "start": START, - "starting": UNUSED, + "starting": STARTING, "status": STATUS, "stored": UNUSED, "straight_join": STRAIGHT_JOIN, @@ -362,7 +367,7 @@ var keywords = map[string]int{ "vstream": VSTREAM, "table": TABLE, "tables": TABLES, - "terminated": UNUSED, + "terminated": TERMINATED, "text": TEXT, "than": THAN, "then": THEN, diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index c892a9b03a3..3109f5dcdfe 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -83,7 +83,7 @@ type builder interface { SetUpperLimit(count sqlparser.Expr) // PushMisc pushes miscelleaneous constructs to all the primitives. - PushMisc(sel *sqlparser.Select) + PushMisc(sel *sqlparser.Select) error // Wireup performs the wire-up work. Nodes should be traversed // from right to left because the rhs nodes can request vars from @@ -169,8 +169,8 @@ func (bc *builderCommon) SetUpperLimit(count sqlparser.Expr) { bc.input.SetUpperLimit(count) } -func (bc *builderCommon) PushMisc(sel *sqlparser.Select) { - bc.input.PushMisc(sel) +func (bc *builderCommon) PushMisc(sel *sqlparser.Select) error { + return bc.input.PushMisc(sel) } func (bc *builderCommon) Wireup(bldr builder, jt *jointab) error { @@ -338,7 +338,7 @@ func createInstructionFor(query string, stmt sqlparser.Statement, vschema Contex case *sqlparser.Set: return buildSetPlan(stmt, vschema) case *sqlparser.Load: - return buildPlanForBypassUsingQuery(query, vschema) + return buildLoadPlan(query, vschema) case *sqlparser.DBDDL: return nil, vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: Database DDL %v", sqlparser.String(stmt)) case *sqlparser.SetTransaction: @@ -352,3 +352,26 @@ func createInstructionFor(query string, stmt sqlparser.Statement, vschema Contex return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "BUG: unexpected statement type: %T", stmt) } + +func buildLoadPlan(query string, vschema ContextVSchema) (engine.Primitive, error) { + keyspace, err := vschema.DefaultKeyspace() + if err != nil { + return nil, err + } + + destination := vschema.Destination() + if destination == nil { + if keyspace.Sharded { + return nil, vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: this construct is not supported on sharded keyspace") + } + destination = key.DestinationAnyShard{} + } + + return &engine.Send{ + Keyspace: keyspace, + TargetDestination: destination, + Query: query, + IsDML: true, + SingleShardOnly: true, + }, nil +} diff --git a/go/vt/vtgate/planbuilder/bypass.go b/go/vt/vtgate/planbuilder/bypass.go index 9e4c31ae73e..9b7fbc0a039 100644 --- a/go/vt/vtgate/planbuilder/bypass.go +++ b/go/vt/vtgate/planbuilder/bypass.go @@ -44,20 +44,3 @@ func buildPlanForBypass(stmt sqlparser.Statement, vschema ContextVSchema) (engin SingleShardOnly: false, }, nil } - -func buildPlanForBypassUsingQuery(query string, vschema ContextVSchema) (engine.Primitive, error) { - if vschema.Destination() == nil { - return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "set bypass destination first") - } - keyspace, err := vschema.DefaultKeyspace() - if err != nil { - return nil, err - } - return &engine.Send{ - Keyspace: keyspace, - TargetDestination: vschema.Destination(), - Query: query, - IsDML: false, - SingleShardOnly: false, - }, nil -} diff --git a/go/vt/vtgate/planbuilder/concatenate.go b/go/vt/vtgate/planbuilder/concatenate.go index 7f9f8916e5f..72a359445a7 100644 --- a/go/vt/vtgate/planbuilder/concatenate.go +++ b/go/vt/vtgate/planbuilder/concatenate.go @@ -52,9 +52,12 @@ func (c *concatenate) SetUpperLimit(count sqlparser.Expr) { // not doing anything by design } -func (c *concatenate) PushMisc(sel *sqlparser.Select) { - c.lhs.PushMisc(sel) - c.rhs.PushMisc(sel) +func (c *concatenate) PushMisc(sel *sqlparser.Select) error { + err := c.lhs.PushMisc(sel) + if err != nil { + return err + } + return c.rhs.PushMisc(sel) } func (c *concatenate) Wireup(bldr builder, jt *jointab) error { diff --git a/go/vt/vtgate/planbuilder/join.go b/go/vt/vtgate/planbuilder/join.go index a13e75c9bd2..c33005bfbf8 100644 --- a/go/vt/vtgate/planbuilder/join.go +++ b/go/vt/vtgate/planbuilder/join.go @@ -286,9 +286,12 @@ func (jb *join) SetUpperLimit(_ sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (jb *join) PushMisc(sel *sqlparser.Select) { - jb.Left.PushMisc(sel) - jb.Right.PushMisc(sel) +func (jb *join) PushMisc(sel *sqlparser.Select) error { + err := jb.Left.PushMisc(sel) + if err != nil { + return err + } + return jb.Right.PushMisc(sel) } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/ordered_aggregate.go b/go/vt/vtgate/planbuilder/ordered_aggregate.go index ae6715b5bd3..ba1744afeaf 100644 --- a/go/vt/vtgate/planbuilder/ordered_aggregate.go +++ b/go/vt/vtgate/planbuilder/ordered_aggregate.go @@ -506,8 +506,8 @@ func (oa *orderedAggregate) SetUpperLimit(count sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (oa *orderedAggregate) PushMisc(sel *sqlparser.Select) { - oa.input.PushMisc(sel) +func (oa *orderedAggregate) PushMisc(sel *sqlparser.Select) error { + return oa.input.PushMisc(sel) } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/pullout_subquery.go b/go/vt/vtgate/planbuilder/pullout_subquery.go index e557b252524..34ec7ad8eb8 100644 --- a/go/vt/vtgate/planbuilder/pullout_subquery.go +++ b/go/vt/vtgate/planbuilder/pullout_subquery.go @@ -129,9 +129,12 @@ func (ps *pulloutSubquery) SetUpperLimit(count sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (ps *pulloutSubquery) PushMisc(sel *sqlparser.Select) { - ps.subquery.PushMisc(sel) - ps.underlying.PushMisc(sel) +func (ps *pulloutSubquery) PushMisc(sel *sqlparser.Select) error { + err := ps.subquery.PushMisc(sel) + if err != nil { + return err + } + return ps.underlying.PushMisc(sel) } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/route.go b/go/vt/vtgate/planbuilder/route.go index 77aa1c85a05..90cfe0d4493 100644 --- a/go/vt/vtgate/planbuilder/route.go +++ b/go/vt/vtgate/planbuilder/route.go @@ -20,6 +20,9 @@ import ( "fmt" "strings" + vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc" + "vitess.io/vitess/go/vt/vterrors" + "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/vtgate/engine" @@ -248,9 +251,16 @@ func (rb *route) SetUpperLimit(count sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (rb *route) PushMisc(sel *sqlparser.Select) { +func (rb *route) PushMisc(sel *sqlparser.Select) error { rb.Select.(*sqlparser.Select).Comments = sel.Comments rb.Select.(*sqlparser.Select).Lock = sel.Lock + if sel.Into != nil { + if rb.eroute.Opcode != engine.SelectUnsharded { + return vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: this construct is not supported on sharded keyspace") + } + rb.Select.(*sqlparser.Select).Into = sel.Into + } + return nil } // Wireup satisfies the builder interface. diff --git a/go/vt/vtgate/planbuilder/select.go b/go/vt/vtgate/planbuilder/select.go index 24e72e731f0..092476d790b 100644 --- a/go/vt/vtgate/planbuilder/select.go +++ b/go/vt/vtgate/planbuilder/select.go @@ -39,10 +39,6 @@ func buildSelectPlan(query string) func(sqlparser.Statement, ContextVSchema) (en return func(stmt sqlparser.Statement, vschema ContextVSchema) (engine.Primitive, error) { sel := stmt.(*sqlparser.Select) - if sel.IntoOutfileS3 != "" { - return nil, vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "unsupported: non bypass query with into outfile s3") - } - p, err := handleDualSelects(sel, vschema) if err != nil { return nil, err @@ -118,9 +114,10 @@ func (pb *primitiveBuilder) processSelect(sel *sqlparser.Select, outer *symtab, return nil } } - // Into Outfile is not supported in subquery. - if sel.IntoOutfileS3 != "" && (outer != nil || query == "") { - return mysql.NewSQLError(mysql.ERCantUseOptionHere, "42000", "Incorrect usage/placement of 'INTO OUTFILE S3'") + + // Into is not supported in subquery. + if sel.Into != nil && (outer != nil || query == "") { + return mysql.NewSQLError(mysql.ERCantUseOptionHere, "42000", "Incorrect usage/placement of 'INTO'") } if err := pb.processTableExprs(sel.From); err != nil { @@ -165,8 +162,7 @@ func (pb *primitiveBuilder) processSelect(sel *sqlparser.Select, outer *symtab, if err := pb.pushLimit(sel.Limit); err != nil { return err } - pb.bldr.PushMisc(sel) - return nil + return pb.bldr.PushMisc(sel) } func buildSQLCalcFoundRowsPlan(query string, sel *sqlparser.Select, outer *symtab, vschema ContextVSchema) (builder, error) { diff --git a/go/vt/vtgate/planbuilder/sql_calc_found_rows.go b/go/vt/vtgate/planbuilder/sql_calc_found_rows.go index 48740cf36af..63c55113f08 100644 --- a/go/vt/vtgate/planbuilder/sql_calc_found_rows.go +++ b/go/vt/vtgate/planbuilder/sql_calc_found_rows.go @@ -100,8 +100,8 @@ func (s *sqlCalcFoundRows) SetUpperLimit(count sqlparser.Expr) { } //PushMisc implements the builder interface -func (s *sqlCalcFoundRows) PushMisc(sel *sqlparser.Select) { - s.LimitQuery.PushMisc(sel) +func (s *sqlCalcFoundRows) PushMisc(sel *sqlparser.Select) error { + return s.LimitQuery.PushMisc(sel) } //SupplyVar implements the builder interface diff --git a/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt b/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt index c50c22da1f9..c7345318933 100644 --- a/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/bypass_cases.txt @@ -134,9 +134,9 @@ "Sharded": false }, "TargetDestination": "Shard(-80)", - "IsDML": false, + "IsDML": true, "Query": "load data from s3 'x.txt' into table x", - "SingleShardOnly": false + "SingleShardOnly": true } } @@ -151,8 +151,8 @@ "Sharded": false }, "TargetDestination": "Shard(-80)", - "IsDML": false, + "IsDML": true, "Query": "load data from s3 'x.txt'", - "SingleShardOnly": false + "SingleShardOnly": true } } diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.txt b/go/vt/vtgate/planbuilder/testdata/select_cases.txt index 95b70a3ef3d..ca6c851e092 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.txt @@ -1556,4 +1556,64 @@ "select sql_calc_found_rows * from (select sql_calc_found_rows * from music limit 10) t limit 1" "Incorrect usage/placement of 'SQL_CALC_FOUND_ROWS' (errno 1234) (sqlstate 42000)" +# select from unsharded keyspace into dumpfile +"select * from main.unsharded into Dumpfile 'x.txt'" +{ + "QueryType": "SELECT", + "Original": "select * from main.unsharded into Dumpfile 'x.txt'", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select * from unsharded where 1 != 1", + "Query": "select * from unsharded into dumpfile 'x.txt'", + "Table": "unsharded" + } +} + +# select from unsharded keyspace into outfile +"select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'" +{ + "QueryType": "SELECT", + "Original": "select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select * from unsharded where 1 != 1", + "Query": "select * from unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + "Table": "unsharded" + } +} + +# select from unsharded keyspace into outfile s3 +"select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off" +{ + "QueryType": "SELECT", + "Original": "select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", + "Instructions": { + "OperatorType": "Route", + "Variant": "SelectUnsharded", + "Keyspace": { + "Name": "main", + "Sharded": false + }, + "FieldQuery": "select * from unsharded where 1 != 1", + "Query": "select * from unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", + "Table": "unsharded" + } +} + +# Union after into outfile is incorrect +"select id from user into outfile 'out_file_name' union all select id from music" +"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" +# Into outfile s3 in sub-query is incorrect +"select id from (select id from user into outfile s3 'inner_outfile') as t2" +"Incorrect usage/placement of 'INTO' (errno 1234) (sqlstate 42000)" diff --git a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt index 78cf1d08b1b..320a834fc69 100644 --- a/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/unsupported_cases.txt @@ -432,20 +432,7 @@ "set sql_mode = default" "DEFAULT not supported for @@sql_mode" -# Union after storing result in outfile -"select id from user into outfile s3 'out_file_name' union all select id from music" -"Incorrect usage/placement of 'INTO OUTFILE S3' (errno 1234) (sqlstate 42000)" - -# Into outfile s3 in sub-query -"select id from (select id from user into outfile s3 'inner_outfile') as t2" -"Incorrect usage/placement of 'INTO OUTFILE S3' (errno 1234) (sqlstate 42000)" - # Multi shard query using into outfile s3 -"select * from user order by id limit 100 into outfile s3 'out_file_name'" -"unsupported: non bypass query with into outfile s3" - -"load data from s3 'x.txt' into table x" -"set bypass destination first" +"select * from user into outfile s3 'out_file_name'" +"unsupported: this construct is not supported on sharded keyspace" -"load data from s3 'x.txt'" -"set bypass destination first" diff --git a/go/vt/vtgate/planbuilder/vindex_func.go b/go/vt/vtgate/planbuilder/vindex_func.go index c85ee7a0b52..d11e91746d2 100644 --- a/go/vt/vtgate/planbuilder/vindex_func.go +++ b/go/vt/vtgate/planbuilder/vindex_func.go @@ -181,7 +181,8 @@ func (vf *vindexFunc) SetUpperLimit(_ sqlparser.Expr) { } // PushMisc satisfies the builder interface. -func (vf *vindexFunc) PushMisc(sel *sqlparser.Select) { +func (vf *vindexFunc) PushMisc(sel *sqlparser.Select) error { + return nil } // Wireup satisfies the builder interface. diff --git a/go/vt/vttablet/tabletserver/planbuilder/plan.go b/go/vt/vttablet/tabletserver/planbuilder/plan.go index 4fd0cefaccb..4c34bdf53fb 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/plan.go +++ b/go/vt/vttablet/tabletserver/planbuilder/plan.go @@ -65,6 +65,8 @@ const ( PlanRelease PlanSRollback PlanShowTables + // PlanLoad is for Load data statements + PlanLoad NumPlans ) @@ -194,6 +196,8 @@ func Build(statement sqlparser.Statement, tables map[string]*schema.Table, isRes plan, err = &Plan{PlanID: PlanRelease}, nil case *sqlparser.SRollback: plan, err = &Plan{PlanID: PlanSRollback}, nil + case *sqlparser.Load: + plan, err = &Plan{PlanID: PlanLoad}, nil default: return nil, vterrors.New(vtrpcpb.Code_INVALID_ARGUMENT, "invalid SQL") } diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index 70c363fe3b4..2cf8235b8b2 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -141,7 +141,7 @@ func (qre *QueryExecutor) Execute() (reply *sqltypes.Result, err error) { return qre.execOther() case planbuilder.PlanSavepoint, planbuilder.PlanRelease, planbuilder.PlanSRollback: return qre.execOther() - case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete, planbuilder.PlanInsertMessage, planbuilder.PlanDDL: + case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete, planbuilder.PlanInsertMessage, planbuilder.PlanDDL, planbuilder.PlanLoad: return qre.execAutocommit(qre.txConnExec) case planbuilder.PlanUpdateLimit, planbuilder.PlanDeleteLimit: return qre.execAsTransaction(qre.txConnExec) @@ -195,7 +195,7 @@ func (qre *QueryExecutor) execAsTransaction(f func(conn *StatefulConnection) (*s func (qre *QueryExecutor) txConnExec(conn *StatefulConnection) (*sqltypes.Result, error) { switch qre.plan.PlanID { - case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete: + case planbuilder.PlanInsert, planbuilder.PlanUpdate, planbuilder.PlanDelete, planbuilder.PlanLoad: return qre.txFetch(conn, true) case planbuilder.PlanInsertMessage: qre.bindVars["#time_now"] = sqltypes.Int64BindVariable(time.Now().UnixNano())