From 854612ec4a0be6a82341a4f6fd6f0719629b923b Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Thu, 10 Dec 2020 15:18:24 +0200 Subject: [PATCH 01/10] Normalizing DDL queries: - CREATE INDEX formats onto ALTER TABLE - DROP TABLE - exploded into multiple single-table DROP statements Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/schema/online_ddl.go | 25 +++++++++----- go/vt/schema/parser.go | 34 ++++++++++++++++++ go/vt/schema/parser_test.go | 48 +++++++++++++++++++++----- go/vt/schemamanager/tablet_executor.go | 18 +++++----- go/vt/sqlparser/ast.go | 21 +++++++++-- go/vt/sqlparser/parse_test.go | 25 +++++++++----- 6 files changed, 134 insertions(+), 37 deletions(-) diff --git a/go/vt/schema/online_ddl.go b/go/vt/schema/online_ddl.go index f70867d7ef5..38459ebdfb1 100644 --- a/go/vt/schema/online_ddl.go +++ b/go/vt/schema/online_ddl.go @@ -139,6 +139,20 @@ func ReadTopo(ctx context.Context, conn topo.Conn, entryPath string) (*OnlineDDL return onlineDDL, nil } +// getOnlineDDLAction parses the given SQL into a statement and returns the action type of the DDL statement, or error +// if the statement is not a DDL +func getOnlineDDLAction(sql string) (action sqlparser.DDLAction, ddlStmt sqlparser.DDLStatement, err error) { + stmt, err := sqlparser.Parse(sql) + if err != nil { + return action, ddlStmt, fmt.Errorf("Error parsing statement: SQL=%s, error=%+v", sql, err) + } + switch ddlStmt := stmt.(type) { + case sqlparser.DDLStatement: + return ddlStmt.GetAction(), ddlStmt, nil + } + return action, ddlStmt, fmt.Errorf("Unsupported query type: %s", sql) +} + // NewOnlineDDL creates a schema change request with self generated UUID and RequestTime func NewOnlineDDL(keyspace string, table string, sql string, strategy DDLStrategy, options string, requestContext string) (*OnlineDDL, error) { u, err := createUUID("_") @@ -175,15 +189,8 @@ func (onlineDDL *OnlineDDL) ToJSON() ([]byte, error) { // GetAction extracts the DDL action type from the online DDL statement func (onlineDDL *OnlineDDL) GetAction() (action sqlparser.DDLAction, err error) { - stmt, err := sqlparser.Parse(onlineDDL.SQL) - if err != nil { - return action, fmt.Errorf("Error parsing statement: SQL=%s, error=%+v", onlineDDL.SQL, err) - } - switch stmt := stmt.(type) { - case sqlparser.DDLStatement: - return stmt.GetAction(), nil - } - return action, fmt.Errorf("Unsupported query type: %s", onlineDDL.SQL) + action, _, err = getOnlineDDLAction(onlineDDL.SQL) + return action, err } // GetActionStr returns a string representation of the DDL action diff --git a/go/vt/schema/parser.go b/go/vt/schema/parser.go index ab956a0e5bc..5c735a1216f 100644 --- a/go/vt/schema/parser.go +++ b/go/vt/schema/parser.go @@ -19,8 +19,16 @@ package schema import ( "regexp" "strings" + + "vitess.io/vitess/go/vt/sqlparser" ) +// NormalizedDDLQuery contains a query which is online-ddl -normalized +type NormalizedDDLQuery struct { + SQL string + TableName sqlparser.TableName +} + var ( // ALTER TABLE alterTableBasicPattern = `(?s)(?i)\balter\s+table\s+` @@ -64,3 +72,29 @@ func ParseAlterTableOptions(alterStatement string) (explicitSchema, explicitTabl } return explicitSchema, explicitTable, alterOptions } + +// NormalizeOnlineDDL normalizes a given query for OnlineDDL, possibly exploding it into multiple distinct queries +func NormalizeOnlineDDL(sql string) (normalized []*NormalizedDDLQuery, err error) { + action, ddlStmt, err := getOnlineDDLAction(sql) + if err != nil { + return normalized, err + } + switch action { + case sqlparser.AlterDDLAction: + switch ddlStmt.(type) { + case *sqlparser.CreateIndex: + if ddlStmt.IsFullyParsed() { + sql = sqlparser.String(ddlStmt) + } + } + case sqlparser.DropDDLAction: + tables := ddlStmt.GetFromTables() + for _, table := range tables { + ddlStmt.SetFromTables([]sqlparser.TableName{table}) + normalized = append(normalized, &NormalizedDDLQuery{SQL: sqlparser.String(ddlStmt), TableName: table}) + } + return normalized, nil + } + n := &NormalizedDDLQuery{SQL: sql, TableName: ddlStmt.GetTable()} + return []*NormalizedDDLQuery{n}, nil +} diff --git a/go/vt/schema/parser_test.go b/go/vt/schema/parser_test.go index fbaa0080b10..2326a8f46ec 100644 --- a/go/vt/schema/parser_test.go +++ b/go/vt/schema/parser_test.go @@ -18,6 +18,8 @@ package schema import ( "testing" + + "github.com/stretchr/testify/assert" ) func TestParseAlterTableOptions(t *testing.T) { @@ -40,14 +42,44 @@ func TestParseAlterTableOptions(t *testing.T) { } for query, expect := range tests { schema, table, options := ParseAlterTableOptions(query) - if schema != expect.schema { - t.Errorf("schema: %+v, want:%+v", schema, expect.schema) - } - if table != expect.table { - t.Errorf("table: %+v, want:%+v", table, expect.table) - } - if options != expect.options { - t.Errorf("options: %+v, want:%+v", options, expect.options) + assert.Equal(t, expect.schema, schema) + assert.Equal(t, expect.table, table) + assert.Equal(t, expect.options, options) + } +} + +func TestNormalizeOnlineDDL(t *testing.T) { + type expect struct { + sqls []string + isError bool + } + tests := map[string]expect{ + "alter table t add column i int, drop column d": {sqls: []string{"alter table t add column i int, drop column d"}}, + "create table t(id int primary key)": {sqls: []string{"create table t(id int primary key)"}}, + "drop table t": {sqls: []string{"drop table t"}}, + "drop table if exists t": {sqls: []string{"drop table if exists t"}}, + "drop table t1, t2, t3": {sqls: []string{"drop table t1", "drop table t2", "drop table t3"}}, + "drop table if exists t1, t2, t3": {sqls: []string{"drop table if exists t1", "drop table if exists t2", "drop table if exists t3"}}, + "create index i_idx on t(id)": {sqls: []string{"alter table t add index i_idx (id)"}}, + "create index i_idx on t(name(12))": {sqls: []string{"alter table t add index i_idx (`name`(12))"}}, + "create index i_idx on t(id, `ts`, name(12))": {sqls: []string{"alter table t add index i_idx (id, ts, `name`(12))"}}, + "create unique index i_idx on t(id)": {sqls: []string{"alter table t add unique index i_idx (id)"}}, + "create index i_idx using btree on t(id)": {sqls: []string{"alter table t add index i_idx using btree (id)"}}, + "create index with syntax error i_idx on t(id)": {isError: true}, + "select * from t": {isError: true}, + "drop database t": {isError: true}, + } + for query, expect := range tests { + normalized, err := NormalizeOnlineDDL(query) + if expect.isError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + sqls := []string{} + for _, n := range normalized { + sqls = append(sqls, n.SQL) + } + assert.Equal(t, expect.sqls, sqls) } } } diff --git a/go/vt/schemamanager/tablet_executor.go b/go/vt/schemamanager/tablet_executor.go index 793027c1922..4a7e8805ccf 100644 --- a/go/vt/schemamanager/tablet_executor.go +++ b/go/vt/schemamanager/tablet_executor.go @@ -254,22 +254,20 @@ func (exec *TabletExecutor) Execute(ctx context.Context, sqls []string) *Execute return &execResult } isOnlineDDL, strategy, options := exec.isOnlineSchemaDDL(nil) - tableName := "" switch ddl := stat.(type) { case sqlparser.DDLStatement: - switch ddl.GetAction() { - case sqlparser.DropDDLAction: - // TODO (shlomi): break into distinct per-table DROP statements; on a future PR where - // we implement lazy DROP TABLE on Online DDL - tableName = ddl.GetFromTables()[0].Name.String() - default: - tableName = ddl.GetTable().Name.String() - } isOnlineDDL, strategy, options = exec.isOnlineSchemaDDL(ddl) } exec.wr.Logger().Infof("Received DDL request. strategy=%+v", strategy) if isOnlineDDL { - exec.executeOnlineDDL(ctx, &execResult, sql, tableName, strategy, options) + normalizedQueries, err := schema.NormalizeOnlineDDL(sql) + if err != nil { + execResult.ExecutorErr = err.Error() + return &execResult + } + for _, normalized := range normalizedQueries { + exec.executeOnlineDDL(ctx, &execResult, normalized.SQL, normalized.TableName.Name.String(), strategy, options) + } } else { exec.executeOnAllTablets(ctx, &execResult, sql) } diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 6b74868c658..d77aacc2ccd 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -70,6 +70,7 @@ type ( GetVindexCols() []ColIdent AffectedTables() TableNames SetTable(qualifier string, name string) + SetFromTables(tables TableNames) Statement } @@ -530,6 +531,21 @@ func (node *CreateTable) GetFromTables() TableNames { return nil } +// SetFromTables implements DDLStatement. +func (node *DDL) SetFromTables(tables TableNames) { + node.FromTables = tables +} + +// SetFromTables implements DDLStatement. +func (node *CreateIndex) SetFromTables(tables TableNames) { + // irrelevant +} + +// SetFromTables implements DDLStatement. +func (node *CreateTable) SetFromTables(tables TableNames) { + // irrelevant +} + // GetToTables implements the DDLStatement interface func (node *DDL) GetToTables() TableNames { return node.ToTables @@ -2470,7 +2486,7 @@ func (node *SelectInto) Format(buf *TrackedBuffer) { // Format formats the node. func (node *CreateIndex) Format(buf *TrackedBuffer) { - buf.WriteString("create") + buf.astPrintf(node, "alter table %v add", node.Table) if node.Constraint != "" { buf.WriteString(" " + node.Constraint) } @@ -2478,7 +2494,8 @@ func (node *CreateIndex) Format(buf *TrackedBuffer) { if node.IndexType != "" { buf.WriteString(" using " + node.IndexType) } - buf.astPrintf(node, " on %v (", node.Table) + + buf.WriteString(" (") for i, col := range node.Columns { if i != 0 { buf.astPrintf(node, ", %v", col.Column) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 3f4a06eadb8..e06f8da24a2 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1156,20 +1156,28 @@ var ( input: "alter vschema on a drop vindex `add`", output: "alter vschema on a drop vindex `add`", }, { - input: "create index a on b (col1)", + input: "create index a on b (col1)", + output: "alter table b add index a (col1)", }, { - input: "create unique index a on b (col1)", + input: "create unique index a on b (col1)", + output: "alter table b add unique index a (col1)", }, { - input: "create unique index a using foo on b (col1 desc)", + input: "create unique index a using foo on b (col1 desc)", + output: "alter table b add unique index a using foo (col1 desc)", }, { - input: "create fulltext index a using foo on b (col1)", + input: "create fulltext index a using foo on b (col1)", + output: "alter table b add fulltext index a using foo (col1)", }, { - input: "create spatial index a using foo on b (col1)", + input: "create spatial index a using foo on b (col1)", + output: "alter table b add spatial index a using foo (col1)", }, { - input: "create index a on b (col1) using btree key_block_size 12 with parser 'a' comment 'string' algorithm inplace lock none", + input: "create index a on b (col1) using btree key_block_size=12 with parser 'a' comment 'string' algorithm inplace lock none", + // This is actually an incorrect output: should be the one commented + output: "alter table b add index a (col1) using btree key_block_size 12 with parser 'a' comment 'string' algorithm inplace lock none", + // output: "alter table b add index a using btree (col1) key_block_size=12 with parser 'a' comment 'string' algorithm inplace lock none", }, { input: "create index a on b ((col1 + col2), (col1*col2))", - output: "create index a on b ()", + output: "alter table b add index a ()", partialDDL: true, }, { input: "create view a", @@ -1883,7 +1891,8 @@ func TestCaseSensitivity(t *testing.T) { input: "create table A (\n\t`B` int\n)", output: "create table A (\n\tB int\n)", }, { - input: "create index b on A (col1 desc)", + input: "create index b on A (col1 desc)", + output: "alter table A add index b (col1 desc)", }, { input: "alter table A foo", output: "alter table A", From e7b85b65c9f90b31e63825f547a07a5240cb207a Mon Sep 17 00:00:00 2001 From: GuptaManan100 Date: Thu, 10 Dec 2020 22:53:53 +0530 Subject: [PATCH 02/10] fixed parsing issues for create index Signed-off-by: GuptaManan100 --- go/vt/sqlparser/ast.go | 7 +- go/vt/sqlparser/parse_test.go | 16 +- go/vt/sqlparser/sql.go | 5000 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 31 +- 4 files changed, 2548 insertions(+), 2506 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index d77aacc2ccd..ce0db0fc7e9 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -291,7 +291,6 @@ type ( CreateIndex struct { Constraint string Name ColIdent - IndexType string Table TableName Columns []*IndexColumn Options []*IndexOption @@ -2491,9 +2490,6 @@ func (node *CreateIndex) Format(buf *TrackedBuffer) { buf.WriteString(" " + node.Constraint) } buf.astPrintf(node, " index %v", node.Name) - if node.IndexType != "" { - buf.WriteString(" using " + node.IndexType) - } buf.WriteString(" (") for i, col := range node.Columns { @@ -2511,6 +2507,9 @@ func (node *CreateIndex) Format(buf *TrackedBuffer) { } buf.astPrintf(node, ")") for _, opt := range node.Options { + //if opt == nil { + // continue + //} buf.WriteString(" " + strings.ToLower(opt.Name)) if opt.String != "" { buf.WriteString(" " + opt.String) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index e06f8da24a2..0ba70e8b02b 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1163,18 +1163,16 @@ var ( output: "alter table b add unique index a (col1)", }, { input: "create unique index a using foo on b (col1 desc)", - output: "alter table b add unique index a using foo (col1 desc)", + output: "alter table b add unique index a (col1 desc) using foo", }, { - input: "create fulltext index a using foo on b (col1)", - output: "alter table b add fulltext index a using foo (col1)", + input: "create fulltext index a on b (col1) with parser a", + output: "alter table b add fulltext index a (col1) with parser a", }, { - input: "create spatial index a using foo on b (col1)", - output: "alter table b add spatial index a using foo (col1)", + input: "create spatial index a on b (col1)", + output: "alter table b add spatial index a (col1)", }, { - input: "create index a on b (col1) using btree key_block_size=12 with parser 'a' comment 'string' algorithm inplace lock none", - // This is actually an incorrect output: should be the one commented - output: "alter table b add index a (col1) using btree key_block_size 12 with parser 'a' comment 'string' algorithm inplace lock none", - // output: "alter table b add index a using btree (col1) key_block_size=12 with parser 'a' comment 'string' algorithm inplace lock none", + input: "create fulltext index a on b (col1) key_block_size=12 with parser a comment 'string' algorithm inplace lock none", + output: "alter table b add fulltext index a (col1) key_block_size 12 with parser a comment 'string' algorithm inplace lock none", }, { input: "create index a on b ((col1 + col2), (col1*col2))", output: "alter table b add index a ()", diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 8187ffa07c0..5c4d55d0376 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -942,11 +942,11 @@ var yyExca = [...]int{ 227, 109, -2, 104, -1, 437, - 143, 788, - -2, 784, - -1, 438, 143, 789, -2, 785, + -1, 438, + 143, 790, + -2, 786, -1, 455, 55, 414, -2, 426, @@ -954,24 +954,24 @@ var yyExca = [...]int{ 55, 415, -2, 427, -1, 476, - 111, 1068, + 111, 1069, -2, 80, -1, 477, - 111, 972, + 111, 973, -2, 81, -1, 482, - 111, 931, + 111, 932, -2, 749, -1, 484, - 111, 1011, + 111, 1012, -2, 751, -1, 637, 136, 109, 227, 109, -2, 272, -1, 1023, - 143, 791, - -2, 787, + 143, 792, + -2, 788, -1, 1115, 73, 62, 81, 62, @@ -990,1051 +990,856 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 19805 +const yyLast = 20118 var yyAct = [...]int{ - 437, 1784, 1542, 1773, 1699, 1417, 1742, 1604, 1675, 381, - 1329, 1647, 1137, 1480, 1624, 1297, 1188, 396, 1062, 1481, - 410, 1330, 1477, 1133, 1182, 78, 3, 1397, 1374, 448, - 800, 749, 1316, 911, 1398, 1146, 963, 618, 1136, 1112, - 1492, 615, 1465, 651, 793, 1437, 113, 1010, 1190, 125, - 481, 350, 125, 944, 1390, 1017, 1151, 362, 612, 125, - 1256, 837, 76, 369, 830, 1094, 1101, 457, 803, 1043, - 821, 798, 1064, 820, 823, 987, 787, 383, 834, 31, - 442, 1077, 611, 1206, 619, 836, 1117, 362, 810, 827, - 362, 125, 362, 125, 372, 74, 1178, 104, 105, 379, - 669, 958, 660, 79, 762, 1059, 1060, 973, 73, 1295, - 125, 125, 763, 671, 1696, 8, 7, 6, 125, 1649, - 643, 902, 1533, 125, 370, 371, 1167, 1614, 422, 1777, - 428, 429, 426, 427, 425, 424, 423, 1191, 81, 82, - 83, 84, 85, 86, 430, 431, 1739, 1771, 1720, 1764, - 463, 467, 1543, 1738, 443, 1719, 1454, 1572, 1193, 33, - 622, 1296, 67, 37, 38, 475, 101, 118, 119, 120, - 923, 838, 93, 839, 101, 109, 1506, 110, 33, 34, - 35, 67, 37, 38, 922, 114, 115, 116, 1360, 1507, - 1508, 1359, 1128, 1129, 1361, 1127, 677, 678, 71, 441, - 478, 628, 627, 39, 64, 65, 679, 62, 440, 1382, - 680, 677, 678, 63, 1161, 684, 1607, 1020, 1419, 630, - 870, 1168, 1563, 1561, 1061, 101, 94, 972, 92, 1192, - 364, 360, 97, 66, 358, 98, 99, 114, 115, 116, - 682, 933, 51, 674, 114, 115, 116, 638, 921, 672, - 673, 1422, 66, 1236, 1722, 1421, 657, 932, 659, 930, - 1763, 974, 975, 976, 1686, 711, 710, 720, 721, 713, - 714, 715, 716, 717, 718, 719, 712, 1420, 1752, 722, - 111, 683, 1676, 1095, 1228, 934, 1705, 1186, 1790, 1186, - 656, 658, 1513, 931, 642, 1186, 1298, 1300, 100, 614, - 624, 918, 915, 916, 1788, 914, 100, 469, 1423, 938, - 629, 905, 1667, 687, 376, 1464, 1703, 1463, 42, 44, - 47, 46, 49, 1462, 61, 625, 858, 1225, 1155, 667, - 125, 649, 329, 1227, 655, 117, 1593, 1505, 925, 928, - 1235, 1321, 362, 1234, 1275, 1285, 1272, 50, 70, 69, - 1134, 362, 59, 60, 48, 734, 735, 100, 1264, 1123, - 1532, 814, 747, 647, 722, 362, 362, 871, 1356, 1073, - 1194, 52, 53, 699, 54, 55, 56, 57, 964, 636, - 712, 920, 653, 722, 1299, 661, 702, 654, 1168, 702, - 1718, 641, 693, 685, 1456, 959, 884, 887, 888, 889, - 890, 891, 892, 919, 893, 894, 895, 896, 897, 872, - 873, 874, 875, 856, 857, 885, 1678, 859, 89, 860, - 861, 862, 863, 864, 865, 866, 867, 868, 869, 876, - 877, 878, 879, 880, 881, 882, 883, 1723, 662, 663, - 664, 125, 1786, 1668, 1666, 1787, 68, 1785, 924, 1687, - 666, 686, 1155, 633, 1154, 634, 732, 90, 635, 1226, - 1438, 1224, 668, 926, 675, 68, 362, 103, 912, 125, - 791, 125, 125, 790, 362, 1490, 734, 735, 734, 735, - 362, 840, 696, 694, 695, 701, 699, 965, 652, 697, - 907, 750, 1044, 886, 114, 115, 116, 114, 115, 116, - 1765, 1440, 702, 785, 960, 1380, 114, 115, 116, 1044, - 819, 1282, 644, 645, 1708, 788, 713, 714, 715, 716, - 717, 718, 719, 712, 1075, 804, 722, 1766, 765, 767, - 769, 771, 773, 775, 776, 1271, 766, 768, 807, 772, - 774, 1442, 777, 1446, 994, 1441, 1158, 1439, 330, 792, - 1757, 1524, 1444, 1159, 623, 1270, 1613, 333, 992, 993, - 991, 1443, 1791, 1269, 1612, 343, 1768, 66, 715, 716, - 717, 718, 719, 712, 1445, 1447, 722, 1758, 1154, 990, - 637, 1538, 700, 701, 699, 1394, 1074, 478, 710, 720, - 721, 713, 714, 715, 716, 717, 718, 719, 712, 341, - 702, 722, 700, 701, 699, 700, 701, 699, 348, 1393, - 1458, 125, 700, 701, 699, 898, 1078, 1079, 1197, 452, - 702, 1673, 362, 702, 125, 1767, 908, 909, 1792, 1759, - 702, 1750, 927, 362, 700, 701, 699, 125, 331, 1249, - 1250, 1251, 125, 1733, 1637, 125, 943, 1467, 125, 1610, - 362, 626, 702, 1581, 1539, 362, 362, 362, 125, 362, - 362, 982, 984, 985, 1469, 345, 334, 335, 983, 346, - 347, 354, 802, 362, 362, 338, 340, 351, 336, 337, - 356, 355, 1404, 332, 353, 352, 114, 115, 116, 1391, - 1012, 700, 701, 699, 948, 1468, 957, 949, 946, 736, - 737, 738, 739, 740, 741, 742, 743, 744, 745, 702, - 114, 115, 116, 967, 1411, 114, 115, 116, 835, 1363, - 75, 468, 904, 1011, 1672, 1395, 988, 114, 115, 116, - 1406, 939, 1013, 929, 1350, 628, 627, 114, 115, 116, - 1317, 1204, 1118, 700, 701, 699, 362, 1664, 1769, 1478, - 947, 1664, 1716, 1712, 452, 951, 952, 953, 1489, 955, - 956, 702, 1664, 1704, 77, 1032, 1035, 1664, 452, 1664, - 1663, 1045, 33, 961, 962, 901, 1603, 966, 1156, 362, - 362, 1027, 1489, 989, 1048, 969, 1580, 452, 1591, 452, - 125, 1530, 1529, 1526, 1527, 1526, 1525, 452, 1023, 1086, - 452, 1022, 362, 438, 1097, 473, 470, 471, 1098, 125, - 1098, 452, 362, 750, 698, 452, 125, 33, 125, 1654, - 1068, 901, 900, 847, 846, 1588, 125, 125, 698, 1086, - 1080, 1677, 1575, 362, 1014, 1015, 362, 1053, 1054, 1317, - 1119, 1528, 1324, 1098, 1024, 1364, 66, 362, 362, 1119, - 1615, 1113, 126, 1126, 1098, 126, 1087, 1288, 1287, 1086, - 363, 1021, 126, 451, 1325, 1023, 1118, 445, 1092, 1076, - 1057, 937, 1088, 711, 710, 720, 721, 713, 714, 715, - 716, 717, 718, 719, 712, 832, 66, 722, 1751, 1153, - 363, 66, 1626, 363, 126, 363, 126, 1616, 1617, 1618, - 1090, 1120, 362, 1599, 903, 1183, 125, 1489, 33, 1122, - 1120, 1124, 1203, 126, 126, 1121, 1116, 1400, 1118, 1125, - 1517, 126, 1184, 899, 1399, 1086, 126, 1368, 1021, 1179, - 1141, 125, 125, 125, 125, 125, 1173, 1172, 125, 125, - 1185, 66, 125, 362, 1202, 91, 478, 1493, 1494, 478, - 1418, 1627, 399, 398, 401, 402, 403, 404, 1201, 125, - 1138, 400, 405, 1779, 1619, 125, 125, 125, 1400, 1028, - 1029, 125, 362, 1034, 1037, 1038, 1162, 1205, 1163, 1164, - 1165, 1166, 66, 1774, 1196, 1519, 1195, 1496, 1169, 1170, - 1171, 1180, 1181, 1478, 1174, 1175, 1176, 1177, 1052, 1221, - 1408, 1055, 1056, 970, 941, 452, 1499, 1242, 1620, 1621, - 1498, 1246, 988, 1338, 1103, 1106, 1107, 1108, 1104, 986, - 1105, 1109, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1341, 1343, 1339, - 1107, 1108, 1342, 1240, 1340, 711, 710, 720, 721, 713, - 714, 715, 716, 717, 718, 719, 712, 1266, 125, 722, - 1337, 1754, 1737, 1470, 1306, 801, 125, 1252, 1735, 989, - 1103, 1106, 1107, 1108, 1104, 1592, 1105, 1109, 1315, 1049, - 1493, 1494, 1314, 1728, 1725, 1756, 1741, 1743, 125, 1304, - 1749, 96, 1748, 1700, 1698, 936, 439, 1305, 1405, 125, - 125, 125, 125, 125, 443, 1265, 1399, 1331, 1386, 794, - 910, 125, 1281, 1303, 1040, 125, 845, 650, 125, 125, - 1326, 795, 125, 125, 125, 1310, 1322, 1319, 1041, 1379, - 107, 1710, 788, 126, 1294, 1362, 108, 362, 1302, 121, - 1348, 1709, 1652, 1377, 1370, 363, 1369, 1586, 1309, 1365, - 1541, 1375, 1375, 1071, 363, 1318, 1320, 1351, 1078, 1079, - 1199, 1353, 940, 1111, 446, 447, 449, 1761, 363, 363, - 1333, 1334, 1332, 1336, 946, 1335, 1344, 1313, 1760, 1746, - 1376, 1349, 1473, 1729, 1585, 1312, 450, 1354, 1357, 77, - 1584, 1385, 1402, 1387, 1388, 1389, 1317, 681, 1781, 362, - 1367, 1276, 362, 1410, 1273, 1371, 1372, 1373, 458, 815, - 711, 710, 720, 721, 713, 714, 715, 716, 717, 718, - 719, 712, 459, 125, 722, 458, 1403, 808, 1392, 362, - 1781, 1780, 1701, 1608, 1072, 445, 1261, 1262, 1401, 459, - 362, 75, 80, 72, 126, 805, 806, 461, 1, 460, - 1138, 1058, 786, 349, 1772, 112, 1544, 1279, 1623, 917, - 1674, 1396, 455, 456, 461, 362, 460, 1257, 1189, 363, - 1412, 1011, 126, 1144, 126, 126, 1135, 363, 1425, 88, - 609, 87, 1426, 363, 665, 1413, 1143, 1415, 1142, 1665, - 1383, 1384, 1381, 1160, 1606, 1518, 1435, 1378, 1707, 1407, - 853, 851, 362, 852, 850, 855, 854, 1253, 1254, 1255, - 1455, 1436, 125, 849, 1427, 342, 971, 1449, 1448, 1433, - 359, 1110, 362, 841, 809, 1223, 1222, 913, 362, 362, - 1531, 1157, 339, 676, 1331, 1479, 1023, 344, 730, 1022, - 1424, 1311, 1358, 479, 472, 1484, 1482, 1200, 95, 1747, - 1726, 125, 1476, 1724, 1697, 1648, 1727, 1695, 1755, 1740, - 1070, 797, 1488, 1583, 1472, 362, 1280, 362, 759, 362, - 1042, 1487, 1375, 1375, 1375, 824, 1497, 382, 1434, 1510, - 981, 397, 1501, 394, 1503, 395, 1504, 1523, 1081, 1323, - 1502, 704, 380, 374, 816, 1102, 1100, 1099, 828, 1459, - 1514, 1515, 1516, 1509, 1495, 1512, 1511, 1521, 1522, 125, - 1491, 1153, 822, 1085, 126, 454, 1039, 1685, 1571, 1545, - 362, 362, 362, 453, 125, 363, 1535, 126, 58, 36, - 366, 689, 1534, 1536, 1537, 1434, 363, 462, 30, 29, - 126, 1574, 28, 23, 22, 126, 21, 20, 126, 19, - 25, 126, 18, 363, 17, 16, 106, 102, 363, 363, - 363, 126, 363, 363, 45, 1554, 43, 1559, 41, 1550, - 1551, 40, 639, 27, 26, 15, 363, 363, 1138, 14, - 1138, 13, 711, 710, 720, 721, 713, 714, 715, 716, - 717, 718, 719, 712, 12, 11, 722, 10, 9, 1331, - 5, 4, 1587, 692, 24, 748, 2, 0, 0, 0, - 362, 1596, 0, 0, 0, 0, 0, 0, 362, 1595, - 0, 0, 1365, 0, 0, 0, 0, 0, 0, 411, - 32, 0, 1601, 1025, 1026, 1602, 0, 0, 0, 0, - 0, 0, 0, 0, 362, 0, 0, 0, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 1630, 0, - 1556, 1557, 32, 1558, 0, 0, 1560, 0, 1562, 0, - 0, 0, 1429, 1430, 0, 0, 1069, 362, 362, 362, - 125, 362, 363, 363, 1640, 1642, 1643, 1450, 1451, 0, - 1452, 1453, 362, 126, 362, 1582, 0, 0, 1644, 1628, - 362, 1636, 1460, 1461, 444, 363, 1657, 1660, 1653, 1482, - 465, 0, 126, 1482, 0, 363, 1655, 1651, 0, 126, - 1662, 126, 0, 1138, 0, 1659, 1669, 362, 125, 126, - 126, 1661, 0, 1670, 1679, 1671, 363, 0, 0, 363, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 363, 363, 1609, 0, 1611, 0, 0, 1625, 0, 0, - 1694, 0, 1216, 0, 0, 362, 0, 0, 1702, 0, - 0, 0, 0, 373, 0, 1482, 0, 362, 362, 362, - 0, 0, 0, 0, 1629, 0, 0, 0, 0, 0, - 0, 1715, 1714, 0, 1520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 362, 363, 125, 1721, 1646, 126, - 0, 1331, 1730, 0, 0, 0, 1212, 1213, 1214, 0, - 0, 1734, 1736, 0, 0, 0, 0, 0, 0, 1745, - 1744, 0, 0, 0, 126, 126, 126, 126, 126, 1753, - 0, 126, 126, 1552, 1569, 126, 363, 0, 0, 0, - 0, 0, 362, 0, 0, 0, 0, 0, 0, 1762, - 0, 0, 126, 0, 0, 0, 0, 0, 126, 126, - 126, 0, 0, 0, 126, 363, 1778, 0, 0, 0, - 0, 0, 0, 1789, 0, 0, 0, 408, 1215, 0, - 0, 1625, 1138, 1220, 1217, 1208, 1218, 1211, 1259, 1207, - 0, 0, 1260, 1209, 1210, 0, 0, 0, 0, 0, - 0, 0, 0, 1267, 1268, 0, 0, 1219, 0, 1274, - 0, 0, 1277, 1278, 0, 0, 0, 0, 0, 0, - 1284, 0, 0, 0, 1286, 0, 0, 1289, 1290, 1291, - 1292, 1293, 0, 0, 361, 0, 711, 710, 720, 721, - 713, 714, 715, 716, 717, 718, 719, 712, 0, 0, - 722, 126, 0, 0, 0, 0, 0, 0, 0, 126, - 0, 670, 0, 0, 480, 0, 0, 613, 0, 620, - 670, 1631, 1632, 1633, 1634, 1635, 0, 0, 0, 1638, - 1639, 126, 0, 0, 0, 0, 32, 1346, 1347, 0, - 0, 0, 126, 126, 126, 126, 126, 731, 733, 0, - 0, 0, 0, 0, 126, 0, 0, 0, 126, 0, - 0, 126, 126, 0, 0, 126, 126, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 746, 0, - 363, 0, 751, 752, 753, 754, 755, 756, 757, 758, - 0, 761, 764, 764, 764, 770, 764, 764, 770, 764, - 778, 779, 780, 781, 782, 783, 784, 1428, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 703, 711, 710, 720, - 721, 713, 714, 715, 716, 717, 718, 719, 712, 0, - 825, 722, 363, 0, 0, 363, 720, 721, 713, 714, - 715, 716, 717, 718, 719, 712, 789, 0, 722, 0, - 0, 0, 373, 0, 0, 0, 126, 0, 1258, 0, - 0, 760, 363, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 363, 0, 0, 1431, 1432, 711, 710, + 437, 1699, 1542, 1784, 1773, 1742, 1417, 1048, 1675, 1330, + 671, 1647, 1137, 410, 1624, 1480, 1298, 1188, 1481, 1133, + 1182, 396, 1331, 448, 800, 749, 1604, 1477, 793, 381, + 1062, 1317, 1398, 78, 3, 651, 911, 1399, 615, 1465, + 1375, 1146, 1136, 1437, 1112, 481, 113, 618, 1492, 125, + 944, 350, 125, 1010, 1257, 1017, 76, 362, 1190, 125, + 612, 669, 1391, 963, 1151, 830, 837, 1094, 1101, 369, + 457, 821, 1064, 803, 1043, 823, 798, 820, 787, 31, + 442, 383, 987, 1191, 1207, 1077, 451, 362, 372, 619, + 362, 125, 362, 125, 1167, 836, 611, 478, 1178, 1117, + 827, 810, 74, 834, 379, 958, 660, 104, 79, 105, + 125, 125, 762, 1059, 1060, 973, 73, 1296, 125, 763, + 643, 1696, 902, 125, 1020, 8, 7, 6, 1649, 1533, + 370, 371, 1614, 422, 1777, 428, 429, 426, 427, 425, + 424, 423, 1739, 81, 82, 83, 84, 85, 86, 430, + 431, 1771, 1720, 923, 443, 463, 467, 1195, 1764, 1543, + 1738, 1719, 1454, 1572, 622, 1507, 1508, 922, 101, 118, + 119, 120, 33, 1128, 1129, 67, 37, 38, 1193, 838, + 1297, 839, 1506, 33, 34, 35, 67, 37, 38, 1127, + 475, 441, 114, 115, 116, 440, 101, 109, 93, 110, + 684, 1361, 1383, 71, 1360, 677, 678, 1362, 39, 64, + 65, 628, 62, 627, 1419, 1161, 1607, 630, 63, 679, + 114, 115, 116, 680, 677, 678, 1722, 114, 115, 116, + 1168, 921, 1061, 1686, 711, 710, 720, 721, 713, 714, + 715, 716, 717, 718, 719, 712, 66, 51, 722, 1192, + 1563, 101, 94, 1561, 92, 360, 972, 66, 97, 364, + 358, 98, 99, 657, 682, 659, 683, 933, 674, 974, + 975, 976, 638, 1420, 672, 673, 1422, 1237, 932, 1421, + 930, 1763, 1217, 1752, 918, 915, 916, 1676, 914, 1095, + 1229, 1788, 1705, 1790, 1186, 1186, 469, 656, 658, 1513, + 100, 1186, 111, 1423, 1667, 614, 642, 667, 629, 1299, + 1301, 934, 624, 938, 931, 687, 905, 1464, 1463, 1462, + 625, 925, 928, 42, 44, 47, 46, 49, 100, 61, + 125, 649, 1155, 1703, 655, 329, 1213, 1214, 1215, 117, + 1593, 1236, 362, 1226, 1235, 1505, 636, 734, 735, 1228, + 1155, 362, 50, 70, 69, 1276, 1322, 59, 60, 48, + 1286, 1265, 1123, 814, 920, 362, 362, 1532, 1273, 747, + 647, 1168, 114, 115, 116, 712, 52, 53, 722, 54, + 55, 56, 57, 100, 1134, 685, 919, 722, 964, 641, + 1194, 114, 115, 116, 654, 1357, 1718, 1300, 1438, 959, + 693, 1073, 661, 702, 114, 115, 116, 1678, 1216, 1723, + 701, 699, 686, 1221, 1218, 1209, 1219, 1212, 1687, 1208, + 633, 912, 634, 1210, 1211, 635, 1524, 702, 666, 1786, + 1044, 924, 1787, 1490, 1785, 1668, 1666, 1220, 840, 1440, + 668, 125, 662, 663, 664, 330, 926, 715, 716, 717, + 718, 719, 712, 697, 333, 722, 1456, 103, 1154, 68, + 732, 1158, 343, 89, 907, 653, 362, 790, 1159, 125, + 68, 125, 125, 675, 362, 1227, 1154, 1225, 791, 1442, + 362, 1446, 699, 1441, 478, 1439, 1381, 734, 735, 1791, + 1444, 750, 696, 694, 695, 1708, 341, 965, 702, 1443, + 734, 735, 90, 807, 1044, 348, 1283, 1613, 960, 785, + 644, 645, 1445, 1447, 1396, 819, 788, 710, 720, 721, + 713, 714, 715, 716, 717, 718, 719, 712, 804, 1765, + 722, 623, 700, 701, 699, 331, 765, 767, 769, 771, + 773, 775, 776, 766, 768, 994, 772, 774, 1075, 777, + 702, 700, 701, 699, 792, 1792, 1766, 1612, 452, 992, + 993, 991, 345, 334, 335, 1538, 346, 347, 354, 702, + 637, 652, 338, 340, 351, 336, 337, 356, 355, 802, + 332, 353, 352, 711, 710, 720, 721, 713, 714, 715, + 716, 717, 718, 719, 712, 1467, 1757, 722, 711, 710, 720, 721, 713, 714, 715, 716, 717, 718, 719, 712, - 796, 799, 722, 0, 0, 123, 0, 0, 363, 0, - 706, 0, 709, 0, 0, 365, 0, 0, 723, 724, - 725, 726, 727, 728, 729, 1775, 707, 708, 705, 711, + 1074, 125, 722, 1272, 1395, 898, 1394, 700, 701, 699, + 1575, 1198, 362, 1758, 125, 1458, 908, 909, 626, 700, + 701, 699, 927, 362, 1768, 702, 1767, 125, 1078, 1079, + 1258, 1759, 125, 1468, 1750, 125, 943, 702, 125, 1733, + 362, 1250, 1251, 1252, 1574, 362, 362, 362, 125, 362, + 362, 711, 710, 720, 721, 713, 714, 715, 716, 717, + 718, 719, 712, 362, 362, 722, 66, 982, 984, 985, + 1637, 1610, 1581, 904, 983, 1469, 948, 1404, 990, 1392, + 700, 701, 699, 946, 929, 711, 710, 720, 721, 713, + 714, 715, 716, 717, 718, 719, 712, 957, 702, 722, + 949, 947, 452, 700, 701, 699, 951, 952, 953, 988, + 955, 956, 1673, 1011, 114, 115, 116, 1672, 1012, 1407, + 835, 702, 1013, 1351, 961, 962, 114, 115, 116, 1428, + 967, 1118, 939, 1664, 1769, 628, 362, 627, 114, 115, + 116, 1156, 1411, 1664, 1716, 1489, 1025, 1026, 1021, 711, + 710, 720, 721, 713, 714, 715, 716, 717, 718, 719, + 712, 1712, 452, 722, 1588, 1027, 1271, 468, 75, 362, + 362, 966, 1664, 1704, 1270, 1032, 1035, 989, 1569, 969, + 125, 1045, 698, 1023, 1664, 452, 1664, 1663, 1022, 1069, + 901, 1603, 362, 700, 701, 699, 114, 115, 116, 125, + 1364, 33, 362, 750, 1068, 1677, 125, 473, 125, 1580, + 452, 702, 1591, 452, 1080, 1021, 125, 125, 114, 115, + 116, 1528, 1205, 362, 1530, 1529, 362, 1053, 1054, 1014, + 1015, 1526, 1527, 478, 1526, 1525, 478, 362, 362, 66, + 1119, 1024, 1086, 452, 1318, 452, 1119, 1138, 1654, 1113, + 1023, 77, 470, 471, 1751, 1092, 1098, 452, 1098, 399, + 398, 401, 402, 403, 404, 1088, 1028, 1029, 400, 405, + 1034, 1037, 1038, 698, 452, 66, 1153, 901, 900, 1365, + 711, 710, 720, 721, 713, 714, 715, 716, 717, 718, + 719, 712, 362, 1615, 722, 1052, 125, 1568, 1055, 1056, + 1318, 1120, 1204, 1090, 1478, 33, 1087, 1120, 1184, 1122, + 847, 846, 1098, 1489, 1097, 1118, 1086, 1116, 1121, 1125, + 1126, 125, 125, 125, 125, 125, 1124, 1185, 125, 125, + 1325, 1289, 125, 362, 1141, 1288, 1086, 1203, 445, 1118, + 1616, 1617, 1618, 1076, 1401, 1057, 1169, 1170, 1171, 125, + 937, 832, 1326, 1626, 1599, 125, 125, 125, 903, 33, + 1183, 125, 362, 1567, 1098, 1517, 899, 1162, 1489, 1163, + 1164, 1165, 1166, 1206, 1418, 1086, 1369, 1179, 1197, 66, + 1173, 1196, 1202, 1180, 1181, 1174, 1175, 1176, 1177, 1243, + 1222, 1172, 91, 1247, 1241, 988, 1400, 1493, 1494, 711, 710, 720, 721, 713, 714, 715, 716, 717, 718, 719, - 712, 0, 0, 722, 0, 363, 0, 617, 0, 621, - 0, 0, 1485, 0, 0, 126, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 363, 631, 632, 0, 480, - 0, 363, 363, 1500, 640, 1568, 0, 0, 480, 646, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 670, 688, 690, 126, 0, 0, 0, 0, 0, - 0, 0, 670, 0, 0, 0, 0, 0, 363, 0, - 363, 1567, 363, 0, 0, 0, 0, 0, 0, 670, - 0, 0, 0, 0, 670, 670, 670, 0, 670, 670, - 0, 1566, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 670, 670, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 0, 0, 0, 0, 0, 1553, 0, - 0, 0, 1555, 363, 363, 363, 0, 126, 0, 0, - 0, 0, 0, 1564, 1565, 0, 0, 711, 710, 720, - 721, 713, 714, 715, 716, 717, 718, 719, 712, 0, - 1579, 722, 0, 812, 0, 0, 0, 0, 0, 0, - 0, 480, 0, 0, 950, 0, 0, 842, 1589, 1590, - 0, 0, 1594, 711, 710, 720, 721, 713, 714, 715, - 716, 717, 718, 719, 712, 0, 0, 722, 0, 0, - 0, 0, 968, 711, 710, 720, 721, 713, 714, 715, - 716, 717, 718, 719, 712, 0, 0, 722, 0, 977, - 978, 979, 980, 363, 0, 0, 0, 0, 0, 0, - 0, 363, 711, 710, 720, 721, 713, 714, 715, 716, - 717, 718, 719, 712, 0, 0, 722, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 648, 363, 0, 0, - 0, 0, 0, 0, 0, 1114, 0, 0, 0, 0, - 0, 1641, 0, 0, 1030, 1031, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 363, 363, 363, 126, 363, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 363, 0, 363, 0, 0, - 0, 0, 0, 363, 0, 0, 0, 0, 0, 480, - 0, 0, 0, 0, 0, 0, 1681, 1682, 1683, 1684, - 480, 1688, 0, 1689, 1690, 1691, 0, 1692, 1693, 0, - 363, 126, 0, 0, 0, 0, 0, 480, 0, 0, - 0, 0, 480, 480, 480, 0, 480, 480, 0, 0, - 0, 1132, 0, 0, 0, 0, 0, 0, 0, 1711, - 480, 480, 0, 0, 0, 0, 0, 0, 363, 0, - 1717, 0, 670, 0, 0, 0, 0, 0, 0, 0, - 363, 363, 363, 0, 0, 818, 0, 0, 829, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 363, 0, 126, + 712, 1260, 66, 722, 1619, 1261, 720, 721, 713, 714, + 715, 716, 717, 718, 719, 712, 1268, 1269, 722, 1627, + 1195, 1779, 1275, 66, 1774, 1278, 1279, 1519, 1496, 1478, + 1401, 1267, 1409, 1285, 970, 941, 1754, 1287, 125, 1499, + 1290, 1291, 1292, 1293, 1294, 1342, 125, 1340, 1620, 1621, + 1343, 1498, 1341, 989, 1253, 711, 710, 720, 721, 713, + 714, 715, 716, 717, 718, 719, 712, 1339, 125, 722, + 1344, 1338, 1107, 1108, 1737, 1470, 1307, 1304, 801, 125, + 125, 125, 125, 125, 443, 1266, 1735, 1592, 1316, 1311, + 1315, 125, 376, 1728, 1725, 125, 438, 1282, 125, 125, + 1347, 1348, 125, 125, 125, 1323, 1756, 1332, 1327, 1741, + 1743, 1305, 1320, 788, 1749, 1363, 1295, 362, 1303, 1306, + 1748, 1700, 1698, 1262, 1263, 936, 1370, 1138, 1349, 1366, + 96, 1376, 1376, 1310, 439, 1405, 1040, 1400, 1387, 1321, + 1319, 910, 1352, 845, 1280, 126, 1354, 650, 126, 946, + 1041, 1334, 1335, 363, 1337, 126, 1333, 1566, 1345, 1336, + 1380, 107, 794, 1350, 1710, 1709, 1586, 1386, 1355, 1388, + 1389, 1390, 1377, 1358, 795, 108, 362, 1652, 121, 1378, + 362, 1371, 1368, 363, 1410, 1541, 363, 126, 363, 126, + 1078, 1079, 1200, 1372, 1373, 1374, 1103, 1106, 1107, 1108, + 1104, 1071, 1105, 1109, 125, 940, 126, 126, 1111, 1403, + 362, 446, 447, 449, 126, 1314, 1393, 1761, 1760, 126, + 77, 362, 1746, 1313, 1729, 1585, 450, 1584, 1402, 1473, + 713, 714, 715, 716, 717, 718, 719, 712, 1384, 1385, + 722, 1408, 1318, 681, 1781, 1780, 362, 1277, 1274, 815, + 1431, 1432, 1011, 808, 1781, 1701, 1434, 1412, 1608, 711, + 710, 720, 721, 713, 714, 715, 716, 717, 718, 719, + 712, 1435, 1413, 722, 1415, 1072, 1436, 1459, 445, 75, + 80, 72, 1424, 362, 458, 1455, 1425, 1, 1058, 1427, + 1426, 786, 458, 125, 349, 1772, 1449, 112, 459, 1544, + 1433, 1623, 917, 362, 1674, 1448, 459, 1201, 1397, 362, + 362, 1189, 1023, 1434, 1144, 1479, 1485, 1022, 1135, 88, + 1482, 805, 806, 461, 609, 460, 87, 1476, 665, 455, + 456, 461, 125, 460, 1143, 1332, 1142, 1500, 1665, 1382, + 1160, 1606, 1488, 1518, 1379, 1707, 362, 853, 362, 1487, + 362, 851, 852, 1376, 1376, 1376, 1138, 850, 1138, 855, + 1510, 854, 1501, 849, 1503, 1497, 1504, 342, 1523, 971, + 359, 1103, 1106, 1107, 1108, 1104, 1502, 1105, 1109, 1110, + 841, 1493, 1494, 809, 1521, 1522, 1539, 1224, 1509, 1153, + 125, 1223, 1512, 1514, 1515, 1516, 913, 1511, 1531, 1545, + 362, 362, 362, 1157, 125, 339, 676, 344, 730, 1312, + 1359, 479, 1535, 472, 1484, 95, 1534, 1536, 1537, 1747, + 1726, 1553, 1724, 1697, 1648, 1555, 126, 1727, 1695, 1755, + 1740, 1070, 797, 1583, 1472, 1281, 1564, 1565, 363, 1554, + 759, 1550, 1551, 1559, 1042, 824, 382, 363, 981, 397, + 394, 395, 1081, 1579, 1324, 704, 380, 374, 816, 1102, + 1100, 363, 363, 1099, 828, 1495, 1491, 822, 1085, 454, + 1039, 1589, 1590, 1685, 1571, 1594, 453, 736, 737, 738, + 739, 740, 741, 742, 743, 744, 745, 1587, 58, 36, + 362, 366, 1596, 1595, 689, 462, 30, 29, 362, 1332, + 1138, 28, 1366, 23, 22, 21, 1601, 20, 19, 25, + 18, 17, 16, 106, 1602, 102, 45, 43, 41, 40, + 639, 27, 26, 15, 362, 14, 13, 12, 11, 10, + 9, 5, 4, 692, 1625, 24, 748, 126, 1630, 2, + 0, 1556, 1557, 1582, 1558, 0, 0, 1560, 0, 1562, + 0, 0, 0, 0, 0, 0, 0, 362, 362, 362, + 125, 362, 363, 1628, 1641, 126, 0, 126, 126, 0, + 363, 0, 362, 0, 362, 1636, 363, 0, 0, 0, + 362, 0, 1482, 1640, 1642, 1643, 1482, 1653, 1657, 0, + 1644, 1651, 0, 0, 0, 0, 0, 0, 0, 1659, + 1609, 1662, 1611, 0, 1655, 1661, 1660, 362, 125, 1670, + 1669, 1671, 0, 0, 0, 0, 0, 0, 0, 1681, + 1682, 1683, 1684, 0, 1688, 0, 1689, 1690, 1691, 0, + 1692, 1693, 1629, 1679, 0, 0, 0, 0, 0, 0, + 0, 1694, 0, 0, 0, 362, 0, 0, 1482, 0, + 1702, 0, 0, 0, 0, 0, 1646, 362, 362, 362, + 0, 0, 1711, 0, 0, 0, 0, 0, 1625, 1138, + 0, 1715, 1714, 1717, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 362, 0, 125, 1721, 0, 0, + 0, 1730, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1734, 0, 1736, 0, 0, 1745, 126, 0, 1744, + 0, 1332, 0, 0, 0, 0, 0, 0, 363, 1753, + 126, 0, 0, 0, 0, 0, 0, 0, 0, 363, + 0, 0, 362, 126, 0, 0, 0, 0, 126, 0, + 0, 126, 0, 0, 126, 0, 363, 0, 0, 0, + 0, 363, 363, 363, 126, 363, 363, 1778, 1762, 0, + 0, 0, 0, 1782, 1783, 1789, 706, 0, 709, 363, + 363, 0, 0, 0, 723, 724, 725, 726, 727, 728, + 729, 0, 707, 708, 705, 711, 710, 720, 721, 713, + 714, 715, 716, 717, 718, 719, 712, 986, 0, 722, + 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, + 1005, 1006, 1007, 1008, 1009, 0, 0, 0, 0, 0, + 0, 0, 411, 32, 0, 711, 710, 720, 721, 713, + 714, 715, 716, 717, 718, 719, 712, 0, 1259, 722, + 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 32, 0, 1049, 711, 710, + 720, 721, 713, 714, 715, 716, 717, 718, 719, 712, + 0, 0, 722, 0, 0, 363, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 444, 363, 789, + 0, 0, 0, 0, 0, 126, 0, 0, 363, 0, + 465, 0, 126, 870, 126, 0, 0, 0, 0, 0, + 0, 0, 126, 126, 0, 0, 0, 0, 0, 363, + 0, 0, 363, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 363, 363, 0, 0, 0, 123, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 365, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 617, 0, 621, 0, 0, 0, 0, 0, 363, 0, + 0, 0, 126, 0, 0, 0, 0, 0, 0, 631, + 632, 0, 0, 0, 0, 0, 0, 640, 0, 858, + 0, 0, 646, 0, 0, 0, 0, 126, 126, 126, + 126, 126, 0, 0, 126, 126, 0, 0, 126, 363, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, + 871, 126, 126, 126, 0, 0, 0, 126, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 408, 0, 0, 0, 0, 1254, 1255, 1256, 0, 884, + 887, 888, 889, 890, 891, 892, 0, 893, 894, 895, + 896, 897, 872, 873, 874, 875, 856, 857, 885, 0, + 859, 0, 860, 861, 862, 863, 864, 865, 866, 867, + 868, 869, 876, 877, 878, 879, 880, 881, 882, 883, + 0, 0, 0, 0, 0, 0, 0, 361, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, + 0, 0, 126, 0, 670, 0, 0, 480, 0, 0, + 613, 0, 620, 670, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 126, 0, 886, 0, 0, 32, + 0, 0, 0, 0, 0, 126, 126, 126, 126, 126, + 731, 733, 0, 0, 0, 0, 0, 126, 0, 0, + 0, 126, 0, 0, 126, 126, 0, 0, 126, 126, + 126, 0, 0, 0, 0, 0, 0, 0, 0, 648, + 0, 746, 0, 363, 0, 751, 752, 753, 754, 755, + 756, 757, 758, 0, 761, 764, 764, 764, 770, 764, + 764, 770, 764, 778, 779, 780, 781, 782, 783, 784, + 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 703, 0, 0, 0, + 0, 0, 363, 825, 0, 0, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 126, 0, 373, 0, 0, 0, 363, 0, 0, 0, + 0, 760, 0, 0, 0, 0, 0, 363, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1429, 1430, 0, 0, 0, 0, 0, 0, 0, + 796, 799, 363, 0, 0, 0, 1450, 1451, 818, 1452, + 1453, 829, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1460, 1461, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, + 0, 0, 480, 0, 0, 363, 363, 0, 0, 0, + 0, 480, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 670, 688, 690, 0, 126, 0, + 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, + 0, 0, 363, 0, 363, 0, 363, 0, 0, 0, + 0, 0, 670, 1520, 0, 0, 0, 670, 670, 670, + 0, 670, 670, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 670, 670, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, + 848, 0, 0, 0, 0, 0, 363, 363, 363, 0, + 126, 1552, 0, 906, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 935, 0, 0, 0, + 0, 829, 0, 0, 942, 0, 812, 0, 0, 0, + 0, 0, 0, 0, 480, 0, 0, 954, 0, 0, + 842, 0, 0, 0, 950, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 968, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 363, 0, 0, 977, + 978, 979, 980, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 363, 0, 0, 0, 0, 0, 0, 0, 1114, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1631, + 1632, 1633, 1634, 1635, 1030, 1031, 0, 1638, 1639, 0, + 0, 0, 0, 363, 363, 363, 126, 363, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 363, 0, + 363, 0, 0, 0, 0, 0, 363, 0, 0, 0, + 0, 0, 480, 0, 0, 0, 0, 0, 1089, 0, + 0, 0, 0, 480, 0, 1093, 0, 1096, 0, 0, + 0, 0, 0, 363, 126, 0, 1115, 0, 0, 0, + 480, 0, 0, 0, 0, 480, 480, 480, 0, 480, + 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1132, 0, 480, 480, 0, 0, 0, 0, 0, + 0, 363, 0, 0, 0, 670, 0, 0, 0, 0, + 0, 0, 0, 363, 363, 363, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 363, 0, 126, 0, 0, 1199, 0, 0, 0, 0, 1187, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1016, 0, 480, 0, + 1230, 1231, 1232, 1233, 1234, 0, 0, 1238, 1239, 0, + 0, 1240, 1046, 0, 1264, 0, 0, 444, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1242, 1050, + 1051, 0, 0, 1775, 0, 0, 1246, 0, 0, 0, + 1248, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1082, 409, 0, 0, 1302, 0, 0, 0, + 0, 0, 812, 0, 0, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1016, 0, 480, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1046, - 0, 1263, 0, 0, 444, 363, 0, 0, 0, 0, - 1782, 1783, 0, 0, 0, 0, 1050, 1051, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1082, - 409, 0, 0, 1301, 0, 0, 0, 0, 0, 812, - 0, 0, 480, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 825, 0, 0, - 480, 0, 0, 480, 1327, 1328, 0, 848, 825, 825, - 825, 825, 825, 0, 480, 613, 0, 0, 0, 124, - 906, 0, 357, 0, 1114, 0, 0, 825, 0, 124, - 0, 825, 0, 935, 0, 1283, 0, 0, 829, 0, - 0, 942, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 466, 466, 954, 0, 0, 0, 0, 0, - 0, 124, 0, 124, 0, 1307, 1308, 799, 0, 620, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 124, 124, 0, 0, 0, 0, 0, 0, 124, 0, - 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, - 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 825, 0, 0, 480, 0, 0, 480, 1328, 1329, 0, + 0, 825, 825, 825, 825, 825, 0, 480, 613, 0, + 0, 0, 124, 0, 0, 357, 0, 1114, 0, 0, + 825, 0, 124, 0, 825, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1284, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 466, 466, 0, 0, 0, + 0, 0, 0, 0, 124, 0, 124, 0, 0, 0, + 0, 0, 620, 0, 0, 1308, 1309, 799, 0, 0, + 0, 0, 0, 124, 124, 0, 0, 0, 0, 0, + 0, 124, 0, 0, 0, 0, 124, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1353, 0, + 0, 0, 670, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1248, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1089, 0, 0, 0, 0, - 0, 0, 1093, 0, 1096, 0, 0, 0, 0, 0, - 0, 0, 0, 1115, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1483, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 825, 0, 0, 0, 0, 1046, 0, 0, 0, 0, - 0, 0, 0, 1457, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1483, + 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 825, 0, 0, 0, 1046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 124, 0, 1198, 0, 480, 0, 0, 0, 1474, 0, + 0, 0, 0, 0, 1457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1229, 1230, 1231, - 1232, 1233, 0, 0, 1237, 1238, 0, 0, 1239, 0, + 0, 0, 1471, 124, 0, 0, 0, 480, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1241, 0, 0, 0, 0, - 0, 0, 0, 1245, 1570, 0, 480, 1247, 0, 1409, - 0, 0, 1576, 1577, 1578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1416, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, - 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, - 0, 0, 480, 0, 0, 0, 0, 0, 0, 124, - 0, 124, 831, 0, 0, 0, 0, 0, 0, 1573, - 0, 1622, 0, 480, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1466, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1406, 1570, 0, 0, + 480, 0, 0, 0, 0, 1576, 1577, 1578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1540, + 1416, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 480, 0, 1549, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, + 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, + 0, 0, 124, 0, 124, 831, 0, 0, 0, 0, + 0, 0, 0, 0, 1622, 0, 0, 480, 0, 1573, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, - 0, 1597, 0, 0, 1598, 0, 0, 1600, 0, 480, - 0, 0, 1046, 0, 0, 1486, 1466, 0, 1483, 0, - 32, 0, 1483, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1352, 0, 0, 0, 0, + 0, 1597, 0, 480, 1598, 0, 1046, 1600, 0, 1486, + 1466, 1483, 0, 32, 0, 1483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 480, 0, 480, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 480, 0, 480, 0, + 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1483, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1650, 373, 0, 0, 0, - 0, 124, 0, 0, 0, 0, 0, 1546, 1547, 1548, - 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, - 0, 0, 124, 0, 0, 124, 0, 0, 945, 1414, - 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, + 0, 0, 0, 0, 0, 0, 0, 1483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 124, 1650, 373, 0, 0, 0, + 1546, 1547, 1548, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1046, 0, 0, + 124, 0, 0, 0, 0, 124, 0, 1680, 124, 0, + 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1770, 0, 0, 0, 480, 0, 0, - 0, 0, 0, 0, 0, 1605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1471, 0, - 0, 480, 0, 0, 0, 0, 0, 466, 945, 0, - 0, 0, 466, 466, 0, 0, 466, 466, 466, 0, - 0, 0, 1047, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1605, 1605, 1605, 0, 1645, 0, - 0, 466, 466, 466, 466, 466, 0, 0, 0, 1656, - 1066, 1658, 0, 0, 0, 0, 0, 1605, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, - 0, 0, 0, 0, 0, 945, 124, 0, 124, 0, - 0, 0, 0, 0, 1605, 0, 124, 124, 0, 0, - 0, 0, 0, 0, 0, 1540, 0, 0, 0, 0, + 1046, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1770, 0, 0, 0, + 480, 0, 0, 0, 0, 0, 0, 0, 1605, 0, + 0, 0, 0, 0, 0, 1732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1549, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1706, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1713, 480, 480, 0, 0, 0, + 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, + 466, 945, 0, 0, 0, 466, 466, 0, 0, 466, + 466, 466, 0, 0, 0, 1047, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1605, 1605, 1605, + 0, 1645, 0, 0, 466, 466, 466, 466, 466, 0, + 0, 0, 1656, 1066, 1658, 0, 0, 0, 0, 0, + 1605, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 124, 0, 0, 0, 0, 0, 945, 124, + 0, 124, 0, 0, 0, 0, 0, 1605, 0, 124, + 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1046, - 0, 1731, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1706, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1713, 480, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 124, 124, 124, 124, 0, 0, 124, 124, - 0, 0, 124, 0, 0, 0, 0, 0, 0, 1605, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, - 0, 0, 0, 0, 0, 1243, 1244, 124, 0, 0, - 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1046, 0, 1731, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 466, - 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 124, 124, 124, 124, 124, 0, + 0, 124, 124, 0, 0, 124, 0, 0, 0, 0, + 0, 0, 1605, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 124, 0, 0, 0, 0, 0, 1244, 1245, + 124, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1680, 0, 0, 0, 124, 0, - 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 466, 124, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1047, 124, - 124, 124, 124, 124, 0, 0, 0, 0, 0, 0, - 0, 1345, 0, 0, 0, 124, 0, 0, 124, 124, - 0, 0, 124, 1355, 945, 0, 0, 0, 0, 0, - 0, 0, 1732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 466, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 124, 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 466, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1047, 124, 124, 124, 124, 124, 0, 0, 0, + 0, 0, 0, 0, 1346, 0, 0, 0, 124, 0, + 0, 124, 124, 0, 0, 124, 1356, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 124, 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, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 466, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, + 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 124, 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, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 124, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, - 1066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 594, 582, 0, 124, 535, - 597, 508, 525, 605, 526, 529, 567, 493, 548, 231, - 523, 0, 512, 488, 519, 489, 510, 537, 162, 541, - 507, 584, 551, 596, 196, 0, 513, 242, 569, 273, - 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, - 241, 289, 235, 603, 199, 558, 0, 281, 217, 0, - 0, 0, 539, 586, 546, 578, 534, 568, 498, 557, - 598, 524, 565, 599, 188, 151, 131, 228, 282, 169, - 0, 0, 1047, 114, 115, 116, 124, 1139, 1140, 0, - 0, 0, 0, 0, 147, 0, 562, 593, 521, 564, - 566, 608, 487, 559, 0, 491, 494, 604, 589, 516, - 517, 1366, 0, 0, 0, 0, 0, 0, 538, 547, - 575, 532, 0, 0, 0, 0, 0, 0, 0, 0, - 514, 0, 556, 0, 0, 0, 495, 492, 0, 0, - 0, 0, 536, 0, 0, 0, 497, 0, 515, 576, - 0, 485, 174, 580, 588, 533, 315, 592, 531, 530, - 595, 253, 0, 286, 178, 195, 143, 192, 128, 139, - 0, 176, 227, 260, 264, 585, 511, 520, 154, 518, - 262, 239, 305, 555, 243, 261, 200, 294, 254, 304, - 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, - 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, - 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, - 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, - 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, - 180, 251, 203, 252, 181, 219, 218, 220, 0, 490, - 0, 283, 308, 328, 145, 506, 581, 291, 321, 324, - 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, - 323, 222, 142, 183, 279, 193, 201, 573, 607, 238, - 263, 149, 307, 280, 502, 505, 500, 501, 549, 550, - 600, 601, 602, 577, 496, 0, 503, 504, 0, 583, - 590, 591, 554, 127, 137, 198, 326, 256, 170, 309, - 486, 499, 158, 509, 0, 0, 522, 527, 528, 540, - 542, 543, 544, 545, 553, 560, 561, 563, 570, 571, - 572, 574, 579, 587, 606, 129, 130, 138, 144, 150, - 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, - 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, - 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, - 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, - 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, - 318, 177, 303, 319, 0, 205, 552, 594, 582, 0, - 0, 535, 597, 508, 525, 605, 526, 529, 567, 493, - 548, 231, 523, 0, 512, 488, 519, 489, 510, 537, - 162, 541, 507, 584, 551, 596, 196, 0, 513, 242, - 569, 273, 153, 204, 202, 292, 167, 163, 161, 152, - 184, 209, 241, 289, 235, 603, 199, 558, 0, 281, - 217, 0, 0, 0, 539, 586, 546, 578, 534, 568, - 498, 557, 598, 524, 565, 599, 188, 151, 131, 228, - 282, 169, 0, 0, 0, 114, 115, 116, 0, 1139, - 1140, 0, 0, 0, 0, 0, 147, 0, 562, 593, - 521, 564, 566, 608, 487, 559, 0, 491, 494, 604, - 589, 516, 517, 0, 0, 0, 0, 0, 0, 0, - 538, 547, 575, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 514, 0, 556, 0, 0, 0, 495, 492, - 0, 0, 0, 0, 536, 0, 0, 0, 497, 0, - 515, 576, 0, 485, 174, 580, 588, 533, 315, 592, - 531, 530, 595, 253, 0, 286, 178, 195, 143, 192, - 128, 139, 0, 176, 227, 260, 264, 585, 511, 520, - 154, 518, 262, 239, 305, 555, 243, 261, 200, 294, - 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, - 278, 132, 288, 302, 148, 272, 0, 0, 0, 134, - 300, 285, 215, 189, 190, 133, 0, 258, 160, 172, - 156, 230, 297, 298, 155, 327, 140, 312, 136, 141, - 311, 223, 293, 301, 216, 208, 135, 299, 214, 207, - 194, 166, 180, 251, 203, 252, 181, 219, 218, 220, - 0, 490, 0, 283, 308, 328, 145, 506, 581, 291, - 321, 324, 0, 255, 146, 173, 165, 250, 171, 197, - 320, 322, 323, 222, 142, 183, 279, 193, 201, 573, - 607, 238, 263, 149, 307, 280, 502, 505, 500, 501, - 549, 550, 600, 601, 602, 577, 496, 0, 503, 504, - 0, 583, 590, 591, 554, 127, 137, 198, 326, 256, - 170, 309, 486, 499, 158, 509, 0, 0, 522, 527, - 528, 540, 542, 543, 544, 545, 553, 560, 561, 563, - 570, 571, 572, 574, 579, 587, 606, 129, 130, 138, - 144, 150, 157, 164, 168, 175, 179, 182, 185, 186, - 187, 191, 206, 210, 211, 212, 213, 224, 225, 226, - 229, 232, 233, 234, 236, 237, 240, 244, 245, 246, - 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, - 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, - 306, 314, 318, 177, 303, 319, 0, 205, 552, 594, - 582, 0, 0, 535, 597, 508, 525, 605, 526, 529, - 567, 493, 548, 231, 523, 0, 512, 488, 519, 489, - 510, 537, 162, 541, 507, 584, 551, 596, 196, 0, - 513, 242, 569, 273, 153, 204, 202, 292, 167, 163, - 161, 152, 184, 209, 241, 289, 235, 603, 199, 558, - 0, 281, 217, 0, 0, 0, 539, 586, 546, 578, - 534, 568, 498, 557, 598, 524, 565, 599, 188, 151, - 131, 228, 282, 169, 0, 0, 0, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, - 562, 593, 521, 564, 566, 608, 487, 559, 0, 491, - 494, 604, 589, 516, 517, 0, 0, 0, 0, 0, - 0, 0, 538, 547, 575, 532, 0, 0, 0, 0, - 0, 0, 1475, 0, 514, 0, 556, 0, 0, 0, - 495, 492, 0, 0, 0, 0, 536, 0, 0, 0, - 497, 0, 515, 576, 0, 485, 174, 580, 588, 533, - 315, 592, 531, 530, 595, 253, 0, 286, 178, 195, - 143, 192, 128, 139, 0, 176, 227, 260, 264, 585, - 511, 520, 154, 518, 262, 239, 305, 555, 243, 261, - 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, - 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, - 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, - 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, - 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, - 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, - 218, 220, 0, 490, 0, 283, 308, 328, 145, 506, - 581, 291, 321, 324, 0, 255, 146, 173, 165, 250, - 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, - 201, 573, 607, 238, 263, 149, 307, 280, 502, 505, - 500, 501, 549, 550, 600, 601, 602, 577, 496, 0, - 503, 504, 0, 583, 590, 591, 554, 127, 137, 198, - 326, 256, 170, 309, 486, 499, 158, 509, 0, 0, - 522, 527, 528, 540, 542, 543, 544, 545, 553, 560, - 561, 563, 570, 571, 572, 574, 579, 587, 606, 129, - 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, - 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, - 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, - 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, - 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, - 295, 296, 306, 314, 318, 177, 303, 319, 0, 205, - 552, 594, 582, 0, 0, 535, 597, 508, 525, 605, - 526, 529, 567, 493, 548, 231, 523, 0, 512, 488, - 519, 489, 510, 537, 162, 541, 507, 584, 551, 596, - 196, 0, 513, 242, 569, 273, 153, 204, 202, 292, - 167, 163, 161, 152, 184, 209, 241, 289, 235, 603, - 199, 558, 0, 281, 217, 0, 0, 0, 539, 586, - 546, 578, 534, 568, 498, 557, 598, 524, 565, 599, - 188, 151, 131, 228, 282, 169, 66, 0, 0, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 147, 0, 562, 593, 521, 564, 566, 608, 487, 559, - 0, 491, 494, 604, 589, 516, 517, 0, 0, 0, - 0, 0, 0, 0, 538, 547, 575, 532, 0, 0, - 0, 0, 0, 0, 0, 0, 514, 0, 556, 0, - 0, 0, 495, 492, 0, 0, 0, 0, 536, 0, - 0, 0, 497, 0, 515, 576, 0, 485, 174, 580, - 588, 533, 315, 592, 531, 530, 595, 253, 0, 286, - 178, 195, 143, 192, 128, 139, 0, 176, 227, 260, - 264, 585, 511, 520, 154, 518, 262, 239, 305, 555, - 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, - 310, 290, 313, 325, 278, 132, 288, 302, 148, 272, - 0, 0, 0, 134, 300, 285, 215, 189, 190, 133, - 0, 258, 160, 172, 156, 230, 297, 298, 155, 327, - 140, 312, 136, 141, 311, 223, 293, 301, 216, 208, - 135, 299, 214, 207, 194, 166, 180, 251, 203, 252, - 181, 219, 218, 220, 0, 490, 0, 283, 308, 328, - 145, 506, 581, 291, 321, 324, 0, 255, 146, 173, - 165, 250, 171, 197, 320, 322, 323, 222, 142, 183, - 279, 193, 201, 573, 607, 238, 263, 149, 307, 280, - 502, 505, 500, 501, 549, 550, 600, 601, 602, 577, - 496, 0, 503, 504, 0, 583, 590, 591, 554, 127, - 137, 198, 326, 256, 170, 309, 486, 499, 158, 509, - 0, 0, 522, 527, 528, 540, 542, 543, 544, 545, - 553, 560, 561, 563, 570, 571, 572, 574, 579, 587, - 606, 129, 130, 138, 144, 150, 157, 164, 168, 175, - 179, 182, 185, 186, 187, 191, 206, 210, 211, 212, - 213, 224, 225, 226, 229, 232, 233, 234, 236, 237, - 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, - 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, - 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, - 0, 205, 552, 594, 582, 0, 0, 535, 597, 508, - 525, 605, 526, 529, 567, 493, 548, 231, 523, 0, - 512, 488, 519, 489, 510, 537, 162, 541, 507, 584, - 551, 596, 196, 0, 513, 242, 569, 273, 153, 204, - 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, - 235, 603, 199, 558, 0, 281, 217, 0, 0, 0, - 539, 586, 546, 578, 534, 568, 498, 557, 598, 524, - 565, 599, 188, 151, 131, 228, 282, 169, 0, 0, - 0, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 0, 562, 593, 521, 564, 566, 608, - 487, 559, 0, 491, 494, 604, 589, 516, 517, 0, - 0, 0, 0, 0, 0, 0, 538, 547, 575, 532, - 0, 0, 0, 0, 0, 0, 1356, 0, 514, 0, - 556, 0, 0, 0, 495, 492, 0, 0, 0, 0, - 536, 0, 0, 0, 497, 0, 515, 576, 0, 485, - 174, 580, 588, 533, 315, 592, 531, 530, 595, 253, - 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, - 227, 260, 264, 585, 511, 520, 154, 518, 262, 239, - 305, 555, 243, 261, 200, 294, 254, 304, 316, 317, - 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, - 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, - 190, 133, 0, 258, 160, 172, 156, 230, 297, 298, - 155, 327, 140, 312, 136, 141, 311, 223, 293, 301, - 216, 208, 135, 299, 214, 207, 194, 166, 180, 251, - 203, 252, 181, 219, 218, 220, 0, 490, 0, 283, - 308, 328, 145, 506, 581, 291, 321, 324, 0, 255, - 146, 173, 165, 250, 171, 197, 320, 322, 323, 222, - 142, 183, 279, 193, 201, 573, 607, 238, 263, 149, - 307, 280, 502, 505, 500, 501, 549, 550, 600, 601, - 602, 577, 496, 0, 503, 504, 0, 583, 590, 591, - 554, 127, 137, 198, 326, 256, 170, 309, 486, 499, - 158, 509, 0, 0, 522, 527, 528, 540, 542, 543, - 544, 545, 553, 560, 561, 563, 570, 571, 572, 574, - 579, 587, 606, 129, 130, 138, 144, 150, 157, 164, - 168, 175, 179, 182, 185, 186, 187, 191, 206, 210, - 211, 212, 213, 224, 225, 226, 229, 232, 233, 234, - 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, - 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, - 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, - 303, 319, 0, 205, 552, 594, 582, 0, 0, 535, - 597, 508, 525, 605, 526, 529, 567, 493, 548, 231, - 523, 0, 512, 488, 519, 489, 510, 537, 162, 541, - 507, 584, 551, 596, 196, 0, 513, 242, 569, 273, - 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, - 241, 289, 235, 603, 199, 558, 0, 281, 217, 0, - 0, 0, 539, 586, 546, 578, 534, 568, 498, 557, - 598, 524, 565, 599, 188, 151, 131, 228, 282, 169, - 0, 0, 0, 114, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 147, 0, 562, 593, 521, 564, - 566, 608, 487, 559, 0, 491, 494, 604, 589, 516, - 517, 0, 0, 0, 0, 0, 0, 0, 538, 547, - 575, 532, 0, 0, 0, 0, 0, 0, 1091, 0, - 514, 0, 556, 0, 0, 0, 495, 492, 0, 0, - 0, 0, 536, 0, 0, 0, 497, 0, 515, 576, - 0, 485, 174, 580, 588, 533, 315, 592, 531, 530, - 595, 253, 0, 286, 178, 195, 143, 192, 128, 139, - 0, 176, 227, 260, 264, 585, 511, 520, 154, 518, - 262, 239, 305, 555, 243, 261, 200, 294, 254, 304, - 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, - 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, - 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, - 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, - 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, - 180, 251, 203, 252, 181, 219, 218, 220, 0, 490, - 0, 283, 308, 328, 145, 506, 581, 291, 321, 324, - 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, - 323, 222, 142, 183, 279, 193, 201, 573, 607, 238, - 263, 149, 307, 280, 502, 505, 500, 501, 549, 550, - 600, 601, 602, 577, 496, 0, 503, 504, 0, 583, - 590, 591, 554, 127, 137, 198, 326, 256, 170, 309, - 486, 499, 158, 509, 0, 0, 522, 527, 528, 540, - 542, 543, 544, 545, 553, 560, 561, 563, 570, 571, - 572, 574, 579, 587, 606, 129, 130, 138, 144, 150, - 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, - 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, - 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, - 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, - 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, - 318, 177, 303, 319, 0, 205, 552, 594, 582, 0, - 0, 535, 597, 508, 525, 605, 526, 529, 567, 493, - 548, 231, 523, 0, 512, 488, 519, 489, 510, 537, - 162, 541, 507, 584, 551, 596, 196, 0, 513, 242, - 569, 273, 153, 204, 202, 292, 167, 163, 161, 152, - 184, 209, 241, 289, 235, 603, 199, 558, 0, 281, - 217, 0, 0, 0, 539, 586, 546, 578, 534, 568, - 498, 557, 598, 524, 565, 599, 188, 151, 131, 228, - 282, 169, 0, 0, 0, 114, 115, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 147, 0, 562, 593, - 521, 564, 566, 608, 487, 559, 0, 491, 494, 604, - 589, 516, 517, 0, 0, 0, 0, 0, 0, 0, - 538, 547, 575, 532, 0, 0, 0, 0, 0, 0, - 0, 0, 514, 0, 556, 0, 0, 0, 495, 492, - 0, 0, 0, 0, 536, 0, 0, 0, 497, 0, - 515, 576, 0, 485, 174, 580, 588, 533, 315, 592, - 531, 530, 595, 253, 0, 286, 178, 195, 143, 192, - 128, 139, 0, 176, 227, 260, 264, 585, 511, 520, - 154, 518, 262, 239, 305, 555, 243, 261, 200, 294, - 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, - 278, 132, 288, 302, 148, 272, 0, 0, 0, 134, - 300, 285, 215, 189, 190, 133, 0, 258, 160, 172, - 156, 230, 297, 298, 155, 327, 140, 312, 136, 141, - 311, 223, 293, 301, 216, 208, 135, 299, 214, 207, - 194, 166, 180, 251, 203, 252, 181, 219, 218, 220, - 0, 490, 0, 283, 308, 328, 145, 506, 581, 291, - 321, 324, 0, 255, 146, 173, 165, 250, 171, 197, - 320, 322, 323, 222, 142, 183, 279, 193, 201, 573, - 607, 238, 263, 149, 307, 280, 502, 505, 500, 501, - 549, 550, 600, 601, 602, 577, 496, 0, 503, 504, - 0, 583, 590, 591, 554, 127, 137, 198, 326, 256, - 170, 309, 486, 499, 158, 509, 0, 0, 522, 527, - 528, 540, 542, 543, 544, 545, 553, 560, 561, 563, - 570, 571, 572, 574, 579, 587, 606, 129, 130, 138, - 144, 150, 157, 164, 168, 175, 179, 182, 185, 186, - 187, 191, 206, 210, 211, 212, 213, 224, 225, 226, - 229, 232, 233, 234, 236, 237, 240, 244, 245, 246, - 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, - 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, - 306, 314, 318, 177, 303, 319, 0, 205, 552, 594, - 582, 0, 0, 535, 597, 508, 525, 605, 526, 529, - 567, 493, 548, 231, 523, 0, 512, 488, 519, 489, - 510, 537, 162, 541, 507, 584, 551, 596, 196, 0, - 513, 242, 569, 273, 153, 204, 202, 292, 167, 163, - 161, 152, 184, 209, 241, 289, 235, 603, 199, 558, - 0, 281, 217, 0, 0, 0, 539, 586, 546, 578, - 534, 568, 498, 557, 598, 524, 565, 599, 188, 151, - 131, 228, 282, 169, 0, 0, 0, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, - 562, 593, 521, 564, 566, 608, 487, 559, 0, 491, - 494, 604, 589, 516, 517, 0, 0, 0, 0, 0, - 0, 0, 538, 547, 575, 532, 0, 0, 0, 0, - 0, 0, 0, 0, 514, 0, 556, 0, 0, 0, - 495, 492, 0, 0, 0, 0, 536, 0, 0, 0, - 497, 0, 515, 576, 0, 485, 174, 580, 588, 533, - 315, 592, 531, 530, 595, 253, 0, 286, 178, 195, - 143, 192, 128, 139, 0, 176, 227, 260, 264, 585, - 511, 520, 154, 518, 262, 239, 305, 555, 243, 261, - 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, - 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, - 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, - 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, - 136, 483, 311, 223, 293, 301, 216, 208, 135, 299, - 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, - 218, 220, 0, 490, 0, 283, 308, 328, 145, 506, - 581, 291, 321, 324, 0, 255, 146, 173, 165, 250, - 171, 197, 320, 322, 323, 484, 482, 477, 476, 193, - 201, 573, 607, 238, 263, 149, 307, 280, 502, 505, - 500, 501, 549, 550, 600, 601, 602, 577, 496, 0, - 503, 504, 0, 583, 590, 591, 554, 127, 137, 198, - 326, 256, 170, 309, 486, 499, 158, 509, 0, 0, - 522, 527, 528, 540, 542, 543, 544, 545, 553, 560, - 561, 563, 570, 571, 572, 574, 579, 587, 606, 129, - 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, - 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, - 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, - 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, - 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, - 295, 296, 306, 314, 318, 177, 303, 319, 0, 205, - 552, 594, 582, 0, 0, 535, 597, 508, 525, 605, - 526, 529, 567, 493, 548, 231, 523, 0, 512, 488, - 519, 489, 510, 537, 162, 541, 507, 584, 551, 596, - 196, 0, 513, 242, 569, 273, 153, 204, 202, 292, - 167, 163, 161, 152, 184, 209, 241, 289, 235, 603, - 199, 558, 0, 281, 217, 0, 0, 0, 539, 586, - 546, 578, 534, 568, 498, 557, 598, 524, 565, 599, - 188, 151, 131, 228, 282, 169, 0, 0, 0, 114, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 147, 0, 562, 593, 521, 564, 566, 608, 487, 559, - 0, 491, 494, 604, 589, 516, 517, 0, 0, 0, - 0, 0, 0, 0, 538, 547, 575, 532, 0, 0, - 0, 0, 0, 0, 0, 0, 514, 0, 556, 0, - 0, 0, 495, 492, 0, 0, 0, 0, 536, 0, - 0, 0, 497, 0, 515, 576, 0, 485, 174, 580, - 588, 533, 315, 592, 531, 530, 595, 253, 0, 286, - 178, 195, 143, 192, 128, 139, 0, 176, 227, 260, - 264, 585, 511, 520, 154, 518, 262, 239, 305, 555, - 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, - 310, 290, 313, 325, 278, 132, 288, 833, 148, 272, - 0, 0, 0, 134, 300, 285, 215, 189, 190, 133, - 0, 258, 160, 172, 156, 230, 297, 298, 155, 327, - 140, 312, 136, 483, 311, 223, 293, 301, 216, 208, - 135, 299, 214, 207, 194, 166, 180, 251, 203, 252, - 181, 219, 218, 220, 0, 490, 0, 283, 308, 328, - 145, 506, 581, 291, 321, 324, 0, 255, 146, 173, - 165, 250, 171, 197, 320, 322, 323, 484, 482, 477, - 476, 193, 201, 573, 607, 238, 263, 149, 307, 280, - 502, 505, 500, 501, 549, 550, 600, 601, 602, 577, - 496, 0, 503, 504, 0, 583, 590, 591, 554, 127, - 137, 198, 326, 256, 170, 309, 486, 499, 158, 509, - 0, 0, 522, 527, 528, 540, 542, 543, 544, 545, - 553, 560, 561, 563, 570, 571, 572, 574, 579, 587, - 606, 129, 130, 138, 144, 150, 157, 164, 168, 175, - 179, 182, 185, 186, 187, 191, 206, 210, 211, 212, - 213, 224, 225, 226, 229, 232, 233, 234, 236, 237, - 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, - 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, - 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, - 0, 205, 552, 594, 582, 0, 0, 535, 597, 508, - 525, 605, 526, 529, 567, 493, 548, 231, 523, 0, - 512, 488, 519, 489, 510, 537, 162, 541, 507, 584, - 551, 596, 196, 0, 513, 242, 569, 273, 153, 204, - 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, - 235, 603, 199, 558, 0, 281, 217, 0, 0, 0, - 539, 586, 546, 578, 534, 568, 498, 557, 598, 524, - 565, 599, 188, 151, 131, 228, 282, 169, 0, 0, - 0, 114, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 147, 0, 562, 593, 521, 564, 566, 608, - 487, 559, 0, 491, 494, 604, 589, 516, 517, 0, - 0, 0, 0, 0, 0, 0, 538, 547, 575, 532, - 0, 0, 0, 0, 0, 0, 0, 0, 514, 0, - 556, 0, 0, 0, 495, 492, 0, 0, 0, 0, - 536, 0, 0, 0, 497, 0, 515, 576, 0, 485, - 174, 580, 588, 533, 315, 592, 531, 530, 595, 253, - 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, - 227, 260, 264, 585, 511, 520, 154, 518, 262, 239, - 305, 555, 243, 261, 200, 294, 254, 304, 316, 317, - 159, 221, 310, 290, 313, 325, 278, 132, 288, 474, - 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, - 190, 133, 0, 258, 160, 172, 156, 230, 297, 298, - 155, 327, 140, 312, 136, 483, 311, 223, 293, 301, - 216, 208, 135, 299, 214, 207, 194, 166, 180, 251, - 203, 252, 181, 219, 218, 220, 0, 490, 0, 283, - 308, 328, 145, 506, 581, 291, 321, 324, 0, 255, - 146, 173, 165, 250, 171, 197, 320, 322, 323, 484, - 482, 477, 476, 193, 201, 573, 607, 238, 263, 149, - 307, 280, 502, 505, 500, 501, 549, 550, 600, 601, - 602, 577, 496, 0, 503, 504, 0, 583, 590, 591, - 554, 127, 137, 198, 326, 256, 170, 309, 486, 499, - 158, 509, 0, 0, 522, 527, 528, 540, 542, 543, - 544, 545, 553, 560, 561, 563, 570, 571, 572, 574, - 579, 587, 606, 129, 130, 138, 144, 150, 157, 164, - 168, 175, 179, 182, 185, 186, 187, 191, 206, 210, - 211, 212, 213, 224, 225, 226, 229, 232, 233, 234, - 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, - 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, - 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, - 303, 319, 231, 205, 552, 1018, 0, 378, 0, 0, - 0, 162, 0, 377, 0, 0, 0, 196, 0, 1019, - 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, - 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, - 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, - 228, 282, 169, 66, 0, 0, 114, 115, 116, 399, - 398, 401, 402, 403, 404, 0, 0, 147, 400, 405, - 406, 407, 0, 0, 0, 0, 375, 392, 0, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, - 390, 464, 0, 0, 0, 435, 0, 391, 0, 0, - 384, 385, 387, 386, 388, 393, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 434, 0, 0, 315, - 0, 0, 432, 0, 253, 0, 286, 178, 195, 143, - 192, 128, 139, 0, 176, 227, 260, 264, 0, 0, - 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, - 294, 254, 304, 316, 317, 159, 221, 310, 290, 313, - 325, 278, 132, 288, 302, 148, 272, 0, 0, 0, - 134, 300, 285, 215, 189, 190, 133, 0, 258, 160, - 172, 156, 230, 297, 298, 155, 327, 140, 312, 136, - 141, 311, 223, 293, 301, 216, 208, 135, 299, 214, - 207, 194, 166, 180, 251, 203, 252, 181, 219, 218, - 220, 0, 0, 0, 283, 308, 328, 145, 0, 0, - 291, 321, 324, 0, 255, 146, 173, 165, 250, 171, - 197, 320, 322, 323, 222, 142, 183, 279, 193, 201, - 0, 0, 238, 263, 149, 307, 280, 422, 433, 428, - 429, 426, 427, 425, 424, 423, 436, 414, 415, 416, - 417, 419, 0, 430, 431, 418, 127, 137, 198, 326, - 256, 170, 309, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, - 138, 144, 150, 157, 164, 168, 175, 179, 182, 185, - 186, 187, 191, 206, 210, 211, 212, 213, 224, 225, - 226, 229, 232, 233, 234, 236, 237, 240, 244, 245, - 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, - 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, - 296, 306, 314, 318, 177, 303, 319, 231, 205, 0, - 0, 0, 378, 0, 0, 0, 162, 0, 377, 0, - 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, - 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, - 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, - 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, - 1130, 0, 188, 151, 131, 228, 282, 169, 66, 0, - 0, 114, 115, 116, 399, 398, 401, 402, 403, 404, - 0, 0, 147, 400, 405, 406, 407, 1131, 0, 0, - 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 389, 390, 0, 0, 0, 0, - 435, 0, 391, 0, 0, 384, 385, 387, 386, 388, - 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 174, 434, 0, 0, 315, 0, 0, 432, 0, 253, - 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, - 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, - 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, - 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, - 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, - 190, 133, 0, 258, 160, 172, 156, 230, 297, 298, - 155, 327, 140, 312, 136, 141, 311, 223, 293, 301, - 216, 208, 135, 299, 214, 207, 194, 166, 180, 251, - 203, 252, 181, 219, 218, 220, 0, 0, 0, 283, - 308, 328, 145, 0, 0, 291, 321, 324, 0, 255, - 146, 173, 165, 250, 171, 197, 320, 322, 323, 222, - 142, 183, 279, 193, 201, 0, 0, 238, 263, 149, - 307, 280, 422, 433, 428, 429, 426, 427, 425, 424, - 423, 436, 414, 415, 416, 417, 419, 0, 430, 431, - 418, 127, 137, 198, 326, 256, 170, 309, 0, 0, - 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 130, 138, 144, 150, 157, 164, - 168, 175, 179, 182, 185, 186, 187, 191, 206, 210, - 211, 212, 213, 224, 225, 226, 229, 232, 233, 234, - 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, - 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, - 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, - 303, 319, 231, 205, 0, 0, 0, 378, 0, 0, - 0, 162, 0, 377, 0, 0, 0, 196, 0, 0, - 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, - 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, - 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, - 228, 282, 169, 66, 0, 452, 114, 115, 116, 399, - 398, 401, 402, 403, 404, 0, 0, 147, 400, 405, - 406, 407, 0, 0, 0, 0, 375, 392, 0, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, - 390, 0, 0, 0, 0, 435, 0, 391, 0, 0, - 384, 385, 387, 386, 388, 393, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 434, 0, 0, 315, - 0, 0, 432, 0, 253, 0, 286, 178, 195, 143, - 192, 128, 139, 0, 176, 227, 260, 264, 0, 0, - 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1066, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 594, 582, + 0, 124, 535, 597, 508, 525, 605, 526, 529, 567, + 493, 548, 231, 523, 0, 512, 488, 519, 489, 510, + 537, 162, 541, 507, 584, 551, 596, 196, 0, 513, + 242, 569, 273, 153, 204, 202, 292, 167, 163, 161, + 152, 184, 209, 241, 289, 235, 603, 199, 558, 0, + 281, 217, 0, 0, 0, 539, 586, 546, 578, 534, + 568, 498, 557, 598, 524, 565, 599, 188, 151, 131, + 228, 282, 169, 0, 0, 1047, 114, 115, 116, 124, + 1139, 1140, 0, 0, 0, 0, 0, 147, 0, 562, + 593, 521, 564, 566, 608, 487, 559, 0, 491, 494, + 604, 589, 516, 517, 1367, 0, 0, 0, 0, 0, + 0, 538, 547, 575, 532, 0, 0, 0, 0, 0, + 0, 0, 0, 514, 0, 556, 0, 0, 0, 495, + 492, 0, 0, 0, 0, 536, 0, 0, 0, 497, + 0, 515, 576, 0, 485, 174, 580, 588, 533, 315, + 592, 531, 530, 595, 253, 0, 286, 178, 195, 143, + 192, 128, 139, 0, 176, 227, 260, 264, 585, 511, + 520, 154, 518, 262, 239, 305, 555, 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, 218, - 220, 0, 0, 0, 283, 308, 328, 145, 0, 0, + 220, 0, 490, 0, 283, 308, 328, 145, 506, 581, 291, 321, 324, 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, 201, - 0, 0, 238, 263, 149, 307, 280, 422, 433, 428, - 429, 426, 427, 425, 424, 423, 436, 414, 415, 416, - 417, 419, 0, 430, 431, 418, 127, 137, 198, 326, - 256, 170, 309, 0, 0, 158, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 573, 607, 238, 263, 149, 307, 280, 502, 505, 500, + 501, 549, 550, 600, 601, 602, 577, 496, 0, 503, + 504, 0, 583, 590, 591, 554, 127, 137, 198, 326, + 256, 170, 309, 486, 499, 158, 509, 0, 0, 522, + 527, 528, 540, 542, 543, 544, 545, 553, 560, 561, + 563, 570, 571, 572, 574, 579, 587, 606, 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, - 296, 306, 314, 318, 177, 303, 319, 231, 205, 0, - 0, 0, 378, 0, 0, 0, 162, 0, 377, 0, - 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, - 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, - 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, - 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 151, 131, 228, 282, 169, 66, 0, - 0, 114, 115, 116, 399, 398, 401, 402, 403, 404, - 0, 0, 147, 400, 405, 406, 407, 0, 0, 0, - 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 389, 390, 464, 0, 0, 0, - 435, 0, 391, 0, 0, 384, 385, 387, 386, 388, - 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 174, 434, 0, 0, 315, 0, 0, 432, 0, 253, - 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, - 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, - 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, - 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, - 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, - 190, 133, 0, 258, 160, 172, 156, 230, 297, 298, - 155, 327, 140, 312, 136, 141, 311, 223, 293, 301, - 216, 208, 135, 299, 214, 207, 194, 166, 180, 251, - 203, 252, 181, 219, 218, 220, 0, 0, 0, 283, - 308, 328, 145, 0, 0, 291, 321, 324, 0, 255, - 146, 173, 165, 250, 171, 197, 320, 322, 323, 222, - 142, 183, 279, 193, 201, 0, 0, 238, 263, 149, - 307, 280, 422, 433, 428, 429, 426, 427, 425, 424, - 423, 436, 414, 415, 416, 417, 419, 0, 430, 431, - 418, 127, 137, 198, 326, 256, 170, 309, 0, 0, - 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 130, 138, 144, 150, 157, 164, - 168, 175, 179, 182, 185, 186, 187, 191, 206, 210, - 211, 212, 213, 224, 225, 226, 229, 232, 233, 234, - 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, - 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, - 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, - 303, 319, 231, 205, 0, 0, 0, 378, 0, 0, - 0, 162, 0, 377, 0, 0, 0, 196, 0, 0, - 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, - 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, - 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, - 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, - 228, 282, 169, 66, 0, 0, 114, 115, 116, 399, - 1036, 401, 402, 403, 404, 0, 0, 147, 400, 405, - 406, 407, 0, 0, 0, 0, 375, 392, 0, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, - 390, 464, 0, 0, 0, 435, 0, 391, 0, 0, - 384, 385, 387, 386, 388, 393, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 174, 434, 0, 0, 315, - 0, 0, 432, 0, 253, 0, 286, 178, 195, 143, - 192, 128, 139, 0, 176, 227, 260, 264, 0, 0, - 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, + 296, 306, 314, 318, 177, 303, 319, 0, 205, 552, + 594, 582, 0, 0, 535, 597, 508, 525, 605, 526, + 529, 567, 493, 548, 231, 523, 0, 512, 488, 519, + 489, 510, 537, 162, 541, 507, 584, 551, 596, 196, + 0, 513, 242, 569, 273, 153, 204, 202, 292, 167, + 163, 161, 152, 184, 209, 241, 289, 235, 603, 199, + 558, 0, 281, 217, 0, 0, 0, 539, 586, 546, + 578, 534, 568, 498, 557, 598, 524, 565, 599, 188, + 151, 131, 228, 282, 169, 0, 0, 0, 114, 115, + 116, 0, 1139, 1140, 0, 0, 0, 0, 0, 147, + 0, 562, 593, 521, 564, 566, 608, 487, 559, 0, + 491, 494, 604, 589, 516, 517, 0, 0, 0, 0, + 0, 0, 0, 538, 547, 575, 532, 0, 0, 0, + 0, 0, 0, 0, 0, 514, 0, 556, 0, 0, + 0, 495, 492, 0, 0, 0, 0, 536, 0, 0, + 0, 497, 0, 515, 576, 0, 485, 174, 580, 588, + 533, 315, 592, 531, 530, 595, 253, 0, 286, 178, + 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, + 585, 511, 520, 154, 518, 262, 239, 305, 555, 243, + 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, + 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, + 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, + 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, + 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, + 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, + 219, 218, 220, 0, 490, 0, 283, 308, 328, 145, + 506, 581, 291, 321, 324, 0, 255, 146, 173, 165, + 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, + 193, 201, 573, 607, 238, 263, 149, 307, 280, 502, + 505, 500, 501, 549, 550, 600, 601, 602, 577, 496, + 0, 503, 504, 0, 583, 590, 591, 554, 127, 137, + 198, 326, 256, 170, 309, 486, 499, 158, 509, 0, + 0, 522, 527, 528, 540, 542, 543, 544, 545, 553, + 560, 561, 563, 570, 571, 572, 574, 579, 587, 606, + 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, + 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, + 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, + 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, + 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, + 287, 295, 296, 306, 314, 318, 177, 303, 319, 0, + 205, 552, 594, 582, 0, 0, 535, 597, 508, 525, + 605, 526, 529, 567, 493, 548, 231, 523, 0, 512, + 488, 519, 489, 510, 537, 162, 541, 507, 584, 551, + 596, 196, 0, 513, 242, 569, 273, 153, 204, 202, + 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, + 603, 199, 558, 0, 281, 217, 0, 0, 0, 539, + 586, 546, 578, 534, 568, 498, 557, 598, 524, 565, + 599, 188, 151, 131, 228, 282, 169, 0, 0, 0, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, + 0, 147, 0, 562, 593, 521, 564, 566, 608, 487, + 559, 0, 491, 494, 604, 589, 516, 517, 0, 0, + 0, 0, 0, 0, 0, 538, 547, 575, 532, 0, + 0, 0, 0, 0, 0, 1475, 0, 514, 0, 556, + 0, 0, 0, 495, 492, 0, 0, 0, 0, 536, + 0, 0, 0, 497, 0, 515, 576, 0, 485, 174, + 580, 588, 533, 315, 592, 531, 530, 595, 253, 0, + 286, 178, 195, 143, 192, 128, 139, 0, 176, 227, + 260, 264, 585, 511, 520, 154, 518, 262, 239, 305, + 555, 243, 261, 200, 294, 254, 304, 316, 317, 159, + 221, 310, 290, 313, 325, 278, 132, 288, 302, 148, + 272, 0, 0, 0, 134, 300, 285, 215, 189, 190, + 133, 0, 258, 160, 172, 156, 230, 297, 298, 155, + 327, 140, 312, 136, 141, 311, 223, 293, 301, 216, + 208, 135, 299, 214, 207, 194, 166, 180, 251, 203, + 252, 181, 219, 218, 220, 0, 490, 0, 283, 308, + 328, 145, 506, 581, 291, 321, 324, 0, 255, 146, + 173, 165, 250, 171, 197, 320, 322, 323, 222, 142, + 183, 279, 193, 201, 573, 607, 238, 263, 149, 307, + 280, 502, 505, 500, 501, 549, 550, 600, 601, 602, + 577, 496, 0, 503, 504, 0, 583, 590, 591, 554, + 127, 137, 198, 326, 256, 170, 309, 486, 499, 158, + 509, 0, 0, 522, 527, 528, 540, 542, 543, 544, + 545, 553, 560, 561, 563, 570, 571, 572, 574, 579, + 587, 606, 129, 130, 138, 144, 150, 157, 164, 168, + 175, 179, 182, 185, 186, 187, 191, 206, 210, 211, + 212, 213, 224, 225, 226, 229, 232, 233, 234, 236, + 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, + 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, + 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, + 319, 0, 205, 552, 594, 582, 0, 0, 535, 597, + 508, 525, 605, 526, 529, 567, 493, 548, 231, 523, + 0, 512, 488, 519, 489, 510, 537, 162, 541, 507, + 584, 551, 596, 196, 0, 513, 242, 569, 273, 153, + 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, + 289, 235, 603, 199, 558, 0, 281, 217, 0, 0, + 0, 539, 586, 546, 578, 534, 568, 498, 557, 598, + 524, 565, 599, 188, 151, 131, 228, 282, 169, 66, + 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 0, 562, 593, 521, 564, 566, + 608, 487, 559, 0, 491, 494, 604, 589, 516, 517, + 0, 0, 0, 0, 0, 0, 0, 538, 547, 575, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 514, + 0, 556, 0, 0, 0, 495, 492, 0, 0, 0, + 0, 536, 0, 0, 0, 497, 0, 515, 576, 0, + 485, 174, 580, 588, 533, 315, 592, 531, 530, 595, + 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, + 176, 227, 260, 264, 585, 511, 520, 154, 518, 262, + 239, 305, 555, 243, 261, 200, 294, 254, 304, 316, + 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, + 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, + 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, + 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, + 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, + 251, 203, 252, 181, 219, 218, 220, 0, 490, 0, + 283, 308, 328, 145, 506, 581, 291, 321, 324, 0, + 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, + 222, 142, 183, 279, 193, 201, 573, 607, 238, 263, + 149, 307, 280, 502, 505, 500, 501, 549, 550, 600, + 601, 602, 577, 496, 0, 503, 504, 0, 583, 590, + 591, 554, 127, 137, 198, 326, 256, 170, 309, 486, + 499, 158, 509, 0, 0, 522, 527, 528, 540, 542, + 543, 544, 545, 553, 560, 561, 563, 570, 571, 572, + 574, 579, 587, 606, 129, 130, 138, 144, 150, 157, + 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, + 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, + 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, + 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, + 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, + 177, 303, 319, 0, 205, 552, 594, 582, 0, 0, + 535, 597, 508, 525, 605, 526, 529, 567, 493, 548, + 231, 523, 0, 512, 488, 519, 489, 510, 537, 162, + 541, 507, 584, 551, 596, 196, 0, 513, 242, 569, + 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, + 209, 241, 289, 235, 603, 199, 558, 0, 281, 217, + 0, 0, 0, 539, 586, 546, 578, 534, 568, 498, + 557, 598, 524, 565, 599, 188, 151, 131, 228, 282, + 169, 0, 0, 0, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 0, 562, 593, 521, + 564, 566, 608, 487, 559, 0, 491, 494, 604, 589, + 516, 517, 0, 0, 0, 0, 0, 0, 0, 538, + 547, 575, 532, 0, 0, 0, 0, 0, 0, 1357, + 0, 514, 0, 556, 0, 0, 0, 495, 492, 0, + 0, 0, 0, 536, 0, 0, 0, 497, 0, 515, + 576, 0, 485, 174, 580, 588, 533, 315, 592, 531, + 530, 595, 253, 0, 286, 178, 195, 143, 192, 128, + 139, 0, 176, 227, 260, 264, 585, 511, 520, 154, + 518, 262, 239, 305, 555, 243, 261, 200, 294, 254, + 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, + 132, 288, 302, 148, 272, 0, 0, 0, 134, 300, + 285, 215, 189, 190, 133, 0, 258, 160, 172, 156, + 230, 297, 298, 155, 327, 140, 312, 136, 141, 311, + 223, 293, 301, 216, 208, 135, 299, 214, 207, 194, + 166, 180, 251, 203, 252, 181, 219, 218, 220, 0, + 490, 0, 283, 308, 328, 145, 506, 581, 291, 321, + 324, 0, 255, 146, 173, 165, 250, 171, 197, 320, + 322, 323, 222, 142, 183, 279, 193, 201, 573, 607, + 238, 263, 149, 307, 280, 502, 505, 500, 501, 549, + 550, 600, 601, 602, 577, 496, 0, 503, 504, 0, + 583, 590, 591, 554, 127, 137, 198, 326, 256, 170, + 309, 486, 499, 158, 509, 0, 0, 522, 527, 528, + 540, 542, 543, 544, 545, 553, 560, 561, 563, 570, + 571, 572, 574, 579, 587, 606, 129, 130, 138, 144, + 150, 157, 164, 168, 175, 179, 182, 185, 186, 187, + 191, 206, 210, 211, 212, 213, 224, 225, 226, 229, + 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, + 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, + 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, + 314, 318, 177, 303, 319, 0, 205, 552, 594, 582, + 0, 0, 535, 597, 508, 525, 605, 526, 529, 567, + 493, 548, 231, 523, 0, 512, 488, 519, 489, 510, + 537, 162, 541, 507, 584, 551, 596, 196, 0, 513, + 242, 569, 273, 153, 204, 202, 292, 167, 163, 161, + 152, 184, 209, 241, 289, 235, 603, 199, 558, 0, + 281, 217, 0, 0, 0, 539, 586, 546, 578, 534, + 568, 498, 557, 598, 524, 565, 599, 188, 151, 131, + 228, 282, 169, 0, 0, 0, 114, 115, 116, 0, + 0, 0, 0, 0, 0, 0, 0, 147, 0, 562, + 593, 521, 564, 566, 608, 487, 559, 0, 491, 494, + 604, 589, 516, 517, 0, 0, 0, 0, 0, 0, + 0, 538, 547, 575, 532, 0, 0, 0, 0, 0, + 0, 1091, 0, 514, 0, 556, 0, 0, 0, 495, + 492, 0, 0, 0, 0, 536, 0, 0, 0, 497, + 0, 515, 576, 0, 485, 174, 580, 588, 533, 315, + 592, 531, 530, 595, 253, 0, 286, 178, 195, 143, + 192, 128, 139, 0, 176, 227, 260, 264, 585, 511, + 520, 154, 518, 262, 239, 305, 555, 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, 218, - 220, 0, 0, 0, 283, 308, 328, 145, 0, 0, + 220, 0, 490, 0, 283, 308, 328, 145, 506, 581, 291, 321, 324, 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, 201, - 0, 0, 238, 263, 149, 307, 280, 422, 433, 428, - 429, 426, 427, 425, 424, 423, 436, 414, 415, 416, - 417, 419, 0, 430, 431, 418, 127, 137, 198, 326, - 256, 170, 309, 0, 0, 158, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, + 573, 607, 238, 263, 149, 307, 280, 502, 505, 500, + 501, 549, 550, 600, 601, 602, 577, 496, 0, 503, + 504, 0, 583, 590, 591, 554, 127, 137, 198, 326, + 256, 170, 309, 486, 499, 158, 509, 0, 0, 522, + 527, 528, 540, 542, 543, 544, 545, 553, 560, 561, + 563, 570, 571, 572, 574, 579, 587, 606, 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, - 296, 306, 314, 318, 177, 303, 319, 231, 205, 0, - 0, 0, 378, 0, 0, 0, 162, 0, 377, 0, - 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, - 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, - 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, - 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 151, 131, 228, 282, 169, 66, 0, - 0, 114, 115, 116, 399, 1033, 401, 402, 403, 404, - 0, 0, 147, 400, 405, 406, 407, 0, 0, 0, - 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 389, 390, 464, 0, 0, 0, - 435, 0, 391, 0, 0, 384, 385, 387, 386, 388, - 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 174, 434, 0, 0, 315, 0, 0, 432, 0, 253, - 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, - 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, - 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, - 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, - 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, - 190, 133, 0, 258, 160, 172, 156, 230, 297, 298, - 155, 327, 140, 312, 136, 141, 311, 223, 293, 301, - 216, 208, 135, 299, 214, 207, 194, 166, 180, 251, - 203, 252, 181, 219, 218, 220, 0, 0, 0, 283, - 308, 328, 145, 0, 0, 291, 321, 324, 0, 255, - 146, 173, 165, 250, 171, 197, 320, 322, 323, 222, - 142, 183, 279, 193, 201, 0, 0, 238, 263, 149, - 307, 280, 422, 433, 428, 429, 426, 427, 425, 424, - 423, 436, 414, 415, 416, 417, 419, 0, 430, 431, - 418, 127, 137, 198, 326, 256, 170, 309, 0, 0, - 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 130, 138, 144, 150, 157, 164, - 168, 175, 179, 182, 185, 186, 187, 191, 206, 210, - 211, 212, 213, 224, 225, 226, 229, 232, 233, 234, - 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, - 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, - 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, - 303, 319, 445, 205, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, + 296, 306, 314, 318, 177, 303, 319, 0, 205, 552, + 594, 582, 0, 0, 535, 597, 508, 525, 605, 526, + 529, 567, 493, 548, 231, 523, 0, 512, 488, 519, + 489, 510, 537, 162, 541, 507, 584, 551, 596, 196, + 0, 513, 242, 569, 273, 153, 204, 202, 292, 167, + 163, 161, 152, 184, 209, 241, 289, 235, 603, 199, + 558, 0, 281, 217, 0, 0, 0, 539, 586, 546, + 578, 534, 568, 498, 557, 598, 524, 565, 599, 188, + 151, 131, 228, 282, 169, 0, 0, 0, 114, 115, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 562, 593, 521, 564, 566, 608, 487, 559, 0, + 491, 494, 604, 589, 516, 517, 0, 0, 0, 0, + 0, 0, 0, 538, 547, 575, 532, 0, 0, 0, + 0, 0, 0, 0, 0, 514, 0, 556, 0, 0, + 0, 495, 492, 0, 0, 0, 0, 536, 0, 0, + 0, 497, 0, 515, 576, 0, 485, 174, 580, 588, + 533, 315, 592, 531, 530, 595, 253, 0, 286, 178, + 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, + 585, 511, 520, 154, 518, 262, 239, 305, 555, 243, + 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, + 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, + 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, + 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, + 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, + 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, + 219, 218, 220, 0, 490, 0, 283, 308, 328, 145, + 506, 581, 291, 321, 324, 0, 255, 146, 173, 165, + 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, + 193, 201, 573, 607, 238, 263, 149, 307, 280, 502, + 505, 500, 501, 549, 550, 600, 601, 602, 577, 496, + 0, 503, 504, 0, 583, 590, 591, 554, 127, 137, + 198, 326, 256, 170, 309, 486, 499, 158, 509, 0, + 0, 522, 527, 528, 540, 542, 543, 544, 545, 553, + 560, 561, 563, 570, 571, 572, 574, 579, 587, 606, + 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, + 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, + 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, + 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, + 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, + 287, 295, 296, 306, 314, 318, 177, 303, 319, 0, + 205, 552, 594, 582, 0, 0, 535, 597, 508, 525, + 605, 526, 529, 567, 493, 548, 231, 523, 0, 512, + 488, 519, 489, 510, 537, 162, 541, 507, 584, 551, + 596, 196, 0, 513, 242, 569, 273, 153, 204, 202, + 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, + 603, 199, 558, 0, 281, 217, 0, 0, 0, 539, + 586, 546, 578, 534, 568, 498, 557, 598, 524, 565, + 599, 188, 151, 131, 228, 282, 169, 0, 0, 0, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, + 0, 147, 0, 562, 593, 521, 564, 566, 608, 487, + 559, 0, 491, 494, 604, 589, 516, 517, 0, 0, + 0, 0, 0, 0, 0, 538, 547, 575, 532, 0, + 0, 0, 0, 0, 0, 0, 0, 514, 0, 556, + 0, 0, 0, 495, 492, 0, 0, 0, 0, 536, + 0, 0, 0, 497, 0, 515, 576, 0, 485, 174, + 580, 588, 533, 315, 592, 531, 530, 595, 253, 0, + 286, 178, 195, 143, 192, 128, 139, 0, 176, 227, + 260, 264, 585, 511, 520, 154, 518, 262, 239, 305, + 555, 243, 261, 200, 294, 254, 304, 316, 317, 159, + 221, 310, 290, 313, 325, 278, 132, 288, 302, 148, + 272, 0, 0, 0, 134, 300, 285, 215, 189, 190, + 133, 0, 258, 160, 172, 156, 230, 297, 298, 155, + 327, 140, 312, 136, 483, 311, 223, 293, 301, 216, + 208, 135, 299, 214, 207, 194, 166, 180, 251, 203, + 252, 181, 219, 218, 220, 0, 490, 0, 283, 308, + 328, 145, 506, 581, 291, 321, 324, 0, 255, 146, + 173, 165, 250, 171, 197, 320, 322, 323, 484, 482, + 477, 476, 193, 201, 573, 607, 238, 263, 149, 307, + 280, 502, 505, 500, 501, 549, 550, 600, 601, 602, + 577, 496, 0, 503, 504, 0, 583, 590, 591, 554, + 127, 137, 198, 326, 256, 170, 309, 486, 499, 158, + 509, 0, 0, 522, 527, 528, 540, 542, 543, 544, + 545, 553, 560, 561, 563, 570, 571, 572, 574, 579, + 587, 606, 129, 130, 138, 144, 150, 157, 164, 168, + 175, 179, 182, 185, 186, 187, 191, 206, 210, 211, + 212, 213, 224, 225, 226, 229, 232, 233, 234, 236, + 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, + 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, + 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, + 319, 0, 205, 552, 594, 582, 0, 0, 535, 597, + 508, 525, 605, 526, 529, 567, 493, 548, 231, 523, + 0, 512, 488, 519, 489, 510, 537, 162, 541, 507, + 584, 551, 596, 196, 0, 513, 242, 569, 273, 153, + 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, + 289, 235, 603, 199, 558, 0, 281, 217, 0, 0, + 0, 539, 586, 546, 578, 534, 568, 498, 557, 598, + 524, 565, 599, 188, 151, 131, 228, 282, 169, 0, + 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, + 0, 0, 0, 147, 0, 562, 593, 521, 564, 566, + 608, 487, 559, 0, 491, 494, 604, 589, 516, 517, + 0, 0, 0, 0, 0, 0, 0, 538, 547, 575, + 532, 0, 0, 0, 0, 0, 0, 0, 0, 514, + 0, 556, 0, 0, 0, 495, 492, 0, 0, 0, + 0, 536, 0, 0, 0, 497, 0, 515, 576, 0, + 485, 174, 580, 588, 533, 315, 592, 531, 530, 595, + 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, + 176, 227, 260, 264, 585, 511, 520, 154, 518, 262, + 239, 305, 555, 243, 261, 200, 294, 254, 304, 316, + 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, + 833, 148, 272, 0, 0, 0, 134, 300, 285, 215, + 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, + 298, 155, 327, 140, 312, 136, 483, 311, 223, 293, + 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, + 251, 203, 252, 181, 219, 218, 220, 0, 490, 0, + 283, 308, 328, 145, 506, 581, 291, 321, 324, 0, + 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, + 484, 482, 477, 476, 193, 201, 573, 607, 238, 263, + 149, 307, 280, 502, 505, 500, 501, 549, 550, 600, + 601, 602, 577, 496, 0, 503, 504, 0, 583, 590, + 591, 554, 127, 137, 198, 326, 256, 170, 309, 486, + 499, 158, 509, 0, 0, 522, 527, 528, 540, 542, + 543, 544, 545, 553, 560, 561, 563, 570, 571, 572, + 574, 579, 587, 606, 129, 130, 138, 144, 150, 157, + 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, + 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, + 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, + 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, + 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, + 177, 303, 319, 0, 205, 552, 594, 582, 0, 0, + 535, 597, 508, 525, 605, 526, 529, 567, 493, 548, + 231, 523, 0, 512, 488, 519, 489, 510, 537, 162, + 541, 507, 584, 551, 596, 196, 0, 513, 242, 569, + 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, + 209, 241, 289, 235, 603, 199, 558, 0, 281, 217, + 0, 0, 0, 539, 586, 546, 578, 534, 568, 498, + 557, 598, 524, 565, 599, 188, 151, 131, 228, 282, + 169, 0, 0, 0, 114, 115, 116, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 0, 562, 593, 521, + 564, 566, 608, 487, 559, 0, 491, 494, 604, 589, + 516, 517, 0, 0, 0, 0, 0, 0, 0, 538, + 547, 575, 532, 0, 0, 0, 0, 0, 0, 0, + 0, 514, 0, 556, 0, 0, 0, 495, 492, 0, + 0, 0, 0, 536, 0, 0, 0, 497, 0, 515, + 576, 0, 485, 174, 580, 588, 533, 315, 592, 531, + 530, 595, 253, 0, 286, 178, 195, 143, 192, 128, + 139, 0, 176, 227, 260, 264, 585, 511, 520, 154, + 518, 262, 239, 305, 555, 243, 261, 200, 294, 254, + 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, + 132, 288, 474, 148, 272, 0, 0, 0, 134, 300, + 285, 215, 189, 190, 133, 0, 258, 160, 172, 156, + 230, 297, 298, 155, 327, 140, 312, 136, 483, 311, + 223, 293, 301, 216, 208, 135, 299, 214, 207, 194, + 166, 180, 251, 203, 252, 181, 219, 218, 220, 0, + 490, 0, 283, 308, 328, 145, 506, 581, 291, 321, + 324, 0, 255, 146, 173, 165, 250, 171, 197, 320, + 322, 323, 484, 482, 477, 476, 193, 201, 573, 607, + 238, 263, 149, 307, 280, 502, 505, 500, 501, 549, + 550, 600, 601, 602, 577, 496, 0, 503, 504, 0, + 583, 590, 591, 554, 127, 137, 198, 326, 256, 170, + 309, 486, 499, 158, 509, 0, 0, 522, 527, 528, + 540, 542, 543, 544, 545, 553, 560, 561, 563, 570, + 571, 572, 574, 579, 587, 606, 129, 130, 138, 144, + 150, 157, 164, 168, 175, 179, 182, 185, 186, 187, + 191, 206, 210, 211, 212, 213, 224, 225, 226, 229, + 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, + 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, + 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, + 314, 318, 177, 303, 319, 231, 205, 552, 1018, 0, 378, 0, 0, 0, 162, 0, 377, 0, 0, 0, - 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, + 196, 0, 1019, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2043,7 +1848,7 @@ var yyAct = [...]int{ 147, 400, 405, 406, 407, 0, 0, 0, 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 389, 390, 0, 0, 0, 0, 435, 0, + 0, 0, 389, 390, 464, 0, 0, 0, 435, 0, 391, 0, 0, 384, 385, 387, 386, 388, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 434, 0, 0, 315, 0, 0, 432, 0, 253, 0, 286, @@ -2075,10 +1880,10 @@ var yyAct = [...]int{ 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, 0, 0, - 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, + 0, 0, 0, 1130, 0, 188, 151, 131, 228, 282, 169, 66, 0, 0, 114, 115, 116, 399, 398, 401, 402, 403, 404, 0, 0, 147, 400, 405, 406, 407, - 0, 0, 0, 0, 375, 392, 0, 420, 0, 0, + 1131, 0, 0, 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 0, 0, 435, 0, 391, 0, 0, 384, 385, @@ -2108,14 +1913,14 @@ var yyAct = [...]int{ 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, 0, 0, 0, - 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, + 378, 0, 0, 0, 162, 0, 377, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 151, 131, 228, 282, 169, 66, 0, 0, 114, + 188, 151, 131, 228, 282, 169, 66, 0, 452, 114, 115, 116, 399, 398, 401, 402, 403, 404, 0, 0, - 147, 400, 405, 406, 407, 0, 0, 0, 0, 0, + 147, 400, 405, 406, 407, 0, 0, 0, 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, 390, 0, 0, 0, 0, 435, 0, @@ -2123,7 +1928,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 174, 434, 0, 0, 315, 0, 0, 432, 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, 227, 260, - 264, 0, 0, 0, 154, 0, 262, 239, 305, 1776, + 264, 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, 189, 190, 133, @@ -2145,17 +1950,17 @@ var yyAct = [...]int{ 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, - 231, 205, 0, 0, 0, 0, 0, 0, 0, 162, - 0, 0, 0, 0, 0, 196, 0, 0, 242, 0, + 231, 205, 0, 0, 0, 378, 0, 0, 0, 162, + 0, 377, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, - 169, 66, 0, 452, 114, 115, 116, 399, 398, 401, + 169, 66, 0, 0, 114, 115, 116, 399, 398, 401, 402, 403, 404, 0, 0, 147, 400, 405, 406, 407, - 0, 0, 0, 0, 0, 392, 0, 420, 0, 0, + 0, 0, 0, 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 389, 390, 0, + 0, 0, 0, 0, 0, 0, 0, 389, 390, 464, 0, 0, 0, 435, 0, 391, 0, 0, 384, 385, 387, 386, 388, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 434, 0, 0, 315, 0, 0, @@ -2183,17 +1988,17 @@ var yyAct = [...]int{ 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, 0, 0, 0, - 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, + 378, 0, 0, 0, 162, 0, 377, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, 66, 0, 0, 114, - 115, 116, 399, 398, 401, 402, 403, 404, 0, 0, - 147, 400, 405, 406, 407, 0, 0, 0, 0, 0, + 115, 116, 399, 1036, 401, 402, 403, 404, 0, 0, + 147, 400, 405, 406, 407, 0, 0, 0, 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 389, 390, 0, 0, 0, 0, 435, 0, + 0, 0, 389, 390, 464, 0, 0, 0, 435, 0, 391, 0, 0, 384, 385, 387, 386, 388, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 434, 0, 0, 315, 0, 0, 432, 0, 253, 0, 286, @@ -2220,21 +2025,21 @@ var yyAct = [...]int{ 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, - 231, 205, 0, 0, 0, 0, 0, 0, 0, 162, - 0, 0, 0, 0, 0, 196, 0, 0, 242, 0, + 231, 205, 0, 0, 0, 378, 0, 0, 0, 162, + 0, 377, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, - 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 209, 241, 289, 235, 421, 199, 0, 0, 281, 217, + 0, 0, 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, - 169, 0, 0, 0, 114, 115, 116, 0, 0, 0, - 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 711, 710, 720, 721, 713, 714, 715, - 716, 717, 718, 719, 712, 0, 0, 722, 0, 0, + 169, 66, 0, 0, 114, 115, 116, 399, 1033, 401, + 402, 403, 404, 0, 0, 147, 400, 405, 406, 407, + 0, 0, 0, 0, 375, 392, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 174, 0, 0, 0, 315, 0, 0, - 0, 0, 253, 0, 286, 178, 195, 143, 192, 128, + 0, 0, 0, 0, 0, 0, 0, 389, 390, 464, + 0, 0, 0, 435, 0, 391, 0, 0, 384, 385, + 387, 386, 388, 393, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 434, 0, 0, 315, 0, 0, + 432, 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, @@ -2246,9 +2051,9 @@ var yyAct = [...]int{ 0, 0, 283, 308, 328, 145, 0, 0, 291, 321, 324, 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, 201, 0, 0, - 238, 263, 149, 307, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 127, 137, 198, 326, 256, 170, + 238, 263, 149, 307, 280, 422, 433, 428, 429, 426, + 427, 425, 424, 423, 436, 414, 415, 416, 417, 419, + 0, 430, 431, 418, 127, 137, 198, 326, 256, 170, 309, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 138, 144, @@ -2257,93 +2062,243 @@ var yyAct = [...]int{ 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, - 314, 318, 177, 303, 319, 231, 205, 0, 0, 811, - 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, - 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, - 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, - 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 188, 151, 131, 228, 282, 169, 0, 0, 0, 114, - 115, 116, 0, 813, 0, 0, 0, 0, 0, 0, - 147, 0, 0, 0, 0, 0, 700, 701, 699, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 702, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, - 0, 0, 315, 0, 0, 0, 0, 253, 0, 286, - 178, 195, 143, 192, 128, 139, 0, 176, 227, 260, - 264, 0, 0, 0, 154, 0, 262, 239, 305, 0, - 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, - 310, 290, 313, 325, 278, 132, 288, 302, 148, 272, - 0, 0, 0, 134, 300, 285, 215, 189, 190, 133, - 0, 258, 160, 172, 156, 230, 297, 298, 155, 327, - 140, 312, 136, 141, 311, 223, 293, 301, 216, 208, - 135, 299, 214, 207, 194, 166, 180, 251, 203, 252, - 181, 219, 218, 220, 0, 0, 0, 283, 308, 328, - 145, 0, 0, 291, 321, 324, 0, 255, 146, 173, - 165, 250, 171, 197, 320, 322, 323, 222, 142, 183, - 279, 193, 201, 0, 0, 238, 263, 149, 307, 280, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, - 137, 198, 326, 256, 170, 309, 0, 0, 158, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 314, 318, 177, 303, 319, 445, 205, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, + 0, 0, 0, 378, 0, 0, 0, 162, 0, 377, + 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, + 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, + 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, + 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 151, 131, 228, 282, 169, 66, + 0, 0, 114, 115, 116, 399, 398, 401, 402, 403, + 404, 0, 0, 147, 400, 405, 406, 407, 0, 0, + 0, 0, 375, 392, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 389, 390, 0, 0, 0, + 0, 435, 0, 391, 0, 0, 384, 385, 387, 386, + 388, 393, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 434, 0, 0, 315, 0, 0, 432, 0, + 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, + 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, + 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, + 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, + 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, + 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, + 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, + 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, + 251, 203, 252, 181, 219, 218, 220, 0, 0, 0, + 283, 308, 328, 145, 0, 0, 291, 321, 324, 0, + 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, + 222, 142, 183, 279, 193, 201, 0, 0, 238, 263, + 149, 307, 280, 422, 433, 428, 429, 426, 427, 425, + 424, 423, 436, 414, 415, 416, 417, 419, 0, 430, + 431, 418, 127, 137, 198, 326, 256, 170, 309, 0, + 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 130, 138, 144, 150, 157, 164, 168, 175, - 179, 182, 185, 186, 187, 191, 206, 210, 211, 212, - 213, 224, 225, 226, 229, 232, 233, 234, 236, 237, - 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, - 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, - 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, - 231, 205, 0, 0, 0, 0, 0, 0, 0, 162, - 1155, 0, 0, 0, 0, 196, 0, 0, 242, 0, - 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, - 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, + 0, 0, 0, 0, 129, 130, 138, 144, 150, 157, + 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, + 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, + 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, + 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, + 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, + 177, 303, 319, 231, 205, 0, 0, 0, 378, 0, + 0, 0, 162, 0, 377, 0, 0, 0, 196, 0, + 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, + 161, 152, 184, 209, 241, 289, 235, 421, 199, 0, + 0, 281, 217, 0, 0, 0, 0, 0, 412, 413, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, + 131, 228, 282, 169, 66, 0, 0, 114, 115, 116, + 399, 398, 401, 402, 403, 404, 0, 0, 147, 400, + 405, 406, 407, 0, 0, 0, 0, 375, 392, 0, + 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 389, 390, 0, 0, 0, 0, 435, 0, 391, 0, + 0, 384, 385, 387, 386, 388, 393, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 174, 434, 0, 0, + 315, 0, 0, 432, 0, 253, 0, 286, 178, 195, + 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, + 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, + 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, + 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, + 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, + 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, + 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, + 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, + 218, 220, 0, 0, 0, 283, 308, 328, 145, 0, + 0, 291, 321, 324, 0, 255, 146, 173, 165, 250, + 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, + 201, 0, 0, 238, 263, 149, 307, 280, 422, 433, + 428, 429, 426, 427, 425, 424, 423, 436, 414, 415, + 416, 417, 419, 0, 430, 431, 418, 127, 137, 198, + 326, 256, 170, 309, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, - 169, 0, 0, 0, 114, 115, 116, 0, 0, 0, - 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, + 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, + 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, + 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, + 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, + 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, + 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, + 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, + 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, + 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, + 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 151, 131, 228, 282, 169, 66, + 0, 0, 114, 115, 116, 399, 398, 401, 402, 403, + 404, 0, 0, 147, 400, 405, 406, 407, 0, 0, + 0, 0, 0, 392, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 389, 390, 0, 0, 0, + 0, 435, 0, 391, 0, 0, 384, 385, 387, 386, + 388, 393, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 434, 0, 0, 315, 0, 0, 432, 0, + 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, + 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, + 239, 305, 1776, 243, 261, 200, 294, 254, 304, 316, + 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, + 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, + 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, + 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, + 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, + 251, 203, 252, 181, 219, 218, 220, 0, 0, 0, + 283, 308, 328, 145, 0, 0, 291, 321, 324, 0, + 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, + 222, 142, 183, 279, 193, 201, 0, 0, 238, 263, + 149, 307, 280, 422, 433, 428, 429, 426, 427, 425, + 424, 423, 436, 414, 415, 416, 417, 419, 0, 430, + 431, 418, 127, 137, 198, 326, 256, 170, 309, 0, + 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 130, 138, 144, 150, 157, + 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, + 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, + 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, + 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, + 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, + 177, 303, 319, 231, 205, 0, 0, 0, 0, 0, + 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, + 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, + 161, 152, 184, 209, 241, 289, 235, 421, 199, 0, + 0, 281, 217, 0, 0, 0, 0, 0, 412, 413, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, + 131, 228, 282, 169, 66, 0, 452, 114, 115, 116, + 399, 398, 401, 402, 403, 404, 0, 0, 147, 400, + 405, 406, 407, 0, 0, 0, 0, 0, 392, 0, + 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 389, 390, 0, 0, 0, 0, 435, 0, 391, 0, + 0, 384, 385, 387, 386, 388, 393, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 174, 434, 0, 0, + 315, 0, 0, 432, 0, 253, 0, 286, 178, 195, + 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, + 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, + 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, + 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, + 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, + 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, + 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, + 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, + 218, 220, 0, 0, 0, 283, 308, 328, 145, 0, + 0, 291, 321, 324, 0, 255, 146, 173, 165, 250, + 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, + 201, 0, 0, 238, 263, 149, 307, 280, 422, 433, + 428, 429, 426, 427, 425, 424, 423, 436, 414, 415, + 416, 417, 419, 0, 430, 431, 418, 127, 137, 198, + 326, 256, 170, 309, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, + 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, + 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, + 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, + 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, + 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, + 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, + 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, + 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, + 289, 235, 421, 199, 0, 0, 281, 217, 0, 0, + 0, 0, 0, 412, 413, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 151, 131, 228, 282, 169, 66, + 0, 0, 114, 115, 116, 399, 398, 401, 402, 403, + 404, 0, 0, 147, 400, 405, 406, 407, 0, 0, + 0, 0, 0, 392, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 389, 390, 0, 0, 0, + 0, 435, 0, 391, 0, 0, 384, 385, 387, 386, + 388, 393, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 174, 434, 0, 0, 315, 0, 0, 432, 0, + 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, + 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, + 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, + 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, + 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, + 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, + 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, + 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, + 251, 203, 252, 181, 219, 218, 220, 0, 0, 0, + 283, 308, 328, 145, 0, 0, 291, 321, 324, 0, + 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, + 222, 142, 183, 279, 193, 201, 0, 0, 238, 263, + 149, 307, 280, 422, 433, 428, 429, 426, 427, 425, + 424, 423, 436, 414, 415, 416, 417, 419, 0, 430, + 431, 418, 127, 137, 198, 326, 256, 170, 309, 0, + 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 129, 130, 138, 144, 150, 157, + 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, + 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, + 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, + 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, + 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, + 177, 303, 319, 231, 205, 0, 0, 0, 0, 0, + 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, + 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, + 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, + 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, + 131, 228, 282, 169, 0, 0, 0, 114, 115, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 174, 0, 0, 1154, 315, 0, 0, - 0, 1150, 1147, 0, 1148, 1149, 195, 616, 192, 128, - 139, 1145, 1152, 227, 260, 264, 0, 0, 0, 154, - 0, 262, 239, 305, 0, 243, 261, 200, 294, 254, - 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, - 132, 288, 302, 148, 272, 0, 0, 0, 134, 300, - 285, 215, 189, 190, 133, 0, 258, 160, 172, 156, - 230, 297, 298, 155, 327, 140, 312, 136, 141, 311, - 223, 293, 301, 216, 208, 135, 299, 214, 207, 194, - 166, 180, 251, 203, 252, 181, 219, 218, 220, 0, - 0, 0, 283, 308, 328, 145, 0, 0, 291, 321, - 324, 0, 255, 146, 173, 165, 250, 171, 197, 320, - 322, 323, 222, 142, 183, 279, 193, 201, 0, 0, - 238, 263, 149, 307, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 711, 710, 720, 721, + 713, 714, 715, 716, 717, 718, 719, 712, 0, 0, + 722, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, + 315, 0, 0, 0, 0, 253, 0, 286, 178, 195, + 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, + 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, + 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, + 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, + 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, + 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, + 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, + 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, + 218, 220, 0, 0, 0, 283, 308, 328, 145, 0, + 0, 291, 321, 324, 0, 255, 146, 173, 165, 250, + 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, + 201, 0, 0, 238, 263, 149, 307, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 127, 137, 198, 326, 256, 170, - 309, 0, 0, 158, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 127, 137, 198, + 326, 256, 170, 309, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 130, 138, 144, - 150, 157, 164, 168, 175, 179, 182, 185, 186, 187, - 191, 206, 210, 211, 212, 213, 224, 225, 226, 229, - 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, - 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, - 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, - 314, 318, 177, 303, 319, 33, 205, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, + 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, + 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, + 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, + 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, + 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, + 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, + 0, 0, 811, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 151, 131, 228, 282, 169, 66, - 0, 452, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, + 0, 0, 114, 115, 116, 0, 813, 0, 0, 0, + 0, 0, 0, 147, 0, 0, 0, 0, 0, 700, + 701, 699, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2371,22 +2326,22 @@ var yyAct = [...]int{ 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, - 177, 303, 319, 231, 205, 0, 0, 1065, 0, 0, - 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, + 177, 303, 319, 231, 205, 0, 0, 0, 0, 0, + 0, 0, 162, 1155, 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, 0, 0, 114, 115, 116, - 0, 1067, 0, 0, 0, 0, 0, 0, 147, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, - 315, 0, 0, 0, 0, 253, 0, 286, 178, 195, - 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, + 0, 0, 0, 0, 0, 0, 174, 0, 0, 1154, + 315, 0, 0, 0, 1150, 1147, 0, 1148, 1149, 195, + 616, 192, 128, 139, 1145, 1152, 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, @@ -2416,7 +2371,7 @@ var yyAct = [...]int{ 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, - 282, 169, 66, 0, 0, 114, 115, 116, 0, 0, + 282, 169, 66, 0, 452, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2448,13 +2403,13 @@ var yyAct = [...]int{ 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, 0, 0, - 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, + 1065, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, 0, 0, - 114, 115, 116, 0, 0, 1083, 0, 0, 1084, 0, + 114, 115, 116, 0, 1067, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2485,51 +2440,353 @@ var yyAct = [...]int{ 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, - 319, 231, 205, 0, 0, 1065, 0, 0, 0, 0, - 162, 0, 0, 0, 0, 0, 196, 0, 0, 242, - 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, - 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, - 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, - 282, 169, 0, 0, 0, 114, 115, 116, 0, 1067, - 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, + 319, 33, 205, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, + 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, + 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, + 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, + 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 151, 131, 228, 282, 169, 66, 0, 0, 114, 115, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 0, 315, 0, 0, 0, 0, 253, 0, 286, 178, + 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, + 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, + 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, + 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, + 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, + 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, + 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, + 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, + 219, 218, 220, 0, 0, 0, 283, 308, 328, 145, + 0, 0, 291, 321, 324, 0, 255, 146, 173, 165, + 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, + 193, 201, 0, 0, 238, 263, 149, 307, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 127, 137, + 198, 326, 256, 170, 309, 0, 0, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, + 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, + 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, + 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, + 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, + 287, 295, 296, 306, 314, 318, 177, 303, 319, 231, + 205, 0, 0, 0, 0, 0, 0, 0, 162, 0, + 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, + 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, + 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, + 0, 0, 0, 114, 115, 116, 0, 0, 1083, 0, + 0, 1084, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 0, 0, 0, 315, 0, - 0, 0, 0, 253, 0, 286, 178, 195, 143, 192, - 128, 139, 0, 176, 227, 260, 264, 0, 0, 0, - 154, 0, 262, 239, 305, 0, 1063, 261, 200, 294, - 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, - 278, 132, 288, 302, 148, 272, 0, 0, 0, 134, - 300, 285, 215, 189, 190, 133, 0, 258, 160, 172, - 156, 230, 297, 298, 155, 327, 140, 312, 136, 141, - 311, 223, 293, 301, 216, 208, 135, 299, 214, 207, - 194, 166, 180, 251, 203, 252, 181, 219, 218, 220, - 0, 0, 0, 283, 308, 328, 145, 0, 0, 291, - 321, 324, 0, 255, 146, 173, 165, 250, 171, 197, - 320, 322, 323, 222, 142, 183, 279, 193, 201, 0, - 0, 238, 263, 149, 307, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 127, 137, 198, 326, 256, - 170, 309, 0, 0, 158, 0, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 0, 315, 0, 0, 0, + 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, + 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, + 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, + 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, + 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, + 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, + 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, + 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, + 180, 251, 203, 252, 181, 219, 218, 220, 0, 0, + 0, 283, 308, 328, 145, 0, 0, 291, 321, 324, + 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, + 323, 222, 142, 183, 279, 193, 201, 0, 0, 238, + 263, 149, 307, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 130, 138, - 144, 150, 157, 164, 168, 175, 179, 182, 185, 186, - 187, 191, 206, 210, 211, 212, 213, 224, 225, 226, - 229, 232, 233, 234, 236, 237, 240, 244, 245, 246, - 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, - 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, - 306, 314, 318, 177, 303, 319, 231, 205, 0, 0, - 0, 0, 0, 0, 0, 162, 0, 844, 0, 0, + 0, 0, 0, 127, 137, 198, 326, 256, 170, 309, + 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 129, 130, 138, 144, 150, + 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, + 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, + 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, + 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, + 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, + 318, 177, 303, 319, 231, 205, 0, 0, 1065, 0, + 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, + 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, + 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, + 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 151, 131, 228, 282, 169, 0, 0, 0, 114, 115, + 116, 0, 1067, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 0, 315, 0, 0, 0, 0, 253, 0, 286, 178, + 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, + 0, 0, 0, 154, 0, 262, 239, 305, 0, 1063, + 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, + 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, + 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, + 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, + 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, + 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, + 219, 218, 220, 0, 0, 0, 283, 308, 328, 145, + 0, 0, 291, 321, 324, 0, 255, 146, 173, 165, + 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, + 193, 201, 0, 0, 238, 263, 149, 307, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 127, 137, + 198, 326, 256, 170, 309, 0, 0, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, + 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, + 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, + 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, + 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, + 287, 295, 296, 306, 314, 318, 177, 303, 319, 231, + 205, 0, 0, 0, 0, 0, 0, 0, 162, 0, + 844, 0, 0, 0, 196, 0, 0, 242, 0, 273, + 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, + 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, + 0, 0, 0, 114, 115, 116, 0, 843, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 0, 315, 0, 0, 0, + 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, + 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, + 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, + 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, + 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, + 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, + 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, + 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, + 180, 251, 203, 252, 181, 219, 218, 220, 0, 0, + 0, 283, 308, 328, 145, 0, 0, 291, 321, 324, + 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, + 323, 222, 142, 183, 279, 193, 201, 0, 0, 238, + 263, 149, 307, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 127, 137, 198, 326, 256, 170, 309, + 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 129, 130, 138, 144, 150, + 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, + 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, + 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, + 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, + 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, + 318, 177, 303, 319, 231, 205, 0, 0, 0, 0, + 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, + 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, + 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, + 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 151, 131, 228, 282, 169, 0, 0, 0, 114, 115, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 610, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 0, 315, 0, 0, 0, 0, 253, 0, 286, 178, + 195, 616, 192, 128, 139, 614, 176, 227, 260, 264, + 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, + 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, + 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, + 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, + 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, + 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, + 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, + 219, 218, 220, 0, 0, 0, 283, 308, 328, 145, + 0, 0, 291, 321, 324, 0, 255, 146, 173, 165, + 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, + 193, 201, 0, 0, 238, 263, 149, 307, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 127, 137, + 198, 326, 256, 170, 309, 0, 0, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, + 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, + 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, + 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, + 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, + 287, 295, 296, 306, 314, 318, 177, 303, 319, 231, + 205, 0, 0, 0, 0, 0, 0, 0, 162, 0, + 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, + 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, + 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, + 0, 0, 452, 114, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 0, 315, 0, 0, 0, + 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, + 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, + 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, + 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, + 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, + 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, + 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, + 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, + 180, 251, 203, 252, 181, 219, 218, 220, 0, 0, + 0, 283, 308, 328, 145, 0, 0, 291, 321, 324, + 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, + 323, 222, 142, 183, 279, 193, 201, 0, 0, 238, + 263, 149, 307, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 127, 137, 198, 326, 256, 170, 309, + 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 129, 130, 138, 144, 150, + 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, + 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, + 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, + 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, + 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, + 318, 177, 303, 319, 231, 205, 0, 0, 0, 0, + 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, + 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, + 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, + 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 151, 131, 228, 282, 169, 66, 0, 0, 114, 115, + 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 0, 315, 0, 0, 0, 0, 253, 0, 286, 178, + 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, + 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, + 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, + 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, + 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, + 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, + 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, + 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, + 219, 218, 220, 0, 0, 0, 283, 308, 328, 145, + 0, 0, 291, 321, 324, 0, 255, 146, 173, 165, + 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, + 193, 201, 0, 0, 238, 263, 149, 307, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 127, 137, + 198, 326, 256, 170, 309, 0, 0, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, + 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, + 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, + 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, + 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, + 287, 295, 296, 306, 314, 318, 177, 303, 319, 231, + 205, 0, 0, 0, 0, 0, 0, 0, 162, 0, + 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, + 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, + 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, + 0, 0, 0, 114, 115, 116, 0, 1067, 0, 0, + 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 0, 315, 0, 0, 0, + 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, + 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, + 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, + 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, + 288, 302, 148, 272, 0, 0, 0, 134, 300, 285, + 215, 189, 190, 133, 0, 258, 160, 172, 156, 230, + 297, 298, 155, 327, 140, 312, 136, 141, 311, 223, + 293, 301, 216, 208, 135, 299, 214, 207, 194, 166, + 180, 251, 203, 252, 181, 219, 218, 220, 0, 0, + 0, 283, 308, 328, 145, 0, 0, 291, 321, 324, + 0, 255, 146, 173, 165, 250, 171, 197, 320, 322, + 323, 222, 142, 183, 279, 193, 201, 0, 0, 238, + 263, 149, 307, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 127, 137, 198, 326, 256, 170, 309, + 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 129, 130, 138, 144, 150, + 157, 164, 168, 175, 179, 182, 185, 186, 187, 191, + 206, 210, 211, 212, 213, 224, 225, 226, 229, 232, + 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, + 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, + 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, + 318, 177, 303, 319, 231, 205, 0, 0, 0, 0, + 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, + 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, + 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, + 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, + 151, 131, 228, 282, 169, 0, 0, 0, 114, 115, + 116, 0, 813, 0, 0, 0, 0, 0, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 0, 315, 0, 0, 0, 0, 253, 0, 286, 178, + 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, + 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, + 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, + 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, + 0, 0, 134, 300, 285, 215, 189, 190, 133, 0, + 258, 160, 172, 156, 230, 297, 298, 155, 327, 140, + 312, 136, 141, 311, 223, 293, 301, 216, 208, 135, + 299, 214, 207, 194, 166, 180, 251, 203, 252, 181, + 219, 218, 220, 0, 0, 0, 283, 308, 328, 145, + 0, 0, 291, 321, 324, 0, 255, 146, 173, 165, + 250, 171, 197, 320, 322, 323, 222, 142, 183, 279, + 193, 201, 0, 0, 238, 263, 149, 307, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 127, 137, + 198, 326, 256, 170, 309, 0, 0, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 129, 130, 138, 144, 150, 157, 164, 168, 175, 179, + 182, 185, 186, 187, 191, 206, 210, 211, 212, 213, + 224, 225, 226, 229, 232, 233, 234, 236, 237, 240, + 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, + 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, + 287, 295, 296, 306, 314, 318, 177, 303, 319, 826, + 205, 0, 0, 0, 0, 0, 231, 0, 0, 0, + 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, 0, 0, - 114, 115, 116, 0, 843, 0, 0, 0, 0, 0, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2560,7 +2817,7 @@ var yyAct = [...]int{ 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, 177, 303, - 319, 231, 205, 0, 0, 0, 0, 0, 0, 0, + 319, 231, 205, 0, 0, 0, 0, 0, 0, 817, 162, 0, 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, @@ -2570,12 +2827,12 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 610, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 315, 0, - 0, 0, 0, 253, 0, 286, 178, 195, 616, 192, - 128, 139, 614, 176, 227, 260, 264, 0, 0, 0, + 0, 0, 0, 253, 0, 286, 178, 195, 143, 192, + 128, 139, 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, 0, 134, @@ -2603,8 +2860,8 @@ var yyAct = [...]int{ 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 188, 151, 131, 228, 282, 169, 0, 0, 452, - 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, + 0, 188, 151, 131, 228, 282, 169, 0, 0, 0, + 114, 115, 116, 0, 691, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2641,14 +2898,14 @@ var yyAct = [...]int{ 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, - 282, 169, 66, 0, 0, 114, 115, 116, 0, 0, + 282, 169, 0, 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 174, 0, 0, 0, 315, 0, + 0, 0, 368, 0, 174, 0, 0, 0, 315, 0, 0, 0, 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, 294, @@ -2672,21 +2929,21 @@ var yyAct = [...]int{ 229, 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, - 306, 314, 318, 177, 303, 319, 231, 205, 0, 0, + 306, 314, 318, 367, 303, 319, 231, 205, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, 0, 0, - 114, 115, 116, 0, 1067, 0, 0, 0, 0, 0, + 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, - 0, 0, 0, 315, 0, 0, 0, 0, 253, 0, + 0, 122, 0, 315, 0, 0, 0, 0, 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, 317, 159, @@ -2716,7 +2973,7 @@ var yyAct = [...]int{ 184, 209, 241, 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, 131, 228, - 282, 169, 0, 0, 0, 114, 115, 116, 0, 813, + 282, 169, 0, 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2747,249 +3004,23 @@ var yyAct = [...]int{ 229, 232, 233, 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, 295, 296, - 306, 314, 318, 177, 303, 319, 826, 205, 0, 0, - 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, - 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, - 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, - 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, - 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, - 131, 228, 282, 169, 0, 0, 0, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, - 315, 0, 0, 0, 0, 253, 0, 286, 178, 195, - 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, - 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, - 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, - 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, - 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, - 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, - 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, - 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, - 218, 220, 0, 0, 0, 283, 308, 328, 145, 0, - 0, 291, 321, 324, 0, 255, 146, 173, 165, 250, - 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, - 201, 0, 0, 238, 263, 149, 307, 280, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 137, 198, - 326, 256, 170, 309, 0, 0, 158, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, - 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, - 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, - 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, - 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, - 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, - 0, 0, 0, 0, 0, 0, 817, 162, 0, 0, - 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, - 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, - 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, - 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 174, 0, 0, 0, 315, 0, 0, 0, 0, - 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, - 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, - 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, - 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, - 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, - 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, - 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, - 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, - 251, 203, 252, 181, 219, 218, 220, 0, 0, 0, - 283, 308, 328, 145, 0, 0, 291, 321, 324, 0, - 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, - 222, 142, 183, 279, 193, 201, 0, 0, 238, 263, - 149, 307, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 137, 198, 326, 256, 170, 309, 0, - 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 130, 138, 144, 150, 157, - 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, - 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, - 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, - 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, - 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, - 177, 303, 319, 231, 205, 0, 0, 0, 0, 0, - 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, - 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, - 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, - 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, - 131, 228, 282, 169, 0, 0, 0, 114, 115, 116, - 0, 691, 0, 0, 0, 0, 0, 0, 147, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, - 315, 0, 0, 0, 0, 253, 0, 286, 178, 195, - 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, - 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, - 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, - 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, - 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, - 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, - 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, - 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, - 218, 220, 0, 0, 0, 283, 308, 328, 145, 0, - 0, 291, 321, 324, 0, 255, 146, 173, 165, 250, - 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, - 201, 0, 0, 238, 263, 149, 307, 280, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 137, 198, - 326, 256, 170, 309, 0, 0, 158, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, - 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, - 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, - 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, - 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, - 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, - 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, - 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, - 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, - 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, - 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, - 0, 174, 0, 0, 0, 315, 0, 0, 0, 0, - 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, - 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, - 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, - 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, - 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, - 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, - 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, - 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, - 251, 203, 252, 181, 219, 218, 220, 0, 0, 0, - 283, 308, 328, 145, 0, 0, 291, 321, 324, 0, - 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, - 222, 142, 183, 279, 193, 201, 0, 0, 238, 263, - 149, 307, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 137, 198, 326, 256, 170, 309, 0, - 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 130, 138, 144, 150, 157, - 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, - 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, - 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, - 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, - 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, - 367, 303, 319, 231, 205, 0, 0, 0, 0, 0, - 0, 0, 162, 0, 0, 0, 0, 0, 196, 0, - 0, 242, 0, 273, 153, 204, 202, 292, 167, 163, - 161, 152, 184, 209, 241, 289, 235, 0, 199, 0, - 0, 281, 217, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 151, - 131, 228, 282, 169, 0, 0, 0, 114, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 174, 0, 122, 0, - 315, 0, 0, 0, 0, 253, 0, 286, 178, 195, - 143, 192, 128, 139, 0, 176, 227, 260, 264, 0, - 0, 0, 154, 0, 262, 239, 305, 0, 243, 261, - 200, 294, 254, 304, 316, 317, 159, 221, 310, 290, - 313, 325, 278, 132, 288, 302, 148, 272, 0, 0, - 0, 134, 300, 285, 215, 189, 190, 133, 0, 258, - 160, 172, 156, 230, 297, 298, 155, 327, 140, 312, - 136, 141, 311, 223, 293, 301, 216, 208, 135, 299, - 214, 207, 194, 166, 180, 251, 203, 252, 181, 219, - 218, 220, 0, 0, 0, 283, 308, 328, 145, 0, - 0, 291, 321, 324, 0, 255, 146, 173, 165, 250, - 171, 197, 320, 322, 323, 222, 142, 183, 279, 193, - 201, 0, 0, 238, 263, 149, 307, 280, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 127, 137, 198, - 326, 256, 170, 309, 0, 0, 158, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, - 130, 138, 144, 150, 157, 164, 168, 175, 179, 182, - 185, 186, 187, 191, 206, 210, 211, 212, 213, 224, - 225, 226, 229, 232, 233, 234, 236, 237, 240, 244, - 245, 246, 247, 248, 249, 257, 259, 265, 266, 267, - 268, 269, 270, 271, 274, 275, 276, 277, 284, 287, - 295, 296, 306, 314, 318, 177, 303, 319, 231, 205, - 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, - 0, 0, 0, 196, 0, 0, 242, 0, 273, 153, - 204, 202, 292, 167, 163, 161, 152, 184, 209, 241, - 289, 235, 0, 199, 0, 0, 281, 217, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 188, 151, 131, 228, 282, 169, 0, - 0, 0, 114, 115, 116, 0, 0, 0, 0, 0, - 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 174, 0, 0, 0, 315, 0, 0, 0, 0, - 253, 0, 286, 178, 195, 143, 192, 128, 139, 0, - 176, 227, 260, 264, 0, 0, 0, 154, 0, 262, - 239, 305, 0, 243, 261, 200, 294, 254, 304, 316, - 317, 159, 221, 310, 290, 313, 325, 278, 132, 288, - 302, 148, 272, 0, 0, 0, 134, 300, 285, 215, - 189, 190, 133, 0, 258, 160, 172, 156, 230, 297, - 298, 155, 327, 140, 312, 136, 141, 311, 223, 293, - 301, 216, 208, 135, 299, 214, 207, 194, 166, 180, - 251, 203, 252, 181, 219, 218, 220, 0, 0, 0, - 283, 308, 328, 145, 0, 0, 291, 321, 324, 0, - 255, 146, 173, 165, 250, 171, 197, 320, 322, 323, - 222, 142, 183, 279, 193, 201, 0, 0, 238, 263, - 149, 307, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 127, 137, 198, 326, 256, 170, 309, 0, - 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 130, 138, 144, 150, 157, - 164, 168, 175, 179, 182, 185, 186, 187, 191, 206, - 210, 211, 212, 213, 224, 225, 226, 229, 232, 233, - 234, 236, 237, 240, 244, 245, 246, 247, 248, 249, - 257, 259, 265, 266, 267, 268, 269, 270, 271, 274, - 275, 276, 277, 284, 287, 295, 296, 306, 314, 318, - 177, 303, 319, 0, 205, + 306, 314, 318, 177, 303, 319, 0, 205, } var yyPact = [...]int{ - 172, -1000, -289, 1236, -1000, -1000, -1000, -1000, -1000, -1000, + 177, -1000, -281, 1294, -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, 1173, 902, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 338, 865, 72, 1100, 21, 644, 181, 13, 19034, 178, - 411, 19409, -1000, 33, -1000, 25, 19409, 26, 18659, -1000, - -1000, -1000, 10751, 1056, -49, -58, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 861, 1143, 1148, 1169, 715, 1203, - -1000, 9238, 9238, 149, 149, 149, 7738, -1000, -1000, 15652, - 19409, 19409, 19409, -133, 141, 170, 141, -1000, -1000, -1000, - -1000, -1000, -1000, 1100, -1000, -1000, 83, -1000, -1000, 19409, - 19409, 307, 1100, 53, -1000, -1000, -1000, 19409, 135, 644, - 135, 135, 19409, -1000, 220, -1000, -1000, -1000, -1000, -1000, + -1000, 1224, 963, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 383, 922, 98, 1151, 43, 653, 185, 15, 19347, 181, + 308, 19722, -1000, 59, -1000, 49, 19722, 55, 18972, -1000, + -1000, -1000, 11064, 1114, -62, -66, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 942, 1210, 1215, 1229, 773, 1290, + -1000, 9551, 9551, 138, 138, 138, 8051, -1000, -1000, 15965, + 19722, 19722, 19722, -129, 153, 165, 153, -1000, -1000, -1000, + -1000, -1000, -1000, 1151, -1000, -1000, 81, -1000, -1000, 19722, + 19722, 274, 1151, 78, -1000, -1000, -1000, 19722, 147, 653, + 147, 147, 19722, -1000, 227, -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, @@ -3009,23 +3040,23 @@ 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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19409, - 644, 1086, 369, 102, 266, 266, 266, 266, -1000, 295, - -1000, 5386, 54, 48, -51, 1184, 44, 24, -1000, 369, - 5386, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 156, - -1000, -1000, -1000, -1000, 19409, 18284, 153, 378, -1000, -1000, - -1000, -1000, 747, 534, -1000, 10751, 1967, 806, 806, -1000, - -1000, 211, -1000, -1000, 11876, 11876, 11876, 11876, 11876, 11876, - 11876, 11876, 11876, 11876, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 806, 219, - -1000, 10376, 806, 806, 806, 806, 806, 806, 806, 806, - 10751, 806, 806, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, 806, 806, -1000, -1000, -1000, - 19409, -1000, 1173, -1000, 902, -1000, -1000, -1000, 1089, 10751, - 10751, 1173, -1000, 1010, 9238, -1000, -1000, 1186, -1000, -1000, - -1000, -1000, 445, 1215, -1000, 12626, 218, 1197, 17909, -1000, - 16402, 17534, 804, 7346, -104, -1000, -1000, -1000, 370, 15277, - -1000, -1000, -1000, 1085, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19722, + 653, 1136, 452, 109, 283, 283, 283, 283, -1000, 273, + -1000, 5699, 79, 73, -38, 1250, 68, 9, -1000, 452, + 5699, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 158, + -1000, -1000, -1000, -1000, 19722, 18597, 166, 342, -1000, -1000, + -1000, -1000, 711, 451, -1000, 11064, 1683, 769, 769, -1000, + -1000, 203, -1000, -1000, 12189, 12189, 12189, 12189, 12189, 12189, + 12189, 12189, 12189, 12189, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 769, 226, + -1000, 10689, 769, 769, 769, 769, 769, 769, 769, 769, + 11064, 769, 769, 769, 769, 769, 769, 769, 769, 769, + 769, 769, 769, 769, 769, 769, 769, -1000, -1000, -1000, + 19722, -1000, 1224, -1000, 963, -1000, -1000, -1000, 1162, 11064, + 11064, 1224, -1000, 1043, 9551, -1000, -1000, 1282, -1000, -1000, + -1000, -1000, 410, 1261, -1000, 12939, 220, 1257, 18222, -1000, + 16715, 17847, 880, 7659, -96, -1000, -1000, -1000, 327, 15590, + -1000, -1000, -1000, 1132, -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, @@ -3037,209 +3068,209 @@ 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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 742, - 19409, -1000, -1000, 189, 644, -1000, 843, -1000, 740, -1000, - 824, 5386, 155, 19409, 387, 644, 644, -1000, -1000, 1079, - 357, 154, 5386, 69, 103, 87, 19409, 1100, 1055, 790, - 152, 19409, 1138, 932, 19409, 644, -1000, 6562, -1000, 5386, - 369, -1000, 610, 10751, 5386, 5386, 5386, 19409, 5386, 5386, - -1000, 609, -1000, -1000, -1000, 383, -1000, -1000, -1000, -1000, - -1000, -1000, 5386, 5386, 366, 383, 366, -1000, -1000, -1000, - -1000, 10751, 266, -1000, 931, -1000, -1000, 23, -1000, -1000, - -1000, -1000, -1000, 1236, -1000, -1000, -1000, -131, 10751, 10751, - 10751, 10751, 565, 268, 11876, 487, 439, 11876, 11876, 11876, - 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, 11876, - 11876, 11876, 603, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 644, -1000, 1229, 866, 866, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 12251, 8113, 6562, 715, 733, - 1173, 9238, 9238, 10751, 10751, 9988, 9613, 9238, 1092, 385, - 534, 19409, -1000, -1000, 11501, -1000, -1000, -1000, -1000, -1000, - 537, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19409, 19409, - 9238, 9238, 9238, 9238, 9238, -1000, 789, -1000, -172, 14902, - 1148, 715, 1186, 1126, 1224, 248, 505, 788, -1000, 591, - 1148, 14527, 844, -1000, 1186, -1000, -1000, -1000, 19409, -1000, - -1000, 17152, -1000, -1000, 6170, 19409, 99, 19409, -1000, 773, - 952, -1000, -1000, -1000, 1140, 14152, 19409, 837, 828, -1000, - -1000, 216, 6954, -104, -1000, 6954, 772, -1000, -81, -86, - 8488, 214, -1000, -1000, -1000, -1000, 4602, 13001, 696, 450, - -38, -1000, -1000, -1000, 824, -1000, 824, 824, 824, 824, - -6, -6, -6, -6, -1000, -1000, -1000, -1000, -1000, 857, - 856, -1000, 824, 824, 824, 824, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 839, + 19722, -1000, -1000, 1902, 653, -1000, 896, -1000, 806, -1000, + 888, 5699, 160, 19722, 361, 653, 653, -1000, -1000, 1130, + 310, 137, 5699, 90, 124, 113, 19722, 1151, 1105, 879, + 156, 19722, 1201, 983, 19722, 653, -1000, 6875, -1000, 5699, + 452, -1000, 623, 11064, 5699, 5699, 5699, 19722, 5699, 5699, + -1000, 620, -1000, -1000, -1000, 387, -1000, -1000, -1000, -1000, + -1000, -1000, 5699, 5699, 376, 387, 376, -1000, -1000, -1000, + -1000, 11064, 283, -1000, 982, -1000, -1000, 52, -1000, -1000, + -1000, -1000, -1000, 1294, -1000, -1000, -1000, -123, 11064, 11064, + 11064, 11064, 581, 285, 12189, 596, 440, 12189, 12189, 12189, + 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, 12189, + 12189, 12189, 641, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 653, -1000, 1292, 783, 783, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 12564, 8426, 6875, 773, 802, + 1224, 9551, 9551, 11064, 11064, 10301, 9926, 9551, 1134, 323, + 451, 19722, -1000, -1000, 11814, -1000, -1000, -1000, -1000, -1000, + 630, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19722, 19722, + 9551, 9551, 9551, 9551, 9551, -1000, 874, -1000, -164, 15215, + 1215, 773, 1282, 1194, 1285, 280, 529, 872, -1000, 613, + 1215, 14840, 904, -1000, 1282, -1000, -1000, -1000, 19722, -1000, + -1000, 17465, -1000, -1000, 6483, 19722, 105, 19722, -1000, 893, + 1154, -1000, -1000, -1000, 1205, 14465, 19722, 844, 838, -1000, + -1000, 219, 7267, -96, -1000, 7267, 849, -1000, -87, -105, + 8801, 248, -1000, -1000, -1000, -1000, 4915, 13314, 669, 365, + -37, -1000, -1000, -1000, 888, -1000, 888, 888, 888, 888, + 3, 3, 3, 3, -1000, -1000, -1000, -1000, -1000, 921, + 910, -1000, 888, 888, 888, 888, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 849, 849, 849, 825, 825, 123, 10751, - 64, 19409, 1133, 530, -1000, 19409, -1000, 1136, 885, -1000, - 357, 654, -1000, -1000, 1633, 1633, 304, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 100, -1000, - 19409, 19409, 19409, 19409, 19409, 192, 61, 19409, 19409, 785, - -1000, 19409, 5386, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 534, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19409, -1000, - -1000, -1000, -1000, 369, 19409, 19409, 19409, 369, 534, -1000, - 19409, 19409, -1000, -1000, -1000, -1000, -1000, 534, 268, 384, - 271, -1000, -1000, 543, -1000, -1000, 2200, -1000, -1000, -1000, - -1000, 487, 11876, 11876, 11876, 1088, 2200, 1926, 1882, 465, - 228, 440, 440, 247, 247, 247, 247, 247, 390, 390, - -1000, -1000, -1000, 537, -1000, -1000, -1000, 537, 9238, 9238, - 778, 806, 215, -1000, 861, -1000, -1000, 1148, 718, 718, - 482, 512, 334, 1192, 718, 332, 1189, 718, 718, 9238, - -1000, -1000, 402, -1000, 10751, 537, -1000, 202, -1000, 923, - 777, 776, 718, 537, 537, 718, 718, 19409, -1000, -286, - -1000, -117, 226, 806, -1000, 16777, -1000, -1000, 1089, -1000, - -1000, 1051, -1000, 1007, 10751, 10751, 10751, -1000, -1000, -1000, - 1089, 1165, -1000, 1029, 1025, 1183, 9238, 16402, 1186, -1000, - -1000, -1000, 198, 1183, 811, 806, -1000, 19409, 16402, 16402, - 16402, 16402, 16402, -1000, 998, 951, -1000, 977, 975, 976, - 19409, -1000, 729, 715, 14152, 99, 661, 16402, 19409, -1000, - -1000, 16402, 19409, 5778, -1000, 772, -104, -89, -1000, -1000, - -1000, -1000, 534, -1000, 632, 764, 4210, -1000, -1000, -1000, - -1000, 129, -1000, -1000, 847, 644, -1000, 1115, 299, 299, - 423, 644, 1114, -1000, -1000, -1000, -1000, 1099, -1000, 409, - -44, -1000, -1000, -6, -6, -1000, -1000, 214, 1077, 214, - 214, 214, 602, 602, -1000, -1000, -1000, -1000, -1000, 521, - -1000, -1000, -1000, 497, -1000, -1000, 843, 643, 892, 64, - -1000, 644, 357, 595, 1061, -1000, -1000, 648, 5386, -1000, - 928, 19409, 627, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 907, 907, 907, 890, 890, 129, 11064, + 84, 19722, 1185, 533, -1000, 19722, -1000, 1188, 967, -1000, + 310, 745, -1000, -1000, 253, 253, 320, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 106, -1000, + 19722, 19722, 19722, 19722, 19722, 193, 85, 19722, 19722, 868, + -1000, 19722, 5699, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 451, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 19722, -1000, + -1000, -1000, -1000, 452, 19722, 19722, 19722, 452, 451, -1000, + 19722, 19722, -1000, -1000, -1000, -1000, -1000, 451, 285, 309, + 380, -1000, -1000, 555, -1000, -1000, 1723, -1000, -1000, -1000, + -1000, 596, 12189, 12189, 12189, 461, 1723, 1756, 902, 394, + 251, 319, 319, 242, 242, 242, 242, 242, 1124, 1124, + -1000, -1000, -1000, 630, -1000, -1000, -1000, 630, 9551, 9551, + 865, 769, 218, -1000, 942, -1000, -1000, 1215, 771, 771, + 703, 590, 356, 1256, 771, 343, 1255, 771, 771, 9551, + -1000, -1000, 397, -1000, 11064, 630, -1000, 217, -1000, 476, + 864, 860, 771, 630, 630, 771, 771, 19722, -1000, -278, + -1000, -98, 239, 769, -1000, 17090, -1000, -1000, 1162, -1000, + -1000, 1093, -1000, 1039, 11064, 11064, 11064, -1000, -1000, -1000, + 1162, 1223, -1000, 1057, 1055, 1249, 9551, 16715, 1282, -1000, + -1000, -1000, 213, 1249, 909, 769, -1000, 19722, 16715, 16715, + 16715, 16715, 16715, -1000, 1029, 1025, -1000, 1005, 1003, 1028, + 19722, -1000, 785, 773, 14465, 105, 660, 16715, 19722, -1000, + -1000, 16715, 19722, 6091, -1000, 849, -96, -76, -1000, -1000, + -1000, -1000, 451, -1000, 723, 808, 4523, -1000, -1000, -1000, + -1000, 135, -1000, -1000, 906, 653, -1000, 1172, 303, 303, + 321, 653, 1170, -1000, -1000, -1000, -1000, 1150, -1000, 390, + -51, -1000, -1000, 3, 3, -1000, -1000, 248, 1127, 248, + 248, 248, 602, 602, -1000, -1000, -1000, -1000, -1000, 528, + -1000, -1000, -1000, 526, -1000, -1000, 896, 432, 974, 84, + -1000, -1000, 310, 600, 1118, 19722, -1000, -1000, 647, 5699, + -1000, 980, -1000, 665, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 19409, -1000, -1000, -1000, -1000, -1000, 19409, 877, - -1000, -1000, -1000, -1000, 28, 65, 58, 151, -1000, 5386, - -1000, 366, -1000, -1000, -1000, 366, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1088, 2200, 1865, -1000, 11876, 11876, -1000, - -1000, 718, 718, 9238, 6562, 1173, 1089, -1000, -1000, 323, - 603, 323, 11876, 11876, -1000, 11876, 11876, -1000, -147, 748, - 284, -1000, 10751, 502, -1000, 6562, -1000, 11876, 11876, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 168, 162, - 160, 19409, -1000, -1000, 608, 577, 1005, 534, 534, -1000, - -1000, 19409, -1000, -1000, -1000, -1000, 1168, 10751, -1000, 762, - -1000, 4994, 1148, 921, 19409, 806, 1236, 13389, 19409, 826, - -1000, 364, 952, 875, 915, 1008, -1000, -1000, -1000, -1000, - 948, -1000, 944, -1000, -1000, -1000, -1000, -1000, 715, 1183, - 16402, 727, -1000, 727, -1000, 194, -1000, -1000, -1000, -101, - -92, -1000, -1000, -1000, 4602, -1000, 4602, -1000, 19409, 121, - -1000, 644, 644, 644, -1000, -1000, -1000, 840, 913, 11876, - -1000, -1000, -1000, 214, 214, -1000, 414, -1000, -1000, -1000, - 714, -1000, 712, 760, 710, 19, -1000, 841, 1074, 357, - 357, -1000, -1000, 493, -1000, 567, -1000, -1000, 19409, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1123, -154, 644, 19409, - 19409, 19409, -1000, 19409, -1000, 369, 369, -1000, 11876, 2200, - 2200, -1000, -1000, 537, -1000, 1148, -1000, 537, 824, 824, - -1000, 824, 825, -1000, 824, 11, 824, 10, 537, 537, - 2171, 2151, 2115, 1724, 806, -142, -1000, 534, 10751, -1000, - 1360, 751, 806, 806, 806, 705, -1000, 566, -6, -1000, - -1000, -1000, 1175, 1167, 534, -1000, -1000, -1000, 1119, 677, - 744, -1000, -1000, 8863, 707, 1022, 193, 705, 1173, 19409, - 10751, -1000, -1000, 10751, 823, -1000, 10751, -1000, -1000, -1000, - 1173, 1173, 727, -1000, -1000, 240, -1000, -1000, -1000, 4210, - -1000, 694, -1000, 1114, -1000, -1000, -1000, 19409, -33, 1223, - 2200, -1000, -1000, -1000, -1000, -6, 562, -6, 476, -1000, - 468, -1000, -1000, -214, -1000, -1000, 820, 934, -1000, -1000, - -1000, 806, -1000, 6562, -1000, -1000, 812, 878, -1000, -1000, - -1000, -1000, 2200, -1000, 1089, -1000, -1000, 161, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 11876, 11876, 11876, 11876, - 11876, 1148, 557, 534, 11876, 11876, 16027, 19409, 19409, 13764, - 19409, -6, -66, -1000, 10751, 10751, 1113, -1000, 806, -1000, - 766, 19409, 806, 19409, -1000, 1148, -1000, 534, 534, 19409, - 534, 1148, -1000, 64, 688, -1000, 283, -1000, -156, 214, - -1000, 214, 642, 539, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 98, 750, -1000, 305, 19409, 19409, -1000, -1000, - -1000, 923, 923, 923, 923, 143, 537, -1000, 923, 923, - 686, -1000, 686, 686, 226, -1000, -277, -1000, 1052, 1050, - 534, 747, 1222, -1000, 806, 1236, 173, 744, -1000, -1000, - 681, -1000, -1000, 113, 19409, 420, 1112, -1000, 1102, -1000, - -1000, -1000, -1000, -1000, 672, -1000, 19409, 6562, 4602, 670, - -1000, -1000, -1000, -1000, -1000, 537, 86, -159, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -66, 207, -1000, 1033, 1031, - 1166, 19409, 744, 19409, -1000, 19409, -1000, -1000, 556, -1000, - -1000, -1000, 98, 1015, -1000, -1000, 877, -1000, 1004, -152, - -162, 1037, 1039, 1039, 1050, 1162, 1048, 1045, -1000, 544, - 701, -1000, 808, -1000, -1000, 92, -154, -1000, 1003, -1000, - 1035, 478, -1000, -1000, -1000, -1000, 542, -1000, 1161, 1150, - -1000, 19409, 73, -1000, -157, -1000, 428, -1000, -1000, -1000, - 538, 479, 666, 806, -160, -1000, -1000, -1000, -1000, 911, - 11126, -179, 891, -1000, 1220, 923, 537, -1000, -1000, 1188, - 273, 273, -1000, -1000, -1000, -1000, -1000, 120, 532, -1000, + -1000, -1000, -1000, 19722, -1000, -1000, -1000, -1000, -1000, 19722, + 911, -1000, -1000, -1000, -1000, 24, 89, 83, 146, -1000, + 5699, -1000, 376, -1000, -1000, -1000, 376, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 461, 1723, 637, -1000, 12189, 12189, + -1000, -1000, 771, 771, 9551, 6875, 1224, 1162, -1000, -1000, + 261, 641, 261, 12189, 12189, -1000, 12189, 12189, -1000, -141, + 845, 346, -1000, 11064, 517, -1000, 6875, -1000, 12189, 12189, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 164, + 163, 162, 19722, -1000, -1000, 556, 598, 1037, 451, 451, + -1000, -1000, 19722, -1000, -1000, -1000, -1000, 1235, 11064, -1000, + 787, -1000, 5307, 1215, 977, 19722, 769, 1294, 13702, 19722, + 897, -1000, 322, 1154, 935, 976, 1329, -1000, -1000, -1000, + -1000, 1009, -1000, 997, -1000, -1000, -1000, -1000, -1000, 773, + 1249, 16715, 841, -1000, 841, -1000, 202, -1000, -1000, -1000, + -95, -116, -1000, -1000, -1000, 4915, -1000, 4915, -1000, 19722, + 128, -1000, 653, 653, 653, -1000, -1000, -1000, 895, 975, + 12189, -1000, -1000, -1000, 248, 248, -1000, 289, -1000, -1000, + -1000, 763, -1000, 760, 750, 753, 26, -1000, 878, 1125, + 310, 310, -1000, 477, -1000, 653, -1000, -1000, -1000, 19722, + -1000, -1000, -1000, -1000, -1000, -1000, 1178, -147, 653, 19722, + 19722, 19722, -1000, 19722, -1000, 452, 452, -1000, 12189, 1723, + 1723, -1000, -1000, 630, -1000, 1215, -1000, 630, 888, 888, + -1000, 888, 890, -1000, 888, 41, 888, 38, 630, 630, + 1157, 953, 887, 768, 769, -136, -1000, 451, 11064, -1000, + 573, 539, 769, 769, 769, 738, -1000, 595, 3, -1000, + -1000, -1000, 1232, 1228, 451, -1000, -1000, -1000, 1158, 842, + 693, -1000, -1000, 9176, 741, 1054, 197, 738, 1224, 19722, + 11064, -1000, -1000, 11064, 884, -1000, 11064, -1000, -1000, -1000, + 1224, 1224, 841, -1000, -1000, 267, -1000, -1000, -1000, 4523, + -1000, 719, -1000, 1170, -1000, -1000, -1000, 19722, -33, 1268, + 1723, -1000, -1000, -1000, -1000, 3, 594, 3, 469, -1000, + 419, -1000, -1000, -209, -1000, -1000, 873, 994, -1000, -1000, + -1000, 769, -1000, 6875, -1000, -1000, 883, 966, -1000, -1000, + -1000, -1000, 1723, -1000, 1162, -1000, -1000, 144, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 12189, 12189, 12189, 12189, + 12189, 1215, 593, 451, 12189, 12189, 16340, 19722, 19722, 14077, + 19722, 3, -57, -1000, 11064, 11064, 1168, -1000, 769, -1000, + 805, 19722, 769, 19722, -1000, 1215, -1000, 451, 451, 19722, + 451, 1215, -1000, 84, 715, -1000, 275, -1000, -151, 248, + -1000, 248, 645, 640, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 103, 734, -1000, 296, 19722, 19722, -1000, -1000, + -1000, 476, 476, 476, 476, 112, 630, -1000, 476, 476, + 713, -1000, 713, 713, 239, -1000, -270, -1000, 1100, 1098, + 451, 711, 1265, -1000, 769, 1294, 190, 693, -1000, -1000, + 701, -1000, -1000, 119, 19722, 401, 1156, -1000, 1155, -1000, + -1000, -1000, -1000, -1000, 690, -1000, 19722, 6875, 4915, 672, + -1000, -1000, -1000, -1000, -1000, 630, 92, -155, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -57, 179, -1000, 1063, 1061, + 1227, 19722, 693, 19722, -1000, 19722, -1000, -1000, 562, -1000, + -1000, -1000, 103, 1053, -1000, -1000, 911, -1000, 1036, -145, + -166, 1080, 1082, 1082, 1098, 1225, 1096, 1089, -1000, 557, + 674, -1000, 784, -1000, -1000, 97, -147, -1000, 998, -1000, + 1076, 524, -1000, -1000, -1000, -1000, 554, -1000, 1221, 1220, + -1000, 19722, 94, -1000, -148, -1000, 457, -1000, -1000, -1000, + 549, 547, 662, 769, -156, -1000, -1000, -1000, -1000, 972, + 11439, -174, 969, -1000, 1254, 476, 630, -1000, -1000, 1264, + 260, 260, -1000, -1000, -1000, -1000, -1000, 125, 459, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1506, 1505, 25, 79, 80, 1504, 1503, 1501, 1500, - 117, 116, 115, 1498, 1497, 1495, 1494, 1481, 1479, 1475, - 1474, 1473, 1472, 1471, 1468, 1466, 1464, 98, 97, 467, - 1457, 1456, 1455, 1454, 1452, 1450, 1449, 1447, 1446, 1444, - 1443, 1442, 1439, 1438, 103, 1437, 1431, 1430, 1429, 1428, - 1423, 1418, 1417, 1416, 95, 60, 217, 55, 68, 1415, - 67, 1610, 1413, 39, 73, 70, 1412, 40, 1410, 1404, - 89, 1398, 1397, 66, 1396, 1395, 2016, 1394, 64, 74, - 15, 32, 1393, 1392, 1391, 1389, 99, 314, 1388, 1385, - 17, 1383, 1381, 112, 1380, 75, 31, 13, 20, 19, - 1377, 77, 1375, 9, 1370, 69, 1368, 1366, 1364, 1363, - 30, 1361, 71, 81, 29, 1360, 6, 11, 1359, 1358, - 1357, 1356, 1355, 1354, 4, 1353, 1350, 1349, 1348, 1347, - 44, 1345, 7, 65, 42, 22, 10, 1344, 1343, 21, - 78, 61, 85, 1342, 1341, 1338, 721, 1337, 36, 1333, - 119, 1332, 43, 102, 391, 554, 1331, 1330, 1327, 1326, - 1325, 50, 803, 1787, 113, 88, 1324, 1323, 2590, 53, - 72, 18, 1321, 1320, 1316, 63, 100, 47, 718, 1315, - 45, 1313, 1306, 1305, 1304, 1303, 1301, 1300, 121, 1298, - 1297, 1295, 126, 23, 96, 24, 1294, 1293, 1292, 1289, - 54, 82, 1288, 1286, 58, 56, 1284, 101, 28, 33, - 1281, 1280, 1279, 1276, 38, 12, 1273, 84, 37, 48, - 27, 34, 1268, 16, 1261, 35, 41, 1260, 8, 1259, - 14, 1258, 2, 0, 1256, 5, 1255, 83, 1091, 1, - 1254, 3, 1253, 1252, 76, 1251, 1248, 1243, 1529, 784, - 86, 1242, 104, + 0, 1559, 1556, 33, 79, 80, 1555, 1553, 1552, 1551, + 127, 126, 125, 1550, 1549, 1548, 1547, 1546, 1545, 1543, + 1542, 1541, 1540, 1539, 1538, 1537, 1536, 109, 107, 457, + 1535, 1533, 1532, 1531, 1530, 1529, 1528, 1527, 1525, 1524, + 1523, 1521, 1517, 1516, 108, 1515, 1514, 1511, 1509, 1508, + 1496, 1494, 1493, 1490, 102, 54, 124, 55, 73, 1489, + 70, 1930, 1488, 44, 77, 71, 1487, 48, 1486, 1485, + 100, 1484, 1483, 68, 1480, 1479, 1919, 1478, 65, 75, + 16, 31, 1477, 1476, 1475, 1474, 104, 1112, 1472, 1471, + 21, 1470, 1469, 119, 1468, 82, 25, 15, 13, 18, + 1466, 81, 1465, 29, 1464, 74, 1460, 1455, 1454, 1453, + 24, 1452, 76, 85, 23, 1451, 5, 11, 1450, 1449, + 1448, 1447, 1444, 1443, 1, 1442, 1440, 1439, 1435, 28, + 1434, 26, 67, 39, 27, 9, 1433, 1431, 22, 103, + 66, 95, 1430, 1429, 1428, 777, 1427, 63, 1426, 128, + 1425, 35, 106, 389, 531, 1423, 1418, 1416, 1411, 1407, + 45, 1116, 2100, 10, 101, 1403, 1400, 2903, 50, 72, + 30, 1399, 1390, 1389, 69, 61, 53, 730, 1387, 43, + 1383, 1381, 1379, 1377, 1372, 1371, 1367, 122, 1365, 1364, + 1363, 94, 19, 98, 20, 1361, 1360, 1359, 1358, 62, + 96, 1356, 1354, 60, 64, 1348, 105, 40, 36, 1346, + 1344, 1339, 1338, 42, 12, 1334, 89, 47, 58, 32, + 37, 83, 1331, 17, 1328, 1327, 41, 38, 1324, 8, + 1322, 14, 1321, 2, 0, 1319, 6, 1317, 84, 1150, + 3, 1315, 4, 1314, 1311, 78, 1308, 1307, 1301, 1842, + 7, 99, 1300, 112, } var yyR1 = [...]int{ - 0, 246, 247, 247, 1, 1, 1, 1, 1, 1, + 0, 247, 248, 248, 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, 233, 233, 233, 236, 236, 21, 41, + 1, 1, 1, 234, 234, 234, 237, 237, 21, 41, 3, 3, 3, 3, 2, 2, 8, 9, 4, 5, 5, 10, 10, 48, 48, 11, 12, 12, 12, 12, - 250, 250, 70, 70, 71, 71, 133, 133, 13, 14, - 14, 142, 142, 141, 141, 141, 143, 143, 143, 143, - 178, 178, 15, 15, 15, 15, 15, 15, 235, 235, - 234, 232, 232, 231, 231, 230, 23, 24, 25, 26, - 238, 238, 210, 30, 30, 29, 29, 29, 29, 31, - 31, 28, 28, 27, 27, 212, 212, 211, 211, 211, - 211, 211, 211, 201, 181, 181, 181, 181, 184, 184, - 182, 182, 182, 182, 182, 182, 182, 182, 182, 183, - 183, 183, 183, 183, 185, 185, 185, 185, 185, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 187, 187, 187, 187, 187, 187, - 187, 187, 200, 200, 188, 188, 194, 194, 195, 195, - 195, 197, 197, 198, 198, 156, 156, 156, 190, 190, - 191, 191, 196, 196, 192, 192, 192, 193, 193, 193, - 199, 199, 199, 199, 199, 189, 189, 202, 223, 223, - 222, 222, 219, 219, 219, 219, 209, 209, 216, 216, - 216, 216, 216, 216, 206, 206, 206, 207, 207, 205, - 205, 208, 208, 218, 218, 217, 203, 203, 204, 204, - 225, 225, 225, 225, 225, 226, 240, 241, 239, 239, - 239, 239, 239, 157, 157, 157, 213, 213, 213, 214, - 214, 214, 215, 215, 215, 16, 16, 16, 16, 16, + 251, 251, 70, 70, 71, 71, 132, 132, 13, 14, + 14, 141, 141, 140, 140, 140, 142, 142, 142, 142, + 177, 177, 15, 15, 15, 15, 15, 15, 236, 236, + 235, 233, 233, 232, 232, 231, 23, 24, 25, 26, + 239, 239, 209, 30, 30, 29, 29, 29, 29, 31, + 31, 28, 28, 27, 27, 211, 211, 210, 210, 210, + 210, 210, 210, 200, 180, 180, 180, 180, 183, 183, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, + 182, 182, 182, 182, 184, 184, 184, 184, 184, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 186, 186, 186, 186, 186, 186, + 186, 186, 199, 199, 187, 187, 193, 193, 194, 194, + 194, 196, 196, 197, 197, 155, 155, 155, 189, 189, + 190, 190, 195, 195, 191, 191, 191, 192, 192, 192, + 198, 198, 198, 198, 198, 188, 188, 201, 223, 223, + 222, 222, 218, 218, 218, 218, 208, 208, 215, 215, + 215, 215, 215, 215, 205, 205, 205, 206, 206, 204, + 204, 207, 207, 217, 217, 216, 202, 202, 203, 203, + 226, 226, 226, 226, 226, 227, 241, 242, 240, 240, + 240, 240, 240, 156, 156, 156, 212, 212, 212, 213, + 213, 213, 214, 214, 214, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 237, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 229, 227, 227, 228, - 228, 17, 22, 22, 18, 18, 18, 18, 19, 19, + 16, 16, 238, 238, 238, 238, 238, 238, 238, 238, + 238, 238, 238, 238, 238, 238, 230, 228, 228, 229, + 229, 17, 22, 22, 18, 18, 18, 18, 19, 19, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 149, 149, 242, 242, 151, 151, 147, 147, - 150, 150, 148, 148, 148, 152, 152, 152, 153, 153, - 179, 179, 179, 34, 34, 36, 36, 37, 38, 38, - 173, 173, 174, 174, 39, 40, 47, 47, 47, 47, + 33, 33, 148, 148, 243, 243, 150, 150, 146, 146, + 149, 149, 147, 147, 147, 151, 151, 151, 152, 152, + 178, 178, 178, 34, 34, 36, 36, 37, 38, 38, + 172, 172, 173, 173, 39, 40, 47, 47, 47, 47, 47, 47, 49, 49, 49, 7, 7, 7, 7, 46, - 46, 46, 6, 6, 35, 35, 42, 243, 243, 244, - 245, 245, 245, 245, 43, 20, 251, 44, 45, 45, + 46, 46, 6, 6, 35, 35, 42, 244, 244, 245, + 246, 246, 246, 246, 43, 20, 252, 44, 45, 45, 54, 54, 54, 50, 50, 50, 53, 53, 53, 57, 57, 59, 59, 59, 59, 59, 60, 60, 60, 60, - 60, 60, 56, 56, 58, 58, 58, 58, 166, 166, - 166, 165, 165, 62, 62, 63, 63, 64, 64, 65, - 65, 65, 102, 79, 79, 132, 132, 134, 134, 66, - 66, 66, 66, 67, 67, 68, 68, 69, 69, 172, - 172, 171, 171, 171, 170, 170, 72, 72, 72, 74, + 60, 60, 56, 56, 58, 58, 58, 58, 165, 165, + 165, 164, 164, 62, 62, 63, 63, 64, 64, 65, + 65, 65, 102, 79, 79, 131, 131, 133, 133, 66, + 66, 66, 66, 67, 67, 68, 68, 69, 69, 171, + 171, 170, 170, 170, 169, 169, 72, 72, 72, 74, 73, 73, 73, 73, 75, 75, 77, 77, 76, 76, 78, 80, 80, 80, 80, 80, 81, 81, 61, 61, - 61, 61, 61, 61, 61, 61, 145, 145, 83, 83, + 61, 61, 61, 61, 61, 61, 144, 144, 83, 83, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 94, 94, 94, 94, 94, 94, 84, 84, 84, 84, 84, 84, 84, 55, 55, 95, 95, 95, 101, 96, @@ -3249,26 +3280,46 @@ var yyR1 = [...]int{ 87, 87, 87, 87, 87, 91, 91, 91, 91, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 252, 252, + 90, 90, 90, 90, 90, 90, 90, 90, 253, 253, 93, 92, 92, 92, 92, 92, 92, 92, 52, 52, - 52, 52, 52, 177, 177, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 106, 106, + 52, 52, 52, 176, 176, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 106, 106, 51, 51, 104, 104, 105, 107, 107, 103, 103, 103, 86, 86, 86, 86, 86, 86, 86, 86, 88, 88, 88, 108, 108, 109, 109, 110, 110, 111, 111, 112, 113, 113, 113, 114, 114, 114, 114, 224, 224, 224, - 224, 224, 220, 220, 220, 220, 221, 221, 221, 130, - 130, 130, 115, 115, 115, 115, 120, 120, 120, 116, + 224, 224, 219, 219, 219, 219, 220, 220, 220, 129, + 129, 129, 115, 115, 115, 115, 120, 120, 120, 116, 116, 118, 118, 118, 119, 119, 119, 117, 123, 123, 125, 125, 124, 124, 122, 122, 127, 127, 126, 126, - 121, 121, 85, 85, 85, 85, 85, 131, 131, 131, - 131, 135, 135, 97, 97, 99, 99, 98, 100, 136, - 136, 139, 137, 137, 140, 140, 140, 140, 140, 138, - 138, 138, 167, 167, 167, 144, 144, 154, 154, 155, - 155, 146, 146, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 159, 159, 159, 160, 160, 128, 128, - 128, 128, 129, 129, 163, 163, 164, 164, 168, 168, - 169, 169, 161, 161, 161, 161, 161, 161, 161, 161, + 121, 121, 85, 85, 85, 85, 85, 130, 130, 130, + 130, 134, 134, 97, 97, 99, 99, 98, 100, 135, + 135, 138, 136, 136, 139, 139, 139, 139, 139, 137, + 137, 137, 166, 166, 166, 143, 143, 153, 153, 154, + 154, 145, 145, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 158, 158, 158, 159, 159, 128, 128, + 128, 128, 225, 225, 221, 162, 162, 163, 163, 167, + 167, 168, 168, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, @@ -3280,28 +3331,8 @@ var yyR1 = [...]int{ 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 248, 249, - 175, 176, 176, 176, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 249, + 250, 174, 175, 175, 175, } var yyR2 = [...]int{ @@ -3326,7 +3357,7 @@ var yyR2 = [...]int{ 5, 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 3, 0, 1, 0, 3, 3, 0, 2, 2, 0, 2, 1, 2, 1, 0, 2, 5, 0, 1, - 1, 2, 2, 3, 2, 3, 0, 1, 2, 3, + 1, 2, 1, 3, 2, 3, 0, 1, 2, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, 3, 3, 1, 3, 1, 10, 11, 11, 12, 1, 5, 3, 3, 1, 1, @@ -3383,7 +3414,7 @@ var yyR2 = [...]int{ 2, 1, 1, 1, 1, 1, 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, - 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 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, @@ -3417,23 +3448,23 @@ 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, - 0, 0, 1, 1, + 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -246, -1, -3, -8, -9, -10, -11, -12, -13, + -1000, -247, -1, -3, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -32, -33, -34, -36, -37, -38, -39, -40, -6, -35, -20, -21, -41, -42, - -43, -4, -248, 6, 7, 8, -48, 10, 11, 31, + -43, -4, -249, 6, 7, 8, -48, 10, 11, 31, -23, -24, 146, -25, 147, -26, 149, 148, 182, 150, 175, 70, 199, 200, 202, 203, 204, 205, -49, 180, 181, 152, 35, 41, 32, 33, 80, 9, 293, 177, - 176, 26, -247, 397, -54, 5, -110, 16, -3, -44, - -251, -44, -44, -44, -44, -44, -44, -210, -212, 80, - 119, 80, 156, 100, 154, -128, -238, 160, 163, 164, - 285, 153, -30, -29, -28, -27, -31, 30, -238, 154, - 156, 259, -236, -233, 83, 84, 85, 154, 154, 155, - 156, -238, 154, -76, -168, -233, -162, 303, 168, 335, + 176, 26, -248, 397, -54, 5, -110, 16, -3, -44, + -252, -44, -44, -44, -44, -44, -44, -209, -211, 80, + 119, 80, 156, 100, 154, -128, -239, 160, 163, 164, + 285, 153, -30, -29, -28, -27, -31, 30, -239, 154, + 156, 259, -237, -234, 83, 84, 85, 154, 154, 155, + 156, -239, 154, -76, -167, -234, -161, 303, 168, 335, 336, 76, 199, 213, 207, 234, 226, 304, 337, 169, 224, 227, 272, 166, 338, 254, 262, 94, 202, 281, 339, 75, 47, 40, 178, 222, 218, 340, 312, 192, @@ -3454,22 +3485,22 @@ var yyChk = [...]int{ 208, 231, 201, 392, 189, 182, 388, 282, 252, 309, 194, 228, 225, 196, 389, 156, 190, 191, 390, 393, 268, 258, 269, 270, 259, 197, 306, 223, 253, 154, - 137, 227, 272, 146, 255, 256, 267, 268, 264, -151, - 265, 188, -179, 154, -147, 254, 258, 259, 197, -242, - -233, 266, 274, 273, 260, 270, 269, -168, 201, -173, - 206, -163, -233, -162, 204, -76, -47, 391, 150, -175, - -175, -175, -96, -61, -82, 103, -87, 30, 24, -86, + 137, 227, 272, 146, 255, 256, 267, 268, 264, -150, + 265, 188, -178, 154, -146, 254, 258, 259, 197, -243, + -234, 266, 274, 273, 260, 270, 269, -167, 201, -172, + 206, -162, -234, -161, 204, -76, -47, 391, 150, -174, + -174, -174, -96, -61, -82, 103, -87, 30, 24, -86, -83, -103, -100, -101, 137, 138, 140, 139, 141, 126, 127, 134, 104, 142, -91, -89, -90, -92, 87, 86, - 95, 88, 89, 90, 91, 96, 97, 98, -163, -168, - -98, -248, 64, 65, 294, 295, 296, 297, 302, 298, + 95, 88, 89, 90, 91, 96, 97, 98, -162, -167, + -98, -249, 64, 65, 294, 295, 296, 297, 302, 298, 106, 53, 284, 292, 291, 290, 288, 289, 286, 287, - 300, 301, 159, 285, 153, 132, 293, -233, -162, 40, - 257, 257, -5, -4, -248, 6, 21, 22, -114, 18, - 17, -249, 82, -50, -59, 59, 60, -60, 22, 36, - 63, 61, -45, -58, 128, -61, -168, -58, -146, 158, - -146, -146, -137, -178, 201, -140, 274, 273, -164, -138, - -163, -161, 272, 227, 271, 151, 310, 102, 23, 25, + 300, 301, 159, 285, 153, 132, 293, -234, -161, 40, + 257, 257, -5, -4, -249, 6, 21, 22, -114, 18, + 17, -250, 82, -50, -59, 59, 60, -60, 22, 36, + 63, 61, -45, -58, 128, -61, -167, -58, -145, 158, + -145, -145, -136, -177, 201, -139, 274, 273, -163, -137, + -162, -160, 272, 227, 271, 151, 310, 102, 23, 25, 249, 105, 137, 17, 106, 136, 294, 146, 68, 311, 286, 287, 284, 296, 297, 285, 255, 30, 11, 313, 26, 176, 22, 36, 130, 148, 109, 110, 179, 24, @@ -3481,125 +3512,125 @@ var yyChk = [...]int{ 328, 329, 330, 277, 331, 120, 149, 293, 65, 332, 153, 256, 6, 299, 31, 175, 63, 333, 154, 108, 300, 301, 157, 97, 5, 160, 33, 10, 70, 73, - 290, 291, 292, 53, 107, 13, 334, 278, 101, -211, - 119, -201, -204, -163, 170, -226, 166, -76, -218, -217, - -163, -76, 293, -155, 159, 155, -155, -27, -28, 227, + 290, 291, 292, 53, 107, 13, 334, 278, 101, -210, + 119, -200, -203, -162, 170, -227, 166, -76, -217, -216, + -162, -76, 293, -154, 159, 155, -154, -27, -28, 227, 136, -76, -76, 146, 148, 151, 72, -29, 194, -22, - -76, -154, 159, -233, -154, -154, -76, 143, -76, -233, - 31, -152, 119, 13, 285, -233, 188, 154, 189, 156, - -153, 119, -153, -153, -153, -206, 155, 34, 167, -176, - -248, -164, 195, 196, 195, -150, -149, 262, 263, 257, - 261, 13, 196, 257, 191, -152, -176, 157, -163, -46, - -163, 87, -7, -3, -11, -10, -12, 111, 81, 102, + -76, -153, 159, -234, -153, -153, -76, 143, -76, -234, + 31, -151, 119, 13, 285, -234, 188, 154, 189, 156, + -152, 119, -152, -152, -152, -205, 155, 34, 167, -175, + -249, -163, 195, 196, 195, -149, -148, 262, 263, 257, + 261, 13, 196, 257, 191, -151, -175, 157, -162, -46, + -162, 87, -7, -3, -11, -10, -12, 111, 81, 102, 100, 101, 118, -61, -84, 121, 103, 119, 120, 105, 123, 122, 133, 126, 127, 128, 129, 130, 131, 132, 124, 125, 136, 111, 112, 113, 114, 115, 116, 117, - -145, -248, -101, -248, 144, 145, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -248, 143, -2, -96, - -4, -248, -248, -248, -248, -248, -248, -248, -248, -106, - -61, -248, -252, -93, -248, -252, -93, -252, -93, -252, - -248, -252, -93, -252, -93, -252, -252, -93, -248, -248, - -248, -248, -248, -248, -248, -175, -243, -244, -79, -76, - -110, -3, -44, -130, 20, 32, -61, -111, -112, -61, - -110, 55, -56, -58, -60, 59, 60, 93, 12, -166, - -165, 23, -163, 87, 143, 12, -77, 27, -76, -63, - -64, -65, -66, -79, -102, -248, 12, -70, -71, -76, - -78, -168, 81, 201, -140, -178, -142, -141, 275, 277, - 111, -167, -163, 87, 30, 31, 82, 81, -76, -181, - -184, -186, -185, -187, -182, -183, 224, 225, 137, 228, + -144, -249, -101, -249, 144, 145, -87, -87, -87, -87, + -87, -87, -87, -87, -87, -87, -249, 143, -2, -96, + -4, -249, -249, -249, -249, -249, -249, -249, -249, -106, + -61, -249, -253, -93, -249, -253, -93, -253, -93, -253, + -249, -253, -93, -253, -93, -253, -253, -93, -249, -249, + -249, -249, -249, -249, -249, -174, -244, -245, -79, -76, + -110, -3, -44, -129, 20, 32, -61, -111, -112, -61, + -110, 55, -56, -58, -60, 59, 60, 93, 12, -165, + -164, 23, -162, 87, 143, 12, -77, 27, -76, -63, + -64, -65, -66, -79, -102, -249, 12, -70, -71, -76, + -78, -167, 81, 201, -139, -177, -141, -140, 275, 277, + 111, -166, -162, 87, 30, 31, 82, 81, -76, -180, + -183, -185, -184, -186, -181, -182, 224, 225, 137, 228, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 31, 178, 220, 221, 222, 223, 240, 241, 242, 243, 244, 245, 246, 247, 207, 226, 304, 208, 209, 210, - 211, 212, 213, 215, 216, 217, 218, 219, -233, 80, - 82, 81, -188, 80, -176, 156, -76, 103, -233, -233, - 31, -209, 111, -158, 151, 148, 149, -229, 147, 249, - 227, 94, 30, 16, 294, 184, 309, -233, 185, -176, + 211, 212, 213, 215, 216, 217, 218, 219, -234, 80, + 82, 81, -187, 80, -175, 156, -76, 103, -234, -234, + 31, -208, 111, -157, 151, 148, 149, -230, 147, 249, + 227, 94, 30, 16, 294, 184, 309, -234, 185, -175, 190, 190, 154, 154, 198, -76, 40, 81, 157, -70, - 24, 72, -76, -233, -169, -168, -161, -176, -152, 87, - -61, -176, -176, -176, -76, -176, -176, 87, -207, 12, - 121, -176, -176, -148, 12, 121, -207, -148, -61, -153, - 72, -174, 204, 238, 392, 393, 394, -61, -61, -61, + 24, 72, -76, -234, -168, -167, -160, -175, -151, 87, + -61, -175, -175, -175, -76, -175, -175, 87, -206, 12, + 121, -175, -175, -147, 12, 121, -206, -147, -61, -152, + 72, -173, 204, 238, 392, 393, 394, -61, -61, -61, -61, -94, 96, 103, 97, 98, -87, -95, -98, -101, 92, 121, 119, 120, 105, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -177, -233, 87, -233, -86, -86, -163, -57, 22, 36, - -56, -164, -169, -161, -54, -249, -249, -110, -56, -56, + -176, -234, 87, -234, -86, -86, -162, -57, 22, 36, + -56, -163, -168, -160, -54, -250, -250, -110, -56, -56, -61, -61, -103, 87, -56, -103, 87, -56, -56, -53, - 22, 36, -104, -105, 107, -103, -163, -168, -249, -87, - -163, -163, -56, -57, -57, -56, -56, 81, -245, 277, - 278, 396, -171, 184, -170, 23, -168, 87, -114, -249, + 22, 36, -104, -105, 107, -103, -162, -167, -250, -87, + -162, -162, -56, -57, -57, -56, -56, 81, -246, 277, + 278, 396, -170, 184, -169, 23, -167, 87, -114, -250, -115, 27, 10, 121, 81, 19, 81, -113, 25, 26, - -114, -88, -163, 88, 91, -62, 81, 12, -60, -76, - -165, 128, -169, -76, -133, 184, -76, 31, 81, -72, + -114, -88, -162, 88, 91, -62, 81, 12, -60, -76, + -164, 128, -168, -76, -132, 184, -76, 31, 81, -72, -74, -73, -75, 62, 66, 68, 63, 64, 65, 69, - -172, 23, -63, -3, -248, -76, -70, -250, 81, 12, - 73, -250, 81, 143, -140, -142, 81, 276, 278, 279, - 72, 99, -61, -193, 136, -213, -214, -215, -164, 87, - 88, -201, -202, -203, -216, 170, -225, 161, 163, 164, - 160, -205, 171, -226, 155, 29, 82, -156, 96, 103, - -197, 252, -188, -188, -188, -188, -188, -192, 227, -192, - -192, -192, 80, 80, -188, -188, -188, -188, -194, 80, - -194, -194, -195, 80, -195, -226, 166, -61, -223, -222, - -219, 73, 165, 94, 306, -217, -113, 88, -76, 24, - -129, 73, -209, -233, 87, -175, -237, 166, 162, 170, - 171, 164, 83, 84, 85, 155, 29, 161, 163, 184, - 160, -237, -159, -160, 157, 23, 155, 29, 184, -76, - -76, -76, -76, -76, 151, 148, 192, -76, -76, -76, - -176, -76, -152, -168, -168, -76, -152, -76, -163, 96, - 97, 98, -95, -87, -87, -87, -55, 179, 102, -249, - -249, -56, -56, -248, 143, -5, -114, -249, -249, 81, - 73, 23, 12, 12, -249, 12, 12, -249, -249, -56, - -107, -105, 109, -61, -249, 143, -249, 81, 81, -249, - -249, -249, -249, -249, -244, 395, 278, -80, 70, 158, - 71, -248, -170, -130, 38, 46, 57, -61, -61, -112, - -130, -144, 20, 12, 53, 53, -81, 13, -58, -63, - -60, 143, -81, -85, 31, 53, -3, -248, -248, -136, - -139, -103, -64, -65, -65, -64, -65, 62, 62, 62, - 67, 62, 67, 62, -73, -168, -249, -249, -3, -133, - 73, -63, -76, -63, -78, -168, 128, -141, -143, 280, - 277, 283, -233, 87, 81, -215, 111, -204, 80, -233, - 29, -205, -205, -205, -208, -233, -208, 29, -190, 30, - 96, -198, 253, -192, -192, -193, 31, -193, -193, -193, - -200, 87, -200, 88, 88, 82, -224, -220, -221, 32, - 76, -219, -233, -209, 87, 37, 82, -176, 72, -163, - -233, 87, -175, -175, -76, -175, -163, -235, 73, 190, - 249, 190, 193, 157, -176, -148, -148, -55, 102, -87, - -87, -249, -249, -57, -164, -110, -130, -180, 137, 224, - 178, 222, 218, 238, 229, 251, 220, 252, -177, -180, - -87, -87, -87, -87, 303, -110, 110, -61, 108, -164, - -87, -87, 155, 155, 155, -134, -163, 39, 87, 87, - 58, -76, -108, 14, -61, 128, -114, -135, 72, -136, - -97, -99, -98, -248, -131, -249, -163, -134, -81, 81, + -171, 23, -63, -3, -249, -76, -70, -251, 81, 12, + 73, -251, 81, 143, -139, -141, 81, 276, 278, 279, + 72, 99, -61, -192, 136, -212, -213, -214, -163, 87, + 88, -200, -201, -202, -215, 170, -226, 161, 163, 164, + 160, -204, 171, -227, 155, 29, 82, -155, 96, 103, + -196, 252, -187, -187, -187, -187, -187, -191, 227, -191, + -191, -191, 80, 80, -187, -187, -187, -187, -193, 80, + -193, -193, -194, 80, -194, -227, 166, -61, -223, -222, + -218, -221, 165, 94, 306, 73, -216, -113, 88, -76, + 24, -225, -221, -208, -234, 87, -174, -238, 166, 162, + 170, 171, 164, 83, 84, 85, 155, 29, 161, 163, + 184, 160, -238, -158, -159, 157, 23, 155, 29, 184, + -76, -76, -76, -76, -76, 151, 148, 192, -76, -76, + -76, -175, -76, -151, -167, -167, -76, -151, -76, -162, + 96, 97, 98, -95, -87, -87, -87, -55, 179, 102, + -250, -250, -56, -56, -249, 143, -5, -114, -250, -250, + 81, 73, 23, 12, 12, -250, 12, 12, -250, -250, + -56, -107, -105, 109, -61, -250, 143, -250, 81, 81, + -250, -250, -250, -250, -250, -245, 395, 278, -80, 70, + 158, 71, -249, -169, -129, 38, 46, 57, -61, -61, + -112, -129, -143, 20, 12, 53, 53, -81, 13, -58, + -63, -60, 143, -81, -85, 31, 53, -3, -249, -249, + -135, -138, -103, -64, -65, -65, -64, -65, 62, 62, + 62, 67, 62, 67, 62, -73, -167, -250, -250, -3, + -132, 73, -63, -76, -63, -78, -167, 128, -140, -142, + 280, 277, 283, -234, 87, 81, -214, 111, -203, 80, + -234, 29, -204, -204, -204, -207, -234, -207, 29, -189, + 30, 96, -197, 253, -191, -191, -192, 31, -192, -192, + -192, -199, 87, -199, 88, 88, 82, -224, -219, -220, + 32, 76, -218, -208, 87, 37, -162, 82, -175, 72, + -234, 87, -174, -174, -76, -174, -162, -236, 73, 190, + 249, 190, 193, 157, -175, -147, -147, -55, 102, -87, + -87, -250, -250, -57, -163, -110, -129, -179, 137, 224, + 178, 222, 218, 238, 229, 251, 220, 252, -176, -179, + -87, -87, -87, -87, 303, -110, 110, -61, 108, -163, + -87, -87, 155, 155, 155, -133, -162, 39, 87, 87, + 58, -76, -108, 14, -61, 128, -114, -134, 72, -135, + -97, -99, -98, -249, -130, -250, -162, -133, -81, 81, 111, -68, -67, 72, 73, -69, 72, -67, 62, 62, - -249, -81, -63, -81, -81, 143, 277, 281, 282, -214, - -215, -218, -225, 171, -208, -208, -208, 80, -191, 72, - -87, -193, -193, -233, 137, 82, 81, 82, 81, 82, - 81, -157, 341, 103, -221, -220, -209, -209, 88, 87, - -76, 27, -232, 306, -234, -233, -163, -163, -163, -76, - -152, -152, -87, -249, -114, -249, -188, -188, -188, -195, - -188, 212, -188, 212, -249, -249, 20, 20, 20, 20, - -248, -51, 299, -61, 81, 81, -248, -248, -248, -249, - 81, 87, -192, -109, 15, 17, 28, -135, 81, -249, - -249, 81, 53, 143, -249, -110, -139, -61, -61, 80, - -61, -110, -81, 82, -132, -163, -196, 249, 10, -192, - 87, -192, 88, 88, 341, 30, 77, 78, 79, 30, - 74, 75, -248, -231, -230, -164, 80, 73, -130, -192, - -233, -87, -87, -87, -87, -87, -114, 87, -87, -87, - -132, -249, -132, -132, -171, -163, -192, -117, -122, -150, - -61, -96, 29, -99, 53, -3, -163, -97, -163, -114, - -132, -114, -223, 82, 81, -199, 161, 29, 160, -90, - -193, -193, 82, 82, -227, -228, 184, 81, 111, -132, - -76, -249, -249, -249, -249, -52, 121, 306, -249, -249, - -249, -249, -249, -249, -80, -120, 391, -123, 42, -124, - 43, 10, -97, 143, 82, 173, -163, -189, 94, 29, - 29, -249, 81, -163, -230, -215, 82, -249, 304, 69, + -250, -81, -63, -81, -81, 143, 277, 281, 282, -213, + -214, -217, -226, 171, -207, -207, -207, 80, -190, 72, + -87, -192, -192, -234, 137, 82, 81, 82, 81, 82, + 81, -156, 341, 103, -220, -219, -208, -208, 88, -234, + -76, 27, -233, 306, -235, -234, -162, -162, -162, -76, + -151, -151, -87, -250, -114, -250, -187, -187, -187, -194, + -187, 212, -187, 212, -250, -250, 20, 20, 20, 20, + -249, -51, 299, -61, 81, 81, -249, -249, -249, -250, + 81, 87, -191, -109, 15, 17, 28, -134, 81, -250, + -250, 81, 53, 143, -250, -110, -138, -61, -61, 80, + -61, -110, -81, 82, -131, -162, -195, 249, 10, -191, + 87, -191, 88, 88, 341, 30, 77, 78, 79, 30, + 74, 75, -249, -232, -231, -163, 80, 73, -129, -191, + -234, -87, -87, -87, -87, -87, -114, 87, -87, -87, + -131, -250, -131, -131, -170, -162, -191, -117, -122, -149, + -61, -96, 29, -99, 53, -3, -162, -97, -162, -114, + -131, -114, -223, 82, 81, -198, 161, 29, 160, -90, + -192, -192, 82, 82, -228, -229, 184, 81, 111, -131, + -76, -250, -250, -250, -250, -52, 121, 306, -250, -250, + -250, -250, -250, -250, -80, -120, 391, -123, 42, -124, + 43, 10, -97, 143, 82, 173, -162, -188, 94, 29, + 29, -250, 81, -162, -231, -214, 82, -250, 304, 69, 307, -117, 47, 230, -125, 51, -126, -121, 52, 17, - -136, -163, -76, 87, -228, 53, -235, 58, 305, 308, + -135, -162, -76, 87, -229, 53, -236, 58, 305, 308, -118, 49, -116, 48, -116, -124, 17, -127, 44, 45, - 87, 80, 186, -232, 58, -119, 50, 72, 99, 87, - 17, 17, -132, 187, 306, 72, 99, 87, 87, 82, - -248, 307, -240, -241, 72, -87, 183, 308, -241, 72, - 11, 10, -249, -249, -239, 174, 169, 172, 31, -239, + 87, 80, 186, -233, 58, -119, 50, 72, 99, 87, + 17, 17, -131, 187, 306, 72, 99, 87, 87, 82, + -249, 307, -241, -242, 72, -87, 183, 308, -242, 72, + 11, 10, -250, -250, -240, 174, 169, 172, 31, -240, 168, 30, 96, } @@ -3609,69 +3640,69 @@ var yyDef = [...]int{ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 665, 0, 406, 406, 406, 406, 406, 406, 406, 0, 0, 778, -2, 0, 36, 0, 0, 0, 0, - -2, 364, 365, 0, 367, -2, 0, 0, 376, 1120, - 1120, 1120, 0, 0, 0, 0, 1118, 53, 54, 382, + -2, 364, 365, 0, 367, -2, 0, 0, 376, 1121, + 1121, 1121, 0, 0, 0, 0, 1119, 53, 54, 382, 383, 384, 1, 3, 0, 410, 673, 0, 0, -2, 408, 0, 0, 761, 761, 761, 0, 82, 83, 0, 0, 0, 0, 0, 759, 0, 759, 779, 780, 781, 100, 101, 87, -2, 105, 106, 0, 110, 99, 0, 0, 0, 109, 37, 33, 34, 35, 0, 757, 0, - 757, 757, 0, 309, 488, 788, 789, 916, 917, 918, - 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, - 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, - 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, - 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, - 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, - 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, - 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, - 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, - 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, - 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, - 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, - 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 0, + 757, 757, 0, 309, 488, 789, 790, 917, 918, 919, + 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, + 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, + 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, + 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, + 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, + 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, + 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, + 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, + 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, + 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, + 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 0, 0, 0, 355, 0, 358, 358, 358, 358, 324, 0, - 326, 1121, 0, 0, 0, 333, 0, 0, 339, 355, - 1121, 347, 361, 362, 349, 344, 345, 363, 366, 0, - 371, 374, 784, 785, 0, 389, 0, 966, 381, 394, + 326, 1122, 0, 0, 0, 333, 0, 0, 339, 355, + 1122, 347, 361, 362, 349, 344, 345, 363, 366, 0, + 371, 374, 785, 786, 0, 389, 0, 967, 381, 394, 395, 405, 38, 539, 498, 0, 504, 506, 0, 541, 542, 543, 544, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 571, 572, 573, 574, 650, 651, 652, 653, 654, 655, 656, 657, 508, 509, 647, 0, 738, 0, 0, 0, 0, 0, 0, 0, 0, 0, 638, 0, 608, 608, 608, 608, 608, 608, 608, 608, - 0, 0, 0, 0, 0, 0, 0, -2, -2, 1120, + 0, 0, 0, 0, 0, 0, 0, -2, -2, 1121, 0, 404, 665, 49, 0, 406, 411, 412, 689, 0, - 0, 665, 1119, 0, 0, -2, -2, 422, 428, 429, + 0, 665, 1120, 0, 0, -2, -2, 422, 428, 429, 430, 431, 407, 0, 434, 438, 0, 0, 0, 762, - 0, 0, 68, 0, 1091, 742, -2, -2, 0, 0, - 786, 787, -2, 930, -2, 792, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, - 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, - 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, - 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, - 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, - 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, - 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, - 887, 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, 0, - 0, 117, 118, 0, 0, 239, 932, 115, 0, 233, - 174, 1121, 0, 0, 0, 0, 0, 107, 108, 0, - 216, 0, 1121, 0, 0, 0, 0, -2, 0, 301, - 0, 0, 0, 0, 0, 0, 308, 0, 310, 1121, - 355, 313, 0, 0, 1121, 1121, 1121, 0, 1121, 1121, + 0, 0, 68, 0, 1092, 742, -2, -2, 0, 0, + 787, 788, -2, 931, -2, 793, 794, 795, 796, 797, + 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, + 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, + 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, + 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, + 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, + 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, + 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, + 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, + 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, + 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, 0, + 0, 117, 118, 0, 0, 239, 933, 115, 0, 233, + 174, 1122, 0, 0, 0, 0, 0, 107, 108, 0, + 216, 0, 1122, 0, 0, 0, 0, -2, 0, 301, + 0, 0, 0, 0, 0, 0, 308, 0, 310, 1122, + 355, 313, 0, 0, 1122, 1122, 1122, 0, 1122, 1122, 320, 0, 321, 322, 323, 0, 224, 225, 226, 327, - 1122, 1123, 1121, 1121, 352, 0, 352, 350, 351, 342, + 1123, 1124, 1122, 1122, 352, 0, 352, 350, 351, 342, 343, 0, 358, 336, 337, 340, 341, 372, 375, 392, 390, 391, 393, 385, 386, 387, 388, 0, 0, 0, 0, 0, 0, 502, 0, 0, 0, 0, 0, 0, @@ -3687,7 +3718,7 @@ var yyDef = [...]int{ 673, 0, 443, 432, 423, 426, 427, 409, 0, 435, 439, 0, 441, 442, 0, 0, 66, 0, 487, 0, 445, 447, 448, 449, 469, 0, 0, 0, 0, 62, - 64, 488, 0, 1091, 748, 0, 70, 71, 0, 0, + 64, 488, 0, 1092, 748, 0, 70, 71, 0, 0, 0, 197, 752, 753, 754, 750, 256, 0, 0, 185, 181, 125, 126, 127, 174, 129, 174, 174, 174, 174, 194, 194, 194, 194, 157, 158, 159, 160, 161, 0, @@ -3695,10 +3726,10 @@ var yyDef = [...]int{ 168, 169, 170, 171, 130, 131, 132, 133, 134, 135, 136, 137, 138, 176, 176, 176, 178, 178, 0, 0, 208, 0, 670, 0, 85, 0, 96, 0, 782, 98, - 216, 0, 217, 1120, 0, 0, 773, 271, 763, 764, + 216, 0, 217, 1121, 0, 0, 773, 271, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 0, 270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 304, - 758, 0, 1121, 307, 489, 790, 791, 311, 312, 356, + 758, 0, 1122, 307, 489, 791, 792, 311, 312, 356, 357, 314, 315, 316, 317, 318, 319, 359, 0, 227, 228, 328, 332, 355, 0, 0, 0, 355, 334, 335, 0, 0, 373, 377, 378, 379, 380, 540, 499, 500, @@ -3710,7 +3741,7 @@ var yyDef = [...]int{ 0, 0, 543, 650, 0, 543, 650, 0, 0, 0, 417, 418, 645, 642, 0, 0, 647, 0, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399, 400, - 402, 0, 491, 1032, 472, 0, 474, 475, 689, 50, + 402, 0, 491, 1033, 472, 0, 474, 475, 689, 50, 40, 0, 690, 0, 0, 0, 0, 669, 671, 672, 689, 0, 658, 0, 0, 496, 0, 0, 424, 46, 440, 436, 0, 496, 0, 0, 486, 0, 0, 0, @@ -3718,33 +3749,33 @@ var yyDef = [...]int{ 0, 470, 0, 0, 0, -2, 0, 0, 0, 60, 61, 0, 0, 0, 743, 69, 0, 0, 74, 75, 744, 745, 746, 747, 0, 102, 257, 259, 262, 263, - 264, 119, 121, 122, 0, 0, 237, 1042, 1075, 967, - 231, 231, 965, 244, 229, 230, 116, 188, 186, 0, + 264, 119, 121, 122, 0, 0, 237, 1043, 1076, 968, + 231, 231, 966, 244, 229, 230, 116, 188, 186, 0, 183, 182, 128, 194, 194, 151, 152, 197, 0, 197, 197, 197, 0, 0, 145, 146, 147, 148, 139, 0, 140, 141, 142, 0, 143, 238, 0, 0, 677, 209, - 210, 0, 216, 0, 0, 234, 235, 0, 1121, 760, - 0, 0, 0, 113, 114, 265, 1120, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 1120, 0, 1120, 774, 775, 776, 777, 0, 88, - 275, 277, 276, 280, 0, 0, 0, 0, 302, 1121, - 306, 352, 329, 353, 354, 352, 331, 338, 369, 521, - 523, 525, 512, 533, 516, 0, 513, 0, 0, 507, - 575, 0, 0, 419, 0, 665, 689, 579, 580, 0, - 0, 0, 0, 0, 616, 0, 0, 617, 0, 665, - 0, 643, 0, 0, 591, 0, 610, 0, 0, 611, - 612, 613, 614, 615, 398, 401, 403, 453, 0, 0, - 0, 0, 473, 42, 0, 0, 0, 675, 676, 668, - 41, 0, 755, 756, 659, 660, 661, 0, 433, 444, - 425, 0, 673, 731, 0, 0, 723, 0, 0, 496, - 739, 0, 446, 465, 467, 0, 462, 477, 478, 480, - 0, 482, 0, 484, 485, 450, 451, 452, 0, 496, - 0, 496, 63, 496, 65, 0, 490, 72, 73, 0, - 0, 79, 198, 199, 0, 260, 0, 120, 0, 0, - 218, 231, 231, 231, 222, 232, 223, 0, 190, 0, - 187, 124, 184, 197, 197, 153, 0, 154, 155, 156, - 0, 172, 0, 0, 0, 253, 84, 681, 680, 216, - 216, 211, 212, 0, 214, 0, 175, 86, 0, 783, + 210, 212, 216, 0, 0, 0, 234, 235, 0, 1122, + 760, 0, 783, 0, 113, 114, 265, 1121, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 1121, 0, 1121, 774, 775, 776, 777, 0, + 88, 275, 277, 276, 280, 0, 0, 0, 0, 302, + 1122, 306, 352, 329, 353, 354, 352, 331, 338, 369, + 521, 523, 525, 512, 533, 516, 0, 513, 0, 0, + 507, 575, 0, 0, 419, 0, 665, 689, 579, 580, + 0, 0, 0, 0, 0, 616, 0, 0, 617, 0, + 665, 0, 643, 0, 0, 591, 0, 610, 0, 0, + 611, 612, 613, 614, 615, 398, 401, 403, 453, 0, + 0, 0, 0, 473, 42, 0, 0, 0, 675, 676, + 668, 41, 0, 755, 756, 659, 660, 661, 0, 433, + 444, 425, 0, 673, 731, 0, 0, 723, 0, 0, + 496, 739, 0, 446, 465, 467, 0, 462, 477, 478, + 480, 0, 482, 0, 484, 485, 450, 451, 452, 0, + 496, 0, 496, 63, 496, 65, 0, 490, 72, 73, + 0, 0, 79, 198, 199, 0, 260, 0, 120, 0, + 0, 218, 231, 231, 231, 222, 232, 223, 0, 190, + 0, 187, 124, 184, 197, 197, 153, 0, 154, 155, + 156, 0, 172, 0, 0, 0, 253, 84, 681, 680, + 216, 216, 211, 0, 214, 0, 784, 175, 86, 0, 111, 112, 266, 267, 268, 269, 0, 91, 0, 0, 0, 0, 273, 0, 305, 355, 355, 514, 0, 534, 517, 576, 577, 0, 649, 673, 44, 0, 174, 174, @@ -4561,25 +4592,26 @@ yydefault: //line sql.y:726 { yyDollar[1].createIndex.Columns = yyDollar[3].indexColumns - yyDollar[1].createIndex.Options = append(yyDollar[5].indexOptions, yyDollar[6].indexOptions...) + yyDollar[1].createIndex.Options = append(yyDollar[1].createIndex.Options, yyDollar[5].indexOptions...) + yyDollar[1].createIndex.Options = append(yyDollar[1].createIndex.Options, yyDollar[6].indexOptions...) yyDollar[1].createIndex.FullyParsed = true yyVAL.statement = yyDollar[1].createIndex } case 85: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:733 +//line sql.y:734 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 86: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:737 +//line sql.y:738 { yyVAL.statement = &DDL{Action: CreateDDLAction, Table: yyDollar[5].tableName.ToViewName()} } case 87: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:741 +//line sql.y:742 { yyDollar[1].createDatabase.FullyParsed = true yyDollar[1].createDatabase.CreateOptions = yyDollar[2].collateAndCharsets @@ -4587,215 +4619,215 @@ yydefault: } case 88: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:748 +//line sql.y:749 { yyVAL.colIdent = NewColIdent("") } case 89: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:752 +//line sql.y:753 { yyVAL.colIdent = yyDollar[2].colIdent } case 90: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:758 +//line sql.y:759 { yyVAL.colIdent = yyDollar[1].colIdent } case 91: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:763 +//line sql.y:764 { var v []VindexParam yyVAL.vindexParams = v } case 92: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:768 +//line sql.y:769 { yyVAL.vindexParams = yyDollar[2].vindexParams } case 93: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:774 +//line sql.y:775 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } case 94: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:779 +//line sql.y:780 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } case 95: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:785 +//line sql.y:786 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } case 96: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:791 +//line sql.y:792 { yyVAL.createTable = &CreateTable{Table: yyDollar[4].tableName, IfNotExists: yyDollar[3].boolean} setDDL(yylex, yyVAL.createTable) } case 97: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:798 +//line sql.y:799 { - yyVAL.createIndex = &CreateIndex{Constraint: yyDollar[2].str, Name: yyDollar[4].colIdent, IndexType: yyDollar[5].str, Table: yyDollar[7].tableName} + yyVAL.createIndex = &CreateIndex{Constraint: yyDollar[2].str, Name: yyDollar[4].colIdent, Options: yyDollar[5].indexOptions, Table: yyDollar[7].tableName} setDDL(yylex, yyVAL.createIndex) } case 98: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:805 +//line sql.y:806 { yyVAL.createDatabase = &CreateDatabase{DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean} setDDL(yylex, yyVAL.createDatabase) } case 99: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:812 +//line sql.y:813 { yyVAL.alterDatabase = &AlterDatabase{} setDDL(yylex, yyVAL.alterDatabase) } case 102: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:823 +//line sql.y:824 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } case 103: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:829 +//line sql.y:830 { yyVAL.collateAndCharsets = nil } case 104: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:833 +//line sql.y:834 { yyVAL.collateAndCharsets = yyDollar[1].collateAndCharsets } case 105: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:839 +//line sql.y:840 { yyVAL.collateAndCharsets = []CollateAndCharset{yyDollar[1].collateAndCharset} } case 106: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:843 +//line sql.y:844 { yyVAL.collateAndCharsets = []CollateAndCharset{yyDollar[1].collateAndCharset} } case 107: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:847 +//line sql.y:848 { yyVAL.collateAndCharsets = append(yyDollar[1].collateAndCharsets, yyDollar[2].collateAndCharset) } case 108: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:851 +//line sql.y:852 { yyVAL.collateAndCharsets = append(yyDollar[1].collateAndCharsets, yyDollar[2].collateAndCharset) } case 109: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:856 +//line sql.y:857 { yyVAL.boolean = false } case 110: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:860 +//line sql.y:861 { yyVAL.boolean = true } case 111: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:866 +//line sql.y:867 { yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: (yyDollar[5].colIdent.String()), IsDefault: yyDollar[1].boolean} } case 112: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:870 +//line sql.y:871 { yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: ("'" + string(yyDollar[5].bytes) + "'"), IsDefault: yyDollar[1].boolean} } case 113: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:876 +//line sql.y:877 { yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: (yyDollar[4].colIdent.String()), IsDefault: yyDollar[1].boolean} } case 114: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:880 +//line sql.y:881 { yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: ("'" + string(yyDollar[4].bytes) + "'"), IsDefault: yyDollar[1].boolean} } case 115: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:887 +//line sql.y:888 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} } case 116: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:891 +//line sql.y:892 { yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} } case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:897 +//line sql.y:898 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } case 118: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:902 +//line sql.y:903 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddConstraint(yyDollar[1].constraintDefinition) } case 119: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:907 +//line sql.y:908 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } case 120: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:911 +//line sql.y:912 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) yyVAL.TableSpec.AddConstraint(yyDollar[4].constraintDefinition) } case 121: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:916 +//line sql.y:917 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } case 122: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:920 +//line sql.y:921 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 123: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:926 +//line sql.y:927 { yyDollar[2].columnType.NotNull = yyDollar[3].boolean yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -4807,7 +4839,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:937 +//line sql.y:938 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolean @@ -4815,74 +4847,74 @@ yydefault: } case 128: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:948 +//line sql.y:949 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].literal } case 129: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:953 +//line sql.y:954 { yyVAL.columnType = yyDollar[1].columnType } case 130: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:959 +//line sql.y:960 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 131: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:963 +//line sql.y:964 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 132: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:967 +//line sql.y:968 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 133: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:971 +//line sql.y:972 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 134: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:975 +//line sql.y:976 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 135: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:979 +//line sql.y:980 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 136: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:983 +//line sql.y:984 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 137: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:987 +//line sql.y:988 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 138: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:991 +//line sql.y:992 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 139: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:997 +//line sql.y:998 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4890,7 +4922,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1003 +//line sql.y:1004 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4898,7 +4930,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1009 +//line sql.y:1010 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4906,7 +4938,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1015 +//line sql.y:1016 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4914,7 +4946,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1021 +//line sql.y:1022 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -4922,206 +4954,206 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1029 +//line sql.y:1030 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 145: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1033 +//line sql.y:1034 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 146: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1037 +//line sql.y:1038 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 147: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1041 +//line sql.y:1042 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 148: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1045 +//line sql.y:1046 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 149: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1051 +//line sql.y:1052 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 150: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1055 +//line sql.y:1056 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 151: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1059 +//line sql.y:1060 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 152: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1063 +//line sql.y:1064 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 153: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1067 +//line sql.y:1068 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 154: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1071 +//line sql.y:1072 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 155: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1075 +//line sql.y:1076 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 156: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1079 +//line sql.y:1080 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 157: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1083 +//line sql.y:1084 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 158: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1087 +//line sql.y:1088 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 159: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1091 +//line sql.y:1092 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 160: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1095 +//line sql.y:1096 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 161: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1099 +//line sql.y:1100 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 162: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1103 +//line sql.y:1104 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 163: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1108 +//line sql.y:1109 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 164: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1114 +//line sql.y:1115 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 165: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1118 +//line sql.y:1119 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 166: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1122 +//line sql.y:1123 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 167: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1126 +//line sql.y:1127 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 168: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1130 +//line sql.y:1131 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 169: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1134 +//line sql.y:1135 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 170: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1138 +//line sql.y:1139 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 171: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1142 +//line sql.y:1143 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 172: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1148 +//line sql.y:1149 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } case 173: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1153 +//line sql.y:1154 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } case 174: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1158 +//line sql.y:1159 { yyVAL.literal = nil } case 175: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1162 +//line sql.y:1163 { yyVAL.literal = NewIntLiteral(yyDollar[2].bytes) } case 176: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1167 +//line sql.y:1168 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 177: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1171 +//line sql.y:1172 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -5130,13 +5162,13 @@ yydefault: } case 178: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1179 +//line sql.y:1180 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 179: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1183 +//line sql.y:1184 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -5144,7 +5176,7 @@ yydefault: } case 180: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1189 +//line sql.y:1190 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntLiteral(yyDollar[2].bytes), @@ -5153,556 +5185,556 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1197 +//line sql.y:1198 { yyVAL.boolean = false } case 182: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1201 +//line sql.y:1202 { yyVAL.boolean = true } case 183: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1206 +//line sql.y:1207 { yyVAL.boolean = false } case 184: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1210 +//line sql.y:1211 { yyVAL.boolean = true } case 185: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1216 +//line sql.y:1217 { yyVAL.boolean = false } case 186: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1220 +//line sql.y:1221 { yyVAL.boolean = false } case 187: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1224 +//line sql.y:1225 { yyVAL.boolean = true } case 188: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1229 +//line sql.y:1230 { yyVAL.optVal = nil } case 189: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1233 +//line sql.y:1234 { yyVAL.optVal = yyDollar[2].expr } case 190: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1238 +//line sql.y:1239 { yyVAL.optVal = nil } case 191: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1242 +//line sql.y:1243 { yyVAL.optVal = yyDollar[3].expr } case 192: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1247 +//line sql.y:1248 { yyVAL.boolean = false } case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1251 +//line sql.y:1252 { yyVAL.boolean = true } case 194: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1256 +//line sql.y:1257 { yyVAL.str = "" } case 195: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1260 +//line sql.y:1261 { yyVAL.str = string(yyDollar[3].colIdent.String()) } case 196: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1264 +//line sql.y:1265 { yyVAL.str = string(yyDollar[3].bytes) } case 197: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1269 +//line sql.y:1270 { yyVAL.str = "" } case 198: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1273 +//line sql.y:1274 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 199: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1277 +//line sql.y:1278 { yyVAL.str = string(yyDollar[2].bytes) } case 200: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1282 +//line sql.y:1283 { yyVAL.colKeyOpt = colKeyNone } case 201: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1286 +//line sql.y:1287 { yyVAL.colKeyOpt = colKeyPrimary } case 202: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1290 +//line sql.y:1291 { yyVAL.colKeyOpt = colKey } case 203: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1294 +//line sql.y:1295 { yyVAL.colKeyOpt = colKeyUniqueKey } case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1298 +//line sql.y:1299 { yyVAL.colKeyOpt = colKeyUnique } case 205: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1303 +//line sql.y:1304 { yyVAL.literal = nil } case 206: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1307 +//line sql.y:1308 { yyVAL.literal = NewStrLiteral(yyDollar[2].bytes) } case 207: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1313 +//line sql.y:1314 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } case 208: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1318 +//line sql.y:1319 { yyVAL.indexOptions = nil } case 209: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1322 +//line sql.y:1323 { yyVAL.indexOptions = yyDollar[1].indexOptions } case 210: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1328 +//line sql.y:1329 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 211: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1332 +//line sql.y:1333 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } case 212: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1338 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1339 { - yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} + yyVAL.indexOption = yyDollar[1].indexOption } case 213: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1342 +//line sql.y:1343 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)} } case 214: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1347 +//line sql.y:1348 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)} } case 215: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1351 +//line sql.y:1352 { - yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Value: NewStrLiteral(yyDollar[3].bytes)} + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), String: yyDollar[3].colIdent.String()} } case 216: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1357 +//line sql.y:1358 { yyVAL.str = "" } case 217: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1361 +//line sql.y:1362 { yyVAL.str = string(yyDollar[1].bytes) } case 218: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1367 +//line sql.y:1368 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 219: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1371 +//line sql.y:1372 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } case 220: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1375 +//line sql.y:1376 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Fulltext: true, Unique: false} } case 221: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1379 +//line sql.y:1380 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } case 222: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1383 +//line sql.y:1384 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } case 223: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1387 +//line sql.y:1388 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } case 224: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1393 +//line sql.y:1394 { yyVAL.str = string(yyDollar[1].bytes) } case 225: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1397 +//line sql.y:1398 { yyVAL.str = string(yyDollar[1].bytes) } case 226: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1401 +//line sql.y:1402 { yyVAL.str = string(yyDollar[1].bytes) } case 227: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1408 +//line sql.y:1409 { yyVAL.str = string(yyDollar[1].bytes) } case 228: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1412 +//line sql.y:1413 { yyVAL.str = string(yyDollar[1].bytes) } case 229: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1418 +//line sql.y:1419 { yyVAL.str = string(yyDollar[1].bytes) } case 230: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1422 +//line sql.y:1423 { yyVAL.str = string(yyDollar[1].bytes) } case 231: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1427 +//line sql.y:1428 { yyVAL.str = "" } case 232: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1431 +//line sql.y:1432 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 233: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1437 +//line sql.y:1438 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 234: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1441 +//line sql.y:1442 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } case 235: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1447 +//line sql.y:1448 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal, Direction: yyDollar[3].orderDirection} } case 236: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1453 +//line sql.y:1454 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 237: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1457 +//line sql.y:1458 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 238: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1463 +//line sql.y:1464 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } case 239: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1467 +//line sql.y:1468 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 240: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1473 +//line sql.y:1474 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } case 241: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1477 +//line sql.y:1478 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } case 242: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1481 +//line sql.y:1482 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } case 243: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1485 +//line sql.y:1486 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } case 244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1489 +//line sql.y:1490 { yyVAL.constraintInfo = yyDollar[1].constraintInfo } case 245: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1495 +//line sql.y:1496 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } case 246: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1501 +//line sql.y:1502 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 247: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1507 +//line sql.y:1508 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 248: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1513 +//line sql.y:1514 { yyVAL.ReferenceAction = Restrict } case 249: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1517 +//line sql.y:1518 { yyVAL.ReferenceAction = Cascade } case 250: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1521 +//line sql.y:1522 { yyVAL.ReferenceAction = NoAction } case 251: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1525 +//line sql.y:1526 { yyVAL.ReferenceAction = SetDefault } case 252: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1529 +//line sql.y:1530 { yyVAL.ReferenceAction = SetNull } case 253: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1534 +//line sql.y:1535 { yyVAL.boolean = true } case 254: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1538 +//line sql.y:1539 { yyVAL.boolean = true } case 255: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1542 +//line sql.y:1543 { yyVAL.boolean = false } case 256: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1547 +//line sql.y:1548 { yyVAL.str = "" } case 257: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1551 +//line sql.y:1552 { yyVAL.str = " " + string(yyDollar[1].str) } case 258: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1555 +//line sql.y:1556 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } case 259: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1563 +//line sql.y:1564 { yyVAL.str = yyDollar[1].str } case 260: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1567 +//line sql.y:1568 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } case 261: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1571 +//line sql.y:1572 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } case 262: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1577 +//line sql.y:1578 { yyVAL.str = yyDollar[1].colIdent.String() } case 263: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1581 +//line sql.y:1582 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } case 264: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1585 +//line sql.y:1586 { yyVAL.str = string(yyDollar[1].bytes) } case 265: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1591 +//line sql.y:1592 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName} } case 266: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1595 +//line sql.y:1596 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName} } case 267: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1599 +//line sql.y:1600 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName} } case 268: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1603 +//line sql.y:1604 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[3].tableName}, ToTables: TableNames{yyDollar[6].tableName}} } case 269: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1608 +//line sql.y:1609 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName} } case 270: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1613 +//line sql.y:1614 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName.ToViewName()} } case 271: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1617 +//line sql.y:1618 { yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[3].tableName, PartitionSpec: yyDollar[4].partSpec} } case 272: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1621 +//line sql.y:1622 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() @@ -5711,7 +5743,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1628 +//line sql.y:1629 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() @@ -5720,7 +5752,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1635 +//line sql.y:1636 { yyVAL.statement = &DDL{ Action: CreateVindexDDLAction, @@ -5734,7 +5766,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1647 +//line sql.y:1648 { yyVAL.statement = &DDL{ Action: DropVindexDDLAction, @@ -5746,19 +5778,19 @@ yydefault: } case 276: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1657 +//line sql.y:1658 { yyVAL.statement = &DDL{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 277: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1661 +//line sql.y:1662 { yyVAL.statement = &DDL{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } case 278: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1665 +//line sql.y:1666 { yyVAL.statement = &DDL{ Action: AddColVindexDDLAction, @@ -5773,7 +5805,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1678 +//line sql.y:1679 { yyVAL.statement = &DDL{ Action: DropColVindexDDLAction, @@ -5785,13 +5817,13 @@ yydefault: } case 280: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1688 +//line sql.y:1689 { yyVAL.statement = &DDL{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } case 281: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:1692 +//line sql.y:1693 { yyVAL.statement = &DDL{ Action: AddAutoIncDDLAction, @@ -5804,49 +5836,49 @@ yydefault: } case 296: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1721 +//line sql.y:1722 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } case 297: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1727 +//line sql.y:1728 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } case 298: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1731 +//line sql.y:1732 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } case 299: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1737 +//line sql.y:1738 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } case 300: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1741 +//line sql.y:1742 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } case 301: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1747 +//line sql.y:1748 { yyVAL.statement = yyDollar[3].ddl } case 302: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1753 +//line sql.y:1754 { yyVAL.ddl = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } case 303: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1757 +//line sql.y:1758 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) @@ -5854,177 +5886,177 @@ yydefault: } case 304: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1765 +//line sql.y:1766 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } case 305: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1769 +//line sql.y:1770 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[5].tableName} } case 306: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1774 +//line sql.y:1775 { yyVAL.statement = &DDL{Action: DropDDLAction, FromTables: TableNames{yyDollar[4].tableName.ToViewName()}, IfExists: yyDollar[3].boolean} } case 307: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1778 +//line sql.y:1779 { yyVAL.statement = &DropDatabase{DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean} } case 308: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1784 +//line sql.y:1785 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[3].tableName} } case 309: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1788 +//line sql.y:1789 { yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[2].tableName} } case 310: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1793 +//line sql.y:1794 { yyVAL.statement = &OtherRead{} } case 311: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1799 +//line sql.y:1800 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 312: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1804 +//line sql.y:1805 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: CharsetStr, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 313: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1809 +//line sql.y:1810 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 314: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1814 +//line sql.y:1815 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 315: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1819 +//line sql.y:1820 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 316: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1823 +//line sql.y:1824 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 317: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1827 +//line sql.y:1828 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 318: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1831 +//line sql.y:1832 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 319: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1835 +//line sql.y:1836 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1839 +//line sql.y:1840 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1844 +//line sql.y:1845 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 322: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1849 +//line sql.y:1850 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 323: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1854 +//line sql.y:1855 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}} } case 324: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1859 +//line sql.y:1860 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 325: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1863 +//line sql.y:1864 { 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 326: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1868 +//line sql.y:1869 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 327: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1872 +//line sql.y:1873 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 328: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1876 +//line sql.y:1877 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } case 329: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1880 +//line sql.y:1881 { yyVAL.statement = &Show{&ShowTableStatus{DatabaseName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 330: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1884 +//line sql.y:1885 { yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].str, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } case 331: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1888 +//line sql.y:1889 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -6036,56 +6068,56 @@ yydefault: } case 332: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1898 +//line sql.y:1899 { yyVAL.statement = &Show{&ShowLegacy{Scope: yyDollar[2].scope, Type: string(yyDollar[3].bytes)}} } case 333: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1902 +//line sql.y:1903 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 334: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1906 +//line sql.y:1907 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: yyDollar[4].expr, Scope: ImplicitScope}} } case 335: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1910 +//line sql.y:1911 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}} } case 336: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1915 +//line sql.y:1916 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 337: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1919 +//line sql.y:1920 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}} } case 338: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1923 +//line sql.y:1924 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1927 +//line sql.y:1928 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}} } case 340: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1932 +//line sql.y:1933 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now @@ -6094,848 +6126,848 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1946 +//line sql.y:1947 { yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1952 +//line sql.y:1953 { yyVAL.str = string(yyDollar[1].bytes) } case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1956 +//line sql.y:1957 { yyVAL.str = string(yyDollar[1].bytes) } case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1962 +//line sql.y:1963 { yyVAL.str = string(yyDollar[1].bytes) } case 345: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1966 +//line sql.y:1967 { yyVAL.str = string(yyDollar[1].bytes) } case 346: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1972 +//line sql.y:1973 { yyVAL.str = "" } case 347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1976 +//line sql.y:1977 { yyVAL.str = "extended " } case 348: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1982 +//line sql.y:1983 { yyVAL.str = "" } case 349: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1986 +//line sql.y:1987 { yyVAL.str = "full " } case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1992 +//line sql.y:1993 { yyVAL.str = string(yyDollar[1].bytes) } case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1996 +//line sql.y:1997 { yyVAL.str = string(yyDollar[1].bytes) } case 352: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2002 +//line sql.y:2003 { yyVAL.str = "" } case 353: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2006 +//line sql.y:2007 { yyVAL.str = yyDollar[2].tableIdent.v } case 354: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2010 +//line sql.y:2011 { yyVAL.str = yyDollar[2].tableIdent.v } case 355: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2016 +//line sql.y:2017 { yyVAL.showFilter = nil } case 356: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2020 +//line sql.y:2021 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 357: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2024 +//line sql.y:2025 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 358: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2030 +//line sql.y:2031 { yyVAL.showFilter = nil } case 359: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2034 +//line sql.y:2035 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 360: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2040 +//line sql.y:2041 { yyVAL.scope = ImplicitScope } case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2044 +//line sql.y:2045 { yyVAL.scope = SessionScope } case 362: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2048 +//line sql.y:2049 { yyVAL.scope = GlobalScope } case 363: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2054 +//line sql.y:2055 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 364: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2058 +//line sql.y:2059 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2064 +//line sql.y:2065 { yyVAL.statement = &Begin{} } case 366: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2068 +//line sql.y:2069 { yyVAL.statement = &Begin{} } case 367: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2074 +//line sql.y:2075 { yyVAL.statement = &Commit{} } case 368: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2080 +//line sql.y:2081 { yyVAL.statement = &Rollback{} } case 369: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2084 +//line sql.y:2085 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } case 370: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2089 +//line sql.y:2090 { yyVAL.empty = struct{}{} } case 371: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2091 +//line sql.y:2092 { yyVAL.empty = struct{}{} } case 372: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2094 +//line sql.y:2095 { yyVAL.empty = struct{}{} } case 373: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2096 +//line sql.y:2097 { yyVAL.empty = struct{}{} } case 374: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2101 +//line sql.y:2102 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } case 375: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2107 +//line sql.y:2108 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } case 376: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2112 +//line sql.y:2113 { yyVAL.explainType = EmptyType } case 377: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2116 +//line sql.y:2117 { yyVAL.explainType = JSONType } case 378: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2120 +//line sql.y:2121 { yyVAL.explainType = TreeType } case 379: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2124 +//line sql.y:2125 { yyVAL.explainType = VitessType } case 380: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2128 +//line sql.y:2129 { yyVAL.explainType = TraditionalType } case 381: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2132 +//line sql.y:2133 { yyVAL.explainType = AnalyzeType } case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2138 +//line sql.y:2139 { yyVAL.bytes = yyDollar[1].bytes } case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2142 +//line sql.y:2143 { yyVAL.bytes = yyDollar[1].bytes } case 384: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2146 +//line sql.y:2147 { yyVAL.bytes = yyDollar[1].bytes } case 385: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2152 +//line sql.y:2153 { yyVAL.statement = yyDollar[1].selStmt } case 386: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2156 +//line sql.y:2157 { yyVAL.statement = yyDollar[1].statement } case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2160 +//line sql.y:2161 { yyVAL.statement = yyDollar[1].statement } case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2164 +//line sql.y:2165 { yyVAL.statement = yyDollar[1].statement } case 389: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2169 +//line sql.y:2170 { yyVAL.str = "" } case 390: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2173 +//line sql.y:2174 { yyVAL.str = "" } case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2177 +//line sql.y:2178 { yyVAL.str = "" } case 392: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2183 +//line sql.y:2184 { yyVAL.statement = &OtherRead{} } case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2187 +//line sql.y:2188 { yyVAL.statement = &Explain{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } case 394: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2193 +//line sql.y:2194 { yyVAL.statement = &OtherAdmin{} } case 395: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2197 +//line sql.y:2198 { yyVAL.statement = &OtherAdmin{} } case 396: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2203 +//line sql.y:2204 { yyVAL.statement = &LockTables{Tables: yyDollar[3].tableAndLockTypes} } case 397: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2209 +//line sql.y:2210 { yyVAL.tableAndLockTypes = TableAndLockTypes{yyDollar[1].tableAndLockType} } case 398: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2213 +//line sql.y:2214 { yyVAL.tableAndLockTypes = append(yyDollar[1].tableAndLockTypes, yyDollar[3].tableAndLockType) } case 399: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2219 +//line sql.y:2220 { yyVAL.tableAndLockType = &TableAndLockType{Table: yyDollar[1].aliasedTableName, Lock: yyDollar[2].lockType} } case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2225 +//line sql.y:2226 { yyVAL.lockType = Read } case 401: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2229 +//line sql.y:2230 { yyVAL.lockType = ReadLocal } case 402: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2233 +//line sql.y:2234 { yyVAL.lockType = Write } case 403: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2237 +//line sql.y:2238 { yyVAL.lockType = LowPriorityWrite } case 404: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2243 +//line sql.y:2244 { yyVAL.statement = &UnlockTables{} } case 405: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2249 +//line sql.y:2250 { yyVAL.statement = &DDL{Action: FlushDDLAction} } case 406: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2253 +//line sql.y:2254 { setAllowComments(yylex, true) } case 407: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2257 +//line sql.y:2258 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } case 408: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2263 +//line sql.y:2264 { yyVAL.bytes2 = nil } case 409: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2267 +//line sql.y:2268 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2273 +//line sql.y:2274 { yyVAL.boolean = true } case 411: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2277 +//line sql.y:2278 { yyVAL.boolean = false } case 412: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2281 +//line sql.y:2282 { yyVAL.boolean = true } case 413: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2286 +//line sql.y:2287 { yyVAL.str = "" } case 414: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2290 +//line sql.y:2291 { yyVAL.str = SQLNoCacheStr } case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2294 +//line sql.y:2295 { yyVAL.str = SQLCacheStr } case 416: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2299 +//line sql.y:2300 { yyVAL.boolean = false } case 417: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2303 +//line sql.y:2304 { yyVAL.boolean = true } case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2307 +//line sql.y:2308 { yyVAL.boolean = true } case 419: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2312 +//line sql.y:2313 { yyVAL.selectExprs = nil } case 420: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2316 +//line sql.y:2317 { yyVAL.selectExprs = yyDollar[1].selectExprs } case 421: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2321 +//line sql.y:2322 { yyVAL.strs = nil } case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2325 +//line sql.y:2326 { yyVAL.strs = []string{yyDollar[1].str} } case 423: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2329 +//line sql.y:2330 { // 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 424: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2333 +//line sql.y:2334 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } case 425: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2337 +//line sql.y:2338 { yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } case 426: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2343 +//line sql.y:2344 { yyVAL.str = SQLNoCacheStr } case 427: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2347 +//line sql.y:2348 { yyVAL.str = SQLCacheStr } case 428: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2351 +//line sql.y:2352 { yyVAL.str = DistinctStr } case 429: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2355 +//line sql.y:2356 { yyVAL.str = DistinctStr } case 430: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2359 +//line sql.y:2360 { yyVAL.str = StraightJoinHint } case 431: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2363 +//line sql.y:2364 { yyVAL.str = SQLCalcFoundRowsStr } case 432: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2369 +//line sql.y:2370 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 433: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2373 +//line sql.y:2374 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } case 434: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2379 +//line sql.y:2380 { yyVAL.selectExpr = &StarExpr{} } case 435: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2383 +//line sql.y:2384 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } case 436: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2387 +//line sql.y:2388 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } case 437: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2391 +//line sql.y:2392 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } case 438: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2396 +//line sql.y:2397 { yyVAL.colIdent = ColIdent{} } case 439: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2400 +//line sql.y:2401 { yyVAL.colIdent = yyDollar[1].colIdent } case 440: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2404 +//line sql.y:2405 { yyVAL.colIdent = yyDollar[2].colIdent } case 442: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2411 +//line sql.y:2412 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 443: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2416 +//line sql.y:2417 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } case 444: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2420 +//line sql.y:2421 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 445: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2426 +//line sql.y:2427 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 446: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2430 +//line sql.y:2431 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } case 449: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2440 +//line sql.y:2441 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } case 450: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2444 +//line sql.y:2445 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].derivedTable, As: yyDollar[3].tableIdent} } case 451: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2448 +//line sql.y:2449 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } case 452: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2454 +//line sql.y:2455 { yyVAL.derivedTable = &DerivedTable{yyDollar[2].selStmt} } case 453: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2460 +//line sql.y:2461 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } case 454: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2464 +//line sql.y:2465 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } case 455: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2470 +//line sql.y:2471 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 456: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2474 +//line sql.y:2475 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 457: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2480 +//line sql.y:2481 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } case 458: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2484 +//line sql.y:2485 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } case 459: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2497 +//line sql.y:2498 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 460: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2501 +//line sql.y:2502 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 461: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2505 +//line sql.y:2506 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 462: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2509 +//line sql.y:2510 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} } case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2515 +//line sql.y:2516 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 464: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2517 +//line sql.y:2518 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } case 465: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2521 +//line sql.y:2522 { yyVAL.joinCondition = JoinCondition{} } case 466: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2523 +//line sql.y:2524 { yyVAL.joinCondition = yyDollar[1].joinCondition } case 467: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2527 +//line sql.y:2528 { yyVAL.joinCondition = JoinCondition{} } case 468: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2529 +//line sql.y:2530 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 469: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2532 +//line sql.y:2533 { yyVAL.empty = struct{}{} } case 470: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2534 +//line sql.y:2535 { yyVAL.empty = struct{}{} } case 471: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2537 +//line sql.y:2538 { yyVAL.tableIdent = NewTableIdent("") } case 472: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2541 +//line sql.y:2542 { yyVAL.tableIdent = yyDollar[1].tableIdent } case 473: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2545 +//line sql.y:2546 { yyVAL.tableIdent = yyDollar[2].tableIdent } case 475: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2552 +//line sql.y:2553 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 476: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2558 +//line sql.y:2559 { yyVAL.joinType = NormalJoinType } case 477: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2562 +//line sql.y:2563 { yyVAL.joinType = NormalJoinType } case 478: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2566 +//line sql.y:2567 { yyVAL.joinType = NormalJoinType } case 479: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2572 +//line sql.y:2573 { yyVAL.joinType = StraightJoinType } case 480: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2578 +//line sql.y:2579 { yyVAL.joinType = LeftJoinType } case 481: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2582 +//line sql.y:2583 { yyVAL.joinType = LeftJoinType } case 482: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2586 +//line sql.y:2587 { yyVAL.joinType = RightJoinType } case 483: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2590 +//line sql.y:2591 { yyVAL.joinType = RightJoinType } case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2596 +//line sql.y:2597 { yyVAL.joinType = NaturalJoinType } case 485: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2600 +//line sql.y:2601 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -6945,487 +6977,487 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2610 +//line sql.y:2611 { yyVAL.tableName = yyDollar[2].tableName } case 487: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2614 +//line sql.y:2615 { yyVAL.tableName = yyDollar[1].tableName } case 488: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2620 +//line sql.y:2621 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 489: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2624 +//line sql.y:2625 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } case 490: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2630 +//line sql.y:2631 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 491: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2635 +//line sql.y:2636 { yyVAL.indexHints = nil } case 492: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2639 +//line sql.y:2640 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } case 493: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2643 +//line sql.y:2644 { yyVAL.indexHints = &IndexHints{Type: UseOp} } case 494: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2647 +//line sql.y:2648 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } case 495: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2651 +//line sql.y:2652 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } case 496: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2656 +//line sql.y:2657 { yyVAL.expr = nil } case 497: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2660 +//line sql.y:2661 { yyVAL.expr = yyDollar[2].expr } case 498: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2666 +//line sql.y:2667 { yyVAL.expr = yyDollar[1].expr } case 499: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2670 +//line sql.y:2671 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 500: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2674 +//line sql.y:2675 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 501: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2678 +//line sql.y:2679 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 502: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2682 +//line sql.y:2683 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } case 503: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2686 +//line sql.y:2687 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } case 504: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2690 +//line sql.y:2691 { yyVAL.expr = yyDollar[1].expr } case 505: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2694 +//line sql.y:2695 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } case 506: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2700 +//line sql.y:2701 { yyVAL.str = "" } case 507: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2704 +//line sql.y:2705 { yyVAL.str = string(yyDollar[2].colIdent.String()) } case 508: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2710 +//line sql.y:2711 { yyVAL.boolVal = BoolVal(true) } case 509: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2714 +//line sql.y:2715 { yyVAL.boolVal = BoolVal(false) } case 510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2720 +//line sql.y:2721 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } case 511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2724 +//line sql.y:2725 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } case 512: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2728 +//line sql.y:2729 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } case 513: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2732 +//line sql.y:2733 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } case 514: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2736 +//line sql.y:2737 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } case 515: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2740 +//line sql.y:2741 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } case 516: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2744 +//line sql.y:2745 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } case 517: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2748 +//line sql.y:2749 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } case 518: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2752 +//line sql.y:2753 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2756 +//line sql.y:2757 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 520: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2762 +//line sql.y:2763 { yyVAL.isExprOperator = IsNullOp } case 521: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2766 +//line sql.y:2767 { yyVAL.isExprOperator = IsNotNullOp } case 522: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2770 +//line sql.y:2771 { yyVAL.isExprOperator = IsTrueOp } case 523: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2774 +//line sql.y:2775 { yyVAL.isExprOperator = IsNotTrueOp } case 524: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2778 +//line sql.y:2779 { yyVAL.isExprOperator = IsFalseOp } case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2782 +//line sql.y:2783 { yyVAL.isExprOperator = IsNotFalseOp } case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2788 +//line sql.y:2789 { yyVAL.comparisonExprOperator = EqualOp } case 527: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2792 +//line sql.y:2793 { yyVAL.comparisonExprOperator = LessThanOp } case 528: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2796 +//line sql.y:2797 { yyVAL.comparisonExprOperator = GreaterThanOp } case 529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2800 +//line sql.y:2801 { yyVAL.comparisonExprOperator = LessEqualOp } case 530: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2804 +//line sql.y:2805 { yyVAL.comparisonExprOperator = GreaterEqualOp } case 531: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2808 +//line sql.y:2809 { yyVAL.comparisonExprOperator = NotEqualOp } case 532: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2812 +//line sql.y:2813 { yyVAL.comparisonExprOperator = NullSafeEqualOp } case 533: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2817 +//line sql.y:2818 { yyVAL.expr = nil } case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2821 +//line sql.y:2822 { yyVAL.expr = yyDollar[2].expr } case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2827 +//line sql.y:2828 { yyVAL.colTuple = yyDollar[1].valTuple } case 536: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2831 +//line sql.y:2832 { yyVAL.colTuple = yyDollar[1].subquery } case 537: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2835 +//line sql.y:2836 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 538: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2841 +//line sql.y:2842 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 539: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2847 +//line sql.y:2848 { yyVAL.exprs = Exprs{yyDollar[1].expr} } case 540: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2851 +//line sql.y:2852 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2857 +//line sql.y:2858 { yyVAL.expr = yyDollar[1].expr } case 542: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2861 +//line sql.y:2862 { yyVAL.expr = yyDollar[1].boolVal } case 543: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2865 +//line sql.y:2866 { yyVAL.expr = yyDollar[1].colName } case 544: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2869 +//line sql.y:2870 { yyVAL.expr = yyDollar[1].expr } case 545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2873 +//line sql.y:2874 { yyVAL.expr = yyDollar[1].subquery } case 546: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2877 +//line sql.y:2878 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } case 547: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2881 +//line sql.y:2882 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } case 548: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2885 +//line sql.y:2886 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } case 549: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2889 +//line sql.y:2890 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } case 550: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2893 +//line sql.y:2894 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } case 551: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2897 +//line sql.y:2898 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } case 552: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2901 +//line sql.y:2902 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } case 553: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2905 +//line sql.y:2906 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } case 554: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2909 +//line sql.y:2910 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 555: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2913 +//line sql.y:2914 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 556: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2917 +//line sql.y:2918 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } case 557: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2921 +//line sql.y:2922 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } case 558: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2925 +//line sql.y:2926 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 559: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2929 +//line sql.y:2930 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 560: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2933 +//line sql.y:2934 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 561: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2937 +//line sql.y:2938 { yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2941 +//line sql.y:2942 { yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2945 +//line sql.y:2946 { yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } case 564: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2949 +//line sql.y:2950 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2953 +//line sql.y:2954 { yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } case 566: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2957 +//line sql.y:2958 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { yyVAL.expr = num @@ -7435,7 +7467,7 @@ yydefault: } case 567: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2965 +//line sql.y:2966 { if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal { // Handle double negative @@ -7451,19 +7483,19 @@ yydefault: } case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2979 +//line sql.y:2980 { yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2983 +//line sql.y:2984 { yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} } case 570: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2987 +//line sql.y:2988 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -7473,325 +7505,325 @@ yydefault: } case 575: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3005 +//line sql.y:3006 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 576: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3009 +//line sql.y:3010 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 577: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3013 +//line sql.y:3014 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 578: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3017 +//line sql.y:3018 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 579: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3027 +//line sql.y:3028 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 580: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3031 +//line sql.y:3032 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 581: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3035 +//line sql.y:3036 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 582: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3039 +//line sql.y:3040 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 583: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3043 +//line sql.y:3044 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 584: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3047 +//line sql.y:3048 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 585: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3051 +//line sql.y:3052 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 586: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3055 +//line sql.y:3056 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 587: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3059 +//line sql.y:3060 { yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 588: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3063 +//line sql.y:3064 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } case 589: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3067 +//line sql.y:3068 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } case 590: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3071 +//line sql.y:3072 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 591: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3075 +//line sql.y:3076 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 592: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3085 +//line sql.y:3086 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 593: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3089 +//line sql.y:3090 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 594: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3093 +//line sql.y:3094 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 595: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3098 +//line sql.y:3099 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 596: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3103 +//line sql.y:3104 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 597: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3108 +//line sql.y:3109 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 598: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3114 +//line sql.y:3115 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 599: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3119 +//line sql.y:3120 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 600: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3124 +//line sql.y:3125 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 601: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3128 +//line sql.y:3129 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 602: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3132 +//line sql.y:3133 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 603: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3137 +//line sql.y:3138 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 604: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3142 +//line sql.y:3143 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 605: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3147 +//line sql.y:3148 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 606: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3151 +//line sql.y:3152 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 607: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3155 +//line sql.y:3156 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 610: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3165 +//line sql.y:3166 { yyVAL.expr = yyDollar[2].expr } case 611: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3175 +//line sql.y:3176 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 612: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3179 +//line sql.y:3180 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 613: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3183 +//line sql.y:3184 { yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 614: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3187 +//line sql.y:3188 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 615: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3191 +//line sql.y:3192 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 616: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3195 +//line sql.y:3196 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 617: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3199 +//line sql.y:3200 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 618: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3205 +//line sql.y:3206 { yyVAL.matchExprOption = NoOption } case 619: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3209 +//line sql.y:3210 { yyVAL.matchExprOption = BooleanModeOpt } case 620: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3213 +//line sql.y:3214 { yyVAL.matchExprOption = NaturalLanguageModeOpt } case 621: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3217 +//line sql.y:3218 { yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } case 622: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3221 +//line sql.y:3222 { yyVAL.matchExprOption = QueryExpansionOpt } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3227 +//line sql.y:3228 { yyVAL.str = string(yyDollar[1].colIdent.String()) } case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3231 +//line sql.y:3232 { yyVAL.str = string(yyDollar[1].bytes) } case 625: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3237 +//line sql.y:3238 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 626: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3241 +//line sql.y:3242 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } case 627: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3245 +//line sql.y:3246 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3249 +//line sql.y:3250 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 629: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3253 +//line sql.y:3254 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 630: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3257 +//line sql.y:3258 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length @@ -7799,169 +7831,169 @@ yydefault: } case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3263 +//line sql.y:3264 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 632: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3267 +//line sql.y:3268 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 633: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3271 +//line sql.y:3272 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 634: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3275 +//line sql.y:3276 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 635: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3279 +//line sql.y:3280 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal} } case 636: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3283 +//line sql.y:3284 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 637: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3287 +//line sql.y:3288 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 638: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3292 +//line sql.y:3293 { yyVAL.expr = nil } case 639: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3296 +//line sql.y:3297 { yyVAL.expr = yyDollar[1].expr } case 640: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3301 +//line sql.y:3302 { yyVAL.str = string("") } case 641: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3305 +//line sql.y:3306 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } case 642: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3311 +//line sql.y:3312 { yyVAL.whens = []*When{yyDollar[1].when} } case 643: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3315 +//line sql.y:3316 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } case 644: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3321 +//line sql.y:3322 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } case 645: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3326 +//line sql.y:3327 { yyVAL.expr = nil } case 646: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3330 +//line sql.y:3331 { yyVAL.expr = yyDollar[2].expr } case 647: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3336 +//line sql.y:3337 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } case 648: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3340 +//line sql.y:3341 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } case 649: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3344 +//line sql.y:3345 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } case 650: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3350 +//line sql.y:3351 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 651: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3354 +//line sql.y:3355 { yyVAL.expr = NewHexLiteral(yyDollar[1].bytes) } case 652: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3358 +//line sql.y:3359 { yyVAL.expr = NewBitLiteral(yyDollar[1].bytes) } case 653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3362 +//line sql.y:3363 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 654: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3366 +//line sql.y:3367 { yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes) } case 655: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3370 +//line sql.y:3371 { yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes) } case 656: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3374 +//line sql.y:3375 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 657: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3378 +//line sql.y:3379 { yyVAL.expr = &NullVal{} } case 658: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3384 +//line sql.y:3385 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -7972,481 +8004,481 @@ yydefault: } case 659: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3393 +//line sql.y:3394 { yyVAL.expr = NewIntLiteral(yyDollar[1].bytes) } case 660: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3397 +//line sql.y:3398 { yyVAL.expr = NewArgument(yyDollar[1].bytes) } case 661: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3402 +//line sql.y:3403 { yyVAL.exprs = nil } case 662: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3406 +//line sql.y:3407 { yyVAL.exprs = yyDollar[3].exprs } case 663: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3411 +//line sql.y:3412 { yyVAL.expr = nil } case 664: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3415 +//line sql.y:3416 { yyVAL.expr = yyDollar[2].expr } case 665: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3420 +//line sql.y:3421 { yyVAL.orderBy = nil } case 666: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3424 +//line sql.y:3425 { yyVAL.orderBy = yyDollar[3].orderBy } case 667: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3430 +//line sql.y:3431 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } case 668: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3434 +//line sql.y:3435 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } case 669: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3440 +//line sql.y:3441 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } case 670: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3445 +//line sql.y:3446 { yyVAL.orderDirection = AscOrder } case 671: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3449 +//line sql.y:3450 { yyVAL.orderDirection = AscOrder } case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3453 +//line sql.y:3454 { yyVAL.orderDirection = DescOrder } case 673: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3458 +//line sql.y:3459 { yyVAL.limit = nil } case 674: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3462 +//line sql.y:3463 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } case 675: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3466 +//line sql.y:3467 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } case 676: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3470 +//line sql.y:3471 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } case 677: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3475 +//line sql.y:3476 { yyVAL.indexOptions = nil } case 678: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3479 +//line sql.y:3480 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption} } case 679: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3483 +//line sql.y:3484 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption} } case 680: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3487 +//line sql.y:3488 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 681: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3491 +//line sql.y:3492 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 682: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3498 +//line sql.y:3499 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 683: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3502 +//line sql.y:3503 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 684: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3506 +//line sql.y:3507 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 685: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3510 +//line sql.y:3511 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 686: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3516 +//line sql.y:3517 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 687: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3520 +//line sql.y:3521 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 688: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3524 +//line sql.y:3525 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)} } case 689: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3529 +//line sql.y:3530 { yyVAL.lock = NoLock } case 690: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3533 +//line sql.y:3534 { yyVAL.lock = ForUpdateLock } case 691: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3537 +//line sql.y:3538 { yyVAL.lock = ShareModeLock } case 692: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3542 +//line sql.y:3543 { yyVAL.selectInto = nil } case 693: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3546 +//line sql.y:3547 { 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 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3550 +//line sql.y:3551 { yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } case 695: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3554 +//line sql.y:3555 { yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } case 696: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3559 +//line sql.y:3560 { yyVAL.str = "" } case 697: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3563 +//line sql.y:3564 { yyVAL.str = " format csv" + yyDollar[3].str } case 698: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3567 +//line sql.y:3568 { yyVAL.str = " format text" + yyDollar[3].str } case 699: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3572 +//line sql.y:3573 { yyVAL.str = "" } case 700: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3576 +//line sql.y:3577 { yyVAL.str = " header" } case 701: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3581 +//line sql.y:3582 { yyVAL.str = "" } case 702: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3585 +//line sql.y:3586 { yyVAL.str = " manifest on" } case 703: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3589 +//line sql.y:3590 { yyVAL.str = " manifest off" } case 704: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3594 +//line sql.y:3595 { yyVAL.str = "" } case 705: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3598 +//line sql.y:3599 { yyVAL.str = " overwrite on" } case 706: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3602 +//line sql.y:3603 { yyVAL.str = " overwrite off" } case 707: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3608 +//line sql.y:3609 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } case 708: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3613 +//line sql.y:3614 { yyVAL.str = "" } case 709: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3617 +//line sql.y:3618 { yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str } case 710: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3622 +//line sql.y:3623 { yyVAL.str = "" } case 711: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3626 +//line sql.y:3627 { yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'" } case 712: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3631 +//line sql.y:3632 { yyVAL.str = "" } case 713: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3635 +//line sql.y:3636 { yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'" } case 714: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3640 +//line sql.y:3641 { yyVAL.str = "" } case 715: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3644 +//line sql.y:3645 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str } case 716: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3649 +//line sql.y:3650 { yyVAL.str = "" } case 717: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3653 +//line sql.y:3654 { yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'" } case 718: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3658 +//line sql.y:3659 { yyVAL.str = "" } case 719: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3662 +//line sql.y:3663 { yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'" } case 720: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3667 +//line sql.y:3668 { yyVAL.str = "" } case 721: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3671 +//line sql.y:3672 { yyVAL.str = " optionally" } case 722: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3684 +//line sql.y:3685 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } case 723: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3688 +//line sql.y:3689 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } case 724: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3692 +//line sql.y:3693 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } case 725: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3696 +//line sql.y:3697 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } case 726: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3700 +//line sql.y:3701 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } case 727: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3706 +//line sql.y:3707 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 728: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3710 +//line sql.y:3711 { yyVAL.columns = Columns{yyDollar[3].colIdent} } case 729: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3714 +//line sql.y:3715 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 730: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3718 +//line sql.y:3719 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } case 731: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3723 +//line sql.y:3724 { yyVAL.updateExprs = nil } case 732: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3727 +//line sql.y:3728 { yyVAL.updateExprs = yyDollar[5].updateExprs } case 733: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3733 +//line sql.y:3734 { yyVAL.values = Values{yyDollar[1].valTuple} } case 734: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3737 +//line sql.y:3738 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } case 735: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3743 +//line sql.y:3744 { yyVAL.valTuple = yyDollar[1].valTuple } case 736: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3747 +//line sql.y:3748 { yyVAL.valTuple = ValTuple{} } case 737: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3753 +//line sql.y:3754 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } case 738: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3759 +//line sql.y:3760 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -8456,264 +8488,264 @@ yydefault: } case 739: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3769 +//line sql.y:3770 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } case 740: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3773 +//line sql.y:3774 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } case 741: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3779 +//line sql.y:3780 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } case 742: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3785 +//line sql.y:3786 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 743: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3789 +//line sql.y:3790 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } case 744: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3795 +//line sql.y:3796 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))} } case 745: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3799 +//line sql.y:3800 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))} } case 746: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3803 +//line sql.y:3804 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } case 747: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3807 +//line sql.y:3808 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } case 748: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3811 +//line sql.y:3812 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } case 750: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3819 +//line sql.y:3820 { yyVAL.bytes = []byte("charset") } case 752: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3826 +//line sql.y:3827 { yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String())) } case 753: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3830 +//line sql.y:3831 { yyVAL.expr = NewStrLiteral(yyDollar[1].bytes) } case 754: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3834 +//line sql.y:3835 { yyVAL.expr = &Default{} } case 757: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3843 +//line sql.y:3844 { yyVAL.boolean = false } case 758: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3845 +//line sql.y:3846 { yyVAL.boolean = true } case 759: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3848 +//line sql.y:3849 { yyVAL.boolean = false } case 760: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3850 +//line sql.y:3851 { yyVAL.boolean = true } case 761: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3853 +//line sql.y:3854 { yyVAL.ignore = false } case 762: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3855 +//line sql.y:3856 { yyVAL.ignore = true } case 763: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3859 +//line sql.y:3860 { yyVAL.empty = struct{}{} } case 764: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3861 +//line sql.y:3862 { yyVAL.empty = struct{}{} } case 765: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3863 +//line sql.y:3864 { yyVAL.empty = struct{}{} } case 766: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3865 +//line sql.y:3866 { yyVAL.empty = struct{}{} } case 767: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3867 +//line sql.y:3868 { yyVAL.empty = struct{}{} } case 768: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3869 +//line sql.y:3870 { yyVAL.empty = struct{}{} } case 769: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3871 +//line sql.y:3872 { yyVAL.empty = struct{}{} } case 770: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3873 +//line sql.y:3874 { yyVAL.empty = struct{}{} } case 771: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3875 +//line sql.y:3876 { yyVAL.empty = struct{}{} } case 772: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3877 +//line sql.y:3878 { yyVAL.empty = struct{}{} } case 773: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3881 +//line sql.y:3882 { yyVAL.empty = struct{}{} } case 774: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3883 +//line sql.y:3884 { yyVAL.empty = struct{}{} } case 775: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3885 +//line sql.y:3886 { yyVAL.empty = struct{}{} } case 776: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3889 +//line sql.y:3890 { yyVAL.empty = struct{}{} } case 777: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3891 +//line sql.y:3892 { yyVAL.empty = struct{}{} } case 778: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3894 +//line sql.y:3895 { yyVAL.str = "" } case 779: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3896 +//line sql.y:3897 { yyVAL.str = string(yyDollar[1].bytes) } case 780: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3898 +//line sql.y:3899 { yyVAL.str = string(yyDollar[1].bytes) } case 781: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3900 +//line sql.y:3901 { yyVAL.str = string(yyDollar[1].bytes) } case 782: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3903 +//line sql.y:3904 { - yyVAL.str = "" + yyVAL.indexOptions = nil } case 783: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3905 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3906 { - yyVAL.str = yyDollar[2].colIdent.val + yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 784: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3909 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3910 { - yyVAL.colIdent = yyDollar[1].colIdent + yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())} } case 785: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3913 +//line sql.y:3916 { - yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + yyVAL.colIdent = yyDollar[1].colIdent } - case 787: + case 786: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3920 { @@ -8721,58 +8753,64 @@ yydefault: } case 788: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3926 +//line sql.y:3927 { - yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) + yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 789: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3930 +//line sql.y:3933 { - yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) + yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 791: + case 790: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3937 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 1118: + case 792: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3944 + { + yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) + } + case 1119: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4289 +//line sql.y:4296 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1119: + case 1120: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4298 +//line sql.y:4305 { decNesting(yylex) } - case 1120: + case 1121: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4303 +//line sql.y:4310 { skipToEnd(yylex) } - case 1121: + case 1122: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4308 +//line sql.y:4315 { skipToEnd(yylex) } - case 1122: + case 1123: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4312 +//line sql.y:4319 { skipToEnd(yylex) } - case 1123: + case 1124: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4316 +//line sql.y:4323 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 0048aedee78..068b9b9f528 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -311,7 +311,7 @@ func skipToEnd(yylex interface{}) { %type limit_opt %type into_option %type header_opt export_options manifest_opt overwrite_opt format_opt optionally_opt -%type fields_opt lines_opt terminated_by_opt starting_by_opt enclosed_by_opt escaped_by_opt constraint_opt using_opt +%type fields_opt lines_opt terminated_by_opt starting_by_opt enclosed_by_opt escaped_by_opt constraint_opt %type lock_opt %type ins_column_list column_list %type opt_partition_clause partition_list @@ -361,8 +361,8 @@ func skipToEnd(yylex interface{}) { %type index_info %type index_column %type index_column_list -%type index_option lock_index algorithm_index -%type index_option_list index_option_list_opt algorithm_lock_opt +%type index_option lock_index algorithm_index using_index_type +%type index_option_list index_option_list_opt algorithm_lock_opt using_opt %type constraint_info check_constraint_info %type partition_definitions %type partition_definition @@ -725,7 +725,8 @@ create_statement: | create_index_prefix '(' index_column_list ')' index_option_list_opt algorithm_lock_opt { $1.Columns = $3 - $1.Options = append($5,$6...) + $1.Options = append($1.Options,$5...) + $1.Options = append($1.Options,$6...) $1.FullyParsed = true $$ = $1 } @@ -796,7 +797,7 @@ create_table_prefix: create_index_prefix: CREATE constraint_opt INDEX id_or_var using_opt ON table_name { - $$ = &CreateIndex{Constraint: $2, Name: $4, IndexType: $5, Table: $7} + $$ = &CreateIndex{Constraint: $2, Name: $4, Options: $5, Table: $7} setDDL(yylex, $$) } @@ -1334,9 +1335,9 @@ index_option_list: } index_option: - USING id_or_var + using_index_type { - $$ = &IndexOption{Name: string($1), String: string($2.String())} + $$ = $1 } | KEY_BLOCK_SIZE equal_opt INTEGRAL { @@ -1347,9 +1348,9 @@ index_option: { $$ = &IndexOption{Name: string($1), Value: NewStrLiteral($2)} } -| WITH PARSER STRING +| WITH PARSER id_or_var { - $$ = &IndexOption{Name: string($1) + " " + string($2), Value: NewStrLiteral($3)} + $$ = &IndexOption{Name: string($1) + " " + string($2), String: $3.String()} } equal_opt: @@ -3900,9 +3901,15 @@ constraint_opt: { $$ = string($1) } using_opt: - { $$ = "" } -| USING sql_id - { $$ = $2.val } + { $$ = nil } +| using_index_type + { $$ = []*IndexOption{$1} } + +using_index_type: + USING sql_id + { + $$ = &IndexOption{Name: string($1), String: string($2.String())} + } sql_id: id_or_var From fb7af1b02ca9a5e4e95f394ff1afd8d068b869eb Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 09:40:57 +0200 Subject: [PATCH 03/10] fix parser_test unit test Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/schema/parser_test.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/go/vt/schema/parser_test.go b/go/vt/schema/parser_test.go index 2326a8f46ec..7255d198bde 100644 --- a/go/vt/schema/parser_test.go +++ b/go/vt/schema/parser_test.go @@ -64,22 +64,24 @@ func TestNormalizeOnlineDDL(t *testing.T) { "create index i_idx on t(name(12))": {sqls: []string{"alter table t add index i_idx (`name`(12))"}}, "create index i_idx on t(id, `ts`, name(12))": {sqls: []string{"alter table t add index i_idx (id, ts, `name`(12))"}}, "create unique index i_idx on t(id)": {sqls: []string{"alter table t add unique index i_idx (id)"}}, - "create index i_idx using btree on t(id)": {sqls: []string{"alter table t add index i_idx using btree (id)"}}, + "create index i_idx using btree on t(id)": {sqls: []string{"alter table t add index i_idx (id) using btree"}}, "create index with syntax error i_idx on t(id)": {isError: true}, "select * from t": {isError: true}, "drop database t": {isError: true}, } for query, expect := range tests { - normalized, err := NormalizeOnlineDDL(query) - if expect.isError { - assert.Error(t, err) - } else { - assert.NoError(t, err) - sqls := []string{} - for _, n := range normalized { - sqls = append(sqls, n.SQL) + t.Run(query, func(t *testing.T) { + normalized, err := NormalizeOnlineDDL(query) + if expect.isError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + sqls := []string{} + for _, n := range normalized { + sqls = append(sqls, n.SQL) + } + assert.Equal(t, expect.sqls, sqls) } - assert.Equal(t, expect.sqls, sqls) - } + }) } } From 226cd4a21007c669d531d86be93e756c7309bb26 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 09:42:17 +0200 Subject: [PATCH 04/10] fix planbuilder unit test Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt index 579fbdca5ce..900c93c79cd 100644 --- a/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt +++ b/go/vt/vttablet/tabletserver/planbuilder/testdata/exec_cases.txt @@ -652,7 +652,7 @@ options:PassthroughDMLs "Role": 2 } ], - "FullQuery":"create index a on b (id)" + "FullQuery":"alter table b add index a (id)" } From b057ece1bf384817fc782da1b43a7b61832c6d25 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 10:49:22 +0200 Subject: [PATCH 05/10] use IsFullyParsed() generically Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/schema/parser.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/go/vt/schema/parser.go b/go/vt/schema/parser.go index 5c735a1216f..28631c3d573 100644 --- a/go/vt/schema/parser.go +++ b/go/vt/schema/parser.go @@ -80,13 +80,6 @@ func NormalizeOnlineDDL(sql string) (normalized []*NormalizedDDLQuery, err error return normalized, err } switch action { - case sqlparser.AlterDDLAction: - switch ddlStmt.(type) { - case *sqlparser.CreateIndex: - if ddlStmt.IsFullyParsed() { - sql = sqlparser.String(ddlStmt) - } - } case sqlparser.DropDDLAction: tables := ddlStmt.GetFromTables() for _, table := range tables { @@ -95,6 +88,9 @@ func NormalizeOnlineDDL(sql string) (normalized []*NormalizedDDLQuery, err error } return normalized, nil } + if ddlStmt.IsFullyParsed() { + sql = sqlparser.String(ddlStmt) + } n := &NormalizedDDLQuery{SQL: sql, TableName: ddlStmt.GetTable()} return []*NormalizedDDLQuery{n}, nil } From afd803ec2468d72e87ce56a0d216140f2d2d5329 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 10:52:48 +0200 Subject: [PATCH 06/10] fix ddl_cases case test Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtgate/planbuilder/testdata/ddl_cases.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt index 1e0eced9f63..e861fbb0ecf 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt @@ -140,7 +140,7 @@ "Name": "user", "Sharded": true }, - "Query": "create index a on user (id)" + "Query": "alter table user add index a (id)" } } From 13d37b9efd43593c7dfa7a1263845d359dbd502d Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 10:57:16 +0200 Subject: [PATCH 07/10] fix ddl_cases case test Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vtgate/planbuilder/testdata/ddl_cases.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt index e861fbb0ecf..ec1c5626b51 100644 --- a/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/ddl_cases.txt @@ -155,7 +155,7 @@ "Name": "user", "Sharded": true }, - "Query": "create index a on user (id)" + "Query": "alter table user add index a (id)" } } @@ -170,6 +170,6 @@ "Name": "main", "Sharded": false }, - "Query": "create index a on unknown (id)" + "Query": "alter table unknown add index a (id)" } } From b9af9589e1a384808e870bcad372543087f2ac9b Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 10:59:36 +0200 Subject: [PATCH 08/10] fixed query executor tests Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/vttablet/tabletserver/query_executor_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/go/vt/vttablet/tabletserver/query_executor_test.go b/go/vt/vttablet/tabletserver/query_executor_test.go index 2cf8abbe7fe..292d9493987 100644 --- a/go/vt/vttablet/tabletserver/query_executor_test.go +++ b/go/vt/vttablet/tabletserver/query_executor_test.go @@ -222,13 +222,13 @@ func TestQueryExecutorPlans(t *testing.T) { }, { input: "create index a on user(id)", dbResponses: []dbResponse{{ - query: "create index a on user (id)", + query: "alter table user add index a (id)", result: emptyResult, }}, resultWant: emptyResult, planWant: "DDL", - logWant: "create index a on user (id)", - inTxWant: "create index a on user (id)", + logWant: "alter table user add index a (id)", + inTxWant: "alter table user add index a (id)", }, { input: "create index a on user(id1 + id2)", dbResponses: []dbResponse{{ From fbf2b6014aaf2f5189eb1054b602cc1326472337 Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 11:15:36 +0200 Subject: [PATCH 09/10] fixed parser test Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/schema/parser_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/go/vt/schema/parser_test.go b/go/vt/schema/parser_test.go index 7255d198bde..db153c3a996 100644 --- a/go/vt/schema/parser_test.go +++ b/go/vt/schema/parser_test.go @@ -17,6 +17,7 @@ limitations under the License. package schema import ( + "strings" "testing" "github.com/stretchr/testify/assert" @@ -55,7 +56,7 @@ func TestNormalizeOnlineDDL(t *testing.T) { } tests := map[string]expect{ "alter table t add column i int, drop column d": {sqls: []string{"alter table t add column i int, drop column d"}}, - "create table t(id int primary key)": {sqls: []string{"create table t(id int primary key)"}}, + "create table t (id int primary key)": {sqls: []string{"create table t (id int primary key)"}}, "drop table t": {sqls: []string{"drop table t"}}, "drop table if exists t": {sqls: []string{"drop table if exists t"}}, "drop table t1, t2, t3": {sqls: []string{"drop table t1", "drop table t2", "drop table t3"}}, @@ -78,7 +79,10 @@ func TestNormalizeOnlineDDL(t *testing.T) { assert.NoError(t, err) sqls := []string{} for _, n := range normalized { - sqls = append(sqls, n.SQL) + sql := n.SQL + sql = strings.ReplaceAll(sql, "\n", "") + sql = strings.ReplaceAll(sql, "\t", "") + sqls = append(sqls, sql) } assert.Equal(t, expect.sqls, sqls) } From 775bbcf4369d14930e15e8d4b867afca20a1364a Mon Sep 17 00:00:00 2001 From: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> Date: Sun, 13 Dec 2020 11:15:59 +0200 Subject: [PATCH 10/10] refactor executeSQL() for single query execution Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com> --- go/vt/schemamanager/tablet_executor.go | 48 +++++++++++++++----------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/go/vt/schemamanager/tablet_executor.go b/go/vt/schemamanager/tablet_executor.go index 4a7e8805ccf..ca2adde98e2 100644 --- a/go/vt/schemamanager/tablet_executor.go +++ b/go/vt/schemamanager/tablet_executor.go @@ -211,6 +211,31 @@ func (exec *TabletExecutor) preflightSchemaChanges(ctx context.Context, sqls []s return err } +// executeSQL executes a single SQL statement either as online DDL or synchronously on all tablets. +// In online DDL case, the query may be exploded into multiple queries during +func (exec *TabletExecutor) executeSQL(ctx context.Context, sql string, execResult *ExecuteResult) error { + stat, err := sqlparser.Parse(sql) + if err != nil { + return err + } + switch ddl := stat.(type) { + case sqlparser.DDLStatement: + if isOnlineDDL, strategy, options := exec.isOnlineSchemaDDL(ddl); isOnlineDDL { + exec.wr.Logger().Infof("Received online DDL request. strategy=%+v", strategy) + normalizedQueries, err := schema.NormalizeOnlineDDL(sql) + if err != nil { + return err + } + for _, normalized := range normalizedQueries { + exec.executeOnlineDDL(ctx, execResult, normalized.SQL, normalized.TableName.Name.String(), strategy, options) + } + return nil + } + } + exec.executeOnAllTablets(ctx, execResult, sql) + return nil +} + // Execute applies schema changes func (exec *TabletExecutor) Execute(ctx context.Context, sqls []string) *ExecuteResult { execResult := ExecuteResult{} @@ -247,30 +272,11 @@ func (exec *TabletExecutor) Execute(ctx context.Context, sqls []string) *Execute for index, sql := range sqls { execResult.CurSQLIndex = index - - stat, err := sqlparser.Parse(sql) - if err != nil { + if err := exec.executeSQL(ctx, sql, &execResult); err != nil { execResult.ExecutorErr = err.Error() return &execResult } - isOnlineDDL, strategy, options := exec.isOnlineSchemaDDL(nil) - switch ddl := stat.(type) { - case sqlparser.DDLStatement: - isOnlineDDL, strategy, options = exec.isOnlineSchemaDDL(ddl) - } - exec.wr.Logger().Infof("Received DDL request. strategy=%+v", strategy) - if isOnlineDDL { - normalizedQueries, err := schema.NormalizeOnlineDDL(sql) - if err != nil { - execResult.ExecutorErr = err.Error() - return &execResult - } - for _, normalized := range normalizedQueries { - exec.executeOnlineDDL(ctx, &execResult, normalized.SQL, normalized.TableName.Name.String(), strategy, options) - } - } else { - exec.executeOnAllTablets(ctx, &execResult, sql) - } + if len(execResult.FailedShards) > 0 { break }